ClassificationLinear class

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

Описание

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

В отличие от других моделей классификации, и для экономичного использования памяти, 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 содержит значения индекса, указывающие, что соответствующие предикторы являются категориальными. Значения индекса между 1 и p, где p количество предикторов, используемых, чтобы обучить модель. Если ни один из предикторов не является категориальным, то это свойство пусто ([]).

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

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

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

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

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

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

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

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

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

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

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

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

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

Для линейных моделей классификации и перед преобразованием, предсказанной классификационной оценкой для наблюдения 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 + ex)
    "none" или "identity"x (никакое преобразование)
    "sign"– 1 для x <0
    0 для x = 0
    1 для x> 0
    "symmetric"2x – 1
    "symmetricismax"Устанавливает счет к классу с самым большим счетом к 1 и устанавливает музыку ко всем другим классам к –1
    "symmetriclogit"2/(1 + ex) – 1

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

    Mdl.ScoreTransform = @function;

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

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

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

edgeРебро классификации для линейных моделей классификации
incrementalLearnerПреобразуйте линейную модель для бинарной классификации инкрементному ученику
limeЛокальные поддающиеся толкованию объяснения модели агностические (LIME)
lossПотеря классификации для линейных моделей классификации
marginПоля классификации для линейных моделей классификации
partialDependenceВычислите частичную зависимость
plotPartialDependenceСоздайте графики отдельного условного ожидания (ICE) и частичный график зависимости (PDP)
predictПредскажите метки для линейных моделей классификации
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.0855
                    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