exponenta event banner

Класс «Линейный»

Линейная модель для двоичной классификации высокоразмерных данных

Описание

ClassificationLinear является обученным объектом линейной модели для двоичной классификации; линейная модель представляет собой вспомогательную векторную машину (SVM) или модель логистической регрессии. fitclinear подходит под ClassificationLinear модель путем минимизации целевой функции с использованием методов, которые сокращают время вычисления для высокоразмерных наборов данных (например, стохастический градиентный спуск). Классификационные потери плюс термин регуляризации составляют целевую функцию.

В отличие от других классификационных моделей, и для экономичного использования памяти, ClassificationLinear объекты модели не хранят учебные данные. Однако они сохраняют, например, оцененные коэффициенты линейной модели, вероятности предшествующего класса и силу регуляризации.

Вы можете использовать обученные ClassificationLinear модели для прогнозирования меток или классификационных оценок для новых данных. Для получения более подробной информации см. predict.

Строительство

Создать ClassificationLinear объект с помощью fitclinear.

Свойства

развернуть все

Свойства линейной классификации

Сила члена регуляризации, определяемая как неотрицательный скаляр или вектор неотрицательных значений.

Типы данных: double | single

Тип модели линейной классификации, указанный как 'logistic' или 'svm'.

В этой таблице f (x) = + b.

  • β - вектор p-коэффициентов.

  • x - это наблюдение из переменных p-предиктора.

  • b - скалярное смещение.

СтоимостьАлгоритмФункция потерьFittedLoss Стоимость
'logistic'Логистическая регрессияОтклонение (логистическое): ℓ[y,f (x)] = log {1 + exp [yf (x)]}'logit'
'svm'Опорная векторная машинаШарнир: ℓ[y,f (x)] = max [0,1 yf (x)]'hinge'

Оценки линейных коэффициентов, определяемые как числовой вектор с длиной, равной числу предикторов.

Типы данных: double

Расчетный термин смещения или перехват модели, заданный как числовой скаляр.

Типы данных: double

Это свойство доступно только для чтения.

Функция потерь, используемая для соответствия линейной модели, заданная как 'hinge' или 'logit'.

СтоимостьАлгоритмФункция потерьLearner Стоимость
'hinge'Опорная векторная машинаШарнир: ℓ[y,f (x)] = max [0,1 yf (x)]'svm'
'logit'Логистическая регрессияОтклонение (логистическое): ℓ[y,f (x)] = log {1 + exp [yf (x)]}'logistic'

Тип штрафа по сложности, указанный как 'lasso (L1)' или 'ridge (L2)'.

Программное обеспечение составляет целевую функцию для минимизации из суммы функции средних потерь (см. FittedLoss) и значение регуляризации из этой таблицы.

СтоимостьОписание
'lasso (L1)'Лассо (L1) пенальти: λ∑j=1p'βj|
'ridge (L2)'Штраф по Риджу (L2): λ2∑j=1pβj2

λ определяет силу члена регуляризации (см. Lambda).

Программное обеспечение исключает термин смещения (β0) из штрафа за регуляризацию.

Другие свойства классификации

Индексы категориального предиктора, указанные как вектор положительных целых чисел. Предполагая, что данные предиктора содержат наблюдения в строках, CategoricalPredictors содержит значения индекса, соответствующие столбцам данных предиктора, которые содержат категориальные предикторы. Если ни один из предикторов не категоричен, то это свойство пустое ([]).

Типы данных: single | double

Уникальные метки классов, используемые в обучении, указанные как категориальный или символьный массив, логический или числовой вектор или массив ячеек символьных векторов. ClassNames имеет тот же тип данных, что и метки класса Y. (Программа рассматривает строковые массивы как массивы ячеек символьных векторов.) ClassNames также определяет порядок классов.

Типы данных: categorical | char | logical | single | double | cell

Это свойство доступно только для чтения.

