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)]=журнал{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)]=журнал{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) от штрафа регуляризации.

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

Индексы категориальных предикторов, значение которых всегда пусто ([]) потому что ClassificationLinear модель не поддерживает категориальные предикторы.

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

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

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

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

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

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

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

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

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

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

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

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

Поскольку ClassificationLinear модель не поддерживает категориальные предикторы, ExpandedPredictorNames и PredictorNames равны.

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

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

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

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

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

Для линейных моделей классификации и перед преобразованием, предсказанным счетом классификации к наблюдению x (вектор-строка) является f (x) = x β + 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 + 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

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

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

Методы

реброРебро классификации для линейных моделей классификации
потеряПотеря классификации для линейных моделей классификации
полеПоля классификации для линейных моделей классификации
предсказатьПредскажите метки для линейных моделей классификации
selectModelsВыберите подмножество упорядоченных, бинарных линейных моделей классификации

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

Значение. Чтобы изучить, как классы значения влияют на операции копии, смотрите Копирование Объектов (MATLAB).

Примеры

свернуть все

Обучите двоичный файл, линейная модель классификации использование машин опорных векторов, двойного 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.1688
                    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