ClassificationLinear class

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

Описание

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

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

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

Конструкция

Создайте ClassificationLinear объект при помощи fitclinear.

Свойства

расширить все

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

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

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

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

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

  • β является вектором p коэффициентов.

  • x является наблюдением от p переменных предиктора.

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

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

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

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

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

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

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

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

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

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

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

ЗначениеОписание
'lasso (L1)'Лассо (L 1) штраф :λj=1p|βj|
'ridge (L2)'Хребет (L 2) штраф :λ2j=1pβj2

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

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

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

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

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

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

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

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

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

Стоимость (i, j) - стоимость классификации точки в класс j если его класс true 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 (<reservedrangesplaceholder6>) = <reservedrangesplaceholder5> <reservedrangesplaceholder4> + b, где β и b соответствуют Mdl.Beta и Mdl.Bias, соответственно.

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

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

    Mdl.ScoreTransform = 'function';

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

  • Для MATLAB® function, или функция, которую вы задаете, вводите указатель на функцию.

    Mdl.ScoreTransform = @function;

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

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

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

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

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

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

Примеры

свернуть все

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

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

load nlpdata

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

Идентифицируйте метки, которые соответствуют веб-страницам Statistics and Machine Learning Toolbox™ документации.

Ystats = Y == 'stats';

Обучите двоичную, линейную модель классификации, которая может идентифицировать, является ли слово счетчиком на веб-странице документации из документации Statistics and Machine Learning 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

Идентифицируйте метки, которые соответствуют веб-страницам Statistics and Machine Learning 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 данных на обучающие и тестовые наборы.

Обучите двоичную линейную модель классификации с помощью набора обучающих данных, которая может идентифицировать, является ли значение слова на веб-странице документации из документации Statistics and Machine Learning 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