Затраты на неправильную классификацию, указанные как квадратная числовая матрица. Cost имеет K строк и столбцов, где K - количество классов.

Cost(i,j) - стоимость классификации точки по классу j если его истинный класс i. Порядок строк и столбцов Cost соответствует порядку классов в ClassNames.

Типы данных: double

Параметры, используемые для обучения ClassificationLinear модель, заданная как структура.

Поля доступа ModelParameters с использованием точечной нотации. Например, доступ к относительному допуску по линейным коэффициентам и члену смещения осуществляется с помощью Mdl.ModelParameters.BetaTolerance.

Типы данных: struct

Имена предикторов в порядке их появления в данных предиктора, заданных как клеточный массив векторов символов. Длина PredictorNames равно количеству переменных в данных обучения X или Tbl используется в качестве переменных предиктора.

Типы данных: cell

Расширенные имена предикторов, заданные как массив ячеек символьных векторов.

Если модель использует кодировку для категориальных переменных, то ExpandedPredictorNames содержит имена, описывающие развернутые переменные. В противном случае ExpandedPredictorNames является таким же, как PredictorNames.

Типы данных: cell

Это свойство доступно только для чтения.

Вероятности предшествующего класса, определенные как числовой вектор. Prior имеет столько элементов, сколько классов в ClassNames, и порядок элементов соответствует элементам ClassNames.

Типы данных: double

Имя ответной переменной, указанное как символьный вектор.

Типы данных: char

Функция преобразования баллов для применения к прогнозируемым баллам, заданная как имя функции или дескриптор функции.

Для моделей линейной классификации и перед преобразованием прогнозируемый показатель классификации для наблюдения x (вектор строки) равен f (x) = + b, где β и b соответствуют Mdl.Beta и Mdl.Biasсоответственно.

Чтобы изменить функцию преобразования баллов, например, function, используйте точечную нотацию.

  • Для встроенной функции введите этот код и замените function со значением в таблице.

    Mdl.ScoreTransform = 'function';

    СтоимостьОписание
    'doublelogit'1/( 1 + e-2x)
    'invlogit'log (x/( 1 - x))
    'ismax'Устанавливает балл для класса с наибольшим баллом в 1 и устанавливает балл для всех остальных классов в 0
    'logit'1/( 1 + e-x)
    'none' или 'identity'x (без преобразования)
    'sign'-1 для x < 0
    0 для x = 0
    1 для x > 0
    'symmetric'2x – 1
    'symmetricismax'Устанавливает балл для класса с наибольшим баллом в 1 и устанавливает балл для всех остальных классов в -1
    'symmetriclogit'2/( 1 + e-x) - 1

  • Для функции MATLAB ® или определяемой функции введите дескриптор ее функции.

    Mdl.ScoreTransform = @function;

    function должен принять матрицу исходных баллов для каждого класса, а затем вернуть матрицу того же размера, представляющую преобразованные баллы для каждого класса.

Типы данных: char | function_handle

Функции объекта

edgeКрай классификации для линейных классификационных моделей
incrementalLearnerПреобразование линейной модели для двоичной классификации в инкрементную
limeЛокальные интерпретируемые модели-агностические объяснения (LIME)
lossПотеря классификации для линейных классификационных моделей
marginПоля классификации для линейных классификационных моделей
partialDependenceВычислить частичную зависимость
plotPartialDependenceСоздание графиков частичной зависимости (PDP) и индивидуального условного ожидания (ICE)
predictПрогнозирование меток для линейных классификационных моделей
shapleyЗначения Шапли
selectModelsВыбор подмножества регуляризованных бинарных моделей линейной классификации
updateОбновление параметров модели для создания кода

Копирование семантики

Значение. Сведения о том, как классы значений влияют на операции копирования, см. в разделе Копирование объектов.

Примеры

свернуть все

Тренировка бинарной линейной классификационной модели с использованием вспомогательных векторных машин, двойной SGD и регуляризации гребней.

