Класс ClassificationLinear

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

Описание

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 является количеством классов.

Cost(i,j) является стоимостью классификации точки в класс 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.2174
                    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