Загрузите набор данных NLP.

load nlpdata

X является разреженной матрицей данных предиктора, и Y является категориальным вектором меток класса. В данных имеется более двух классов.

Определите метки, соответствующие страницам документации Toolbox™ статистики и машинного обучения.

Ystats = Y == 'stats';

Обучайте модель двоичной линейной классификации, которая может определить, находится ли подсчет слов на веб-странице документации из документации Toolbox™ статистики и машинного обучения. Обучение модели с использованием всего набора данных. Определите, насколько хорошо алгоритм оптимизации соответствует модели данным, извлекая сводку аппроксимации.

rng(1); % For reproducibility 
[Mdl,FitInfo] = fitclinear(X,Ystats)
Mdl = 
  ClassificationLinear
      ResponseName: 'Y'
        ClassNames: [0 1]
    ScoreTransform: 'none'
              Beta: [34023x1 double]
              Bias: -1.0059
            Lambda: 3.1674e-05
           Learner: 'svm'


  Properties, Methods

FitInfo = struct with fields:
                    Lambda: 3.1674e-05
                 Objective: 5.3783e-04
                 PassLimit: 10
                 NumPasses: 10
                BatchLimit: []
             NumIterations: 238561
              GradientNorm: NaN
         GradientTolerance: 0
      RelativeChangeInBeta: 0.0562
             BetaTolerance: 1.0000e-04
             DeltaGradient: 1.4582
    DeltaGradientTolerance: 1
           TerminationCode: 0
         TerminationStatus: {'Iteration limit exceeded.'}
                     Alpha: [31572x1 double]
                   History: []
                   FitTime: 0.1894
                    Solver: {'dual'}

Mdl является ClassificationLinear модель. Вы можете пройти Mdl и обучение или новые данные для loss для проверки ошибки классификации в образце. Или, вы можете пройти Mdl и новые данные предиктора для predict для прогнозирования меток классов для новых наблюдений.

FitInfo является массивом структуры, содержащим, среди прочего, состояние завершения (TerminationStatus) и сколько времени решатель занял, чтобы подогнать модель к данным (FitTime). Рекомендуется использовать FitInfo чтобы определить, являются ли измерения оптимизации-завершения удовлетворительными. Поскольку время обучения невелико, можно попробовать переучить модель, но увеличить количество проходов через данные. Это может улучшить такие меры, как DeltaGradient.

Загрузите набор данных NLP.

load nlpdata
n = size(X,1); % Number of observations

Определите метки, соответствующие страницам документации Toolbox™ статистики и машинного обучения.

Ystats = Y == 'stats';

Удерживайте 5% данных.

rng(1); % For reproducibility
cvp = cvpartition(n,'Holdout',0.05)
cvp = 
Hold-out cross validation partition
   NumObservations: 31572
       NumTestSets: 1
         TrainSize: 29994
          TestSize: 1578

cvp является CVPartition объект, определяющий случайное разбиение n данных на обучающие и тестовые наборы.

Обучайте бинарную линейную модель классификации с помощью обучающего набора, который может определить, находится ли подсчет слов на веб-странице документации из документации Toolbox™ статистики и машинного обучения. Для ускорения обучения сориентируйте матрицу данных предиктора так, чтобы наблюдения были в столбцах.

idxTrain = training(cvp); % Extract training set indices
X = X';
Mdl = fitclinear(X(:,idxTrain),Ystats(idxTrain),'ObservationsIn','columns');

Предсказать наблюдения и ошибку классификации для выборки задержки.

idxTest = test(cvp); % Extract test set indices
labels = predict(Mdl,X(:,idxTest),'ObservationsIn','columns');
L = loss(Mdl,X(:,idxTest),Ystats(idxTest),'ObservationsIn','columns')
L = 7.1753e-04

Mdl неправильная классификация менее 1% наблюдений вне выборки.

Расширенные возможности

.
Представлен в R2016a