Линейная модель для бинарной классификации высоко-размерных данных
ClassificationLinear является обученным линейным объектом модели для бинарной классификации; линейная модель является моделью логистической регрессии или машиной вектора поддержки (SVM). fitclinear соответствует модели ClassificationLinear путем минимизации целевой функции с помощью методов, которые уменьшают время вычисления для высоко-размерных наборов данных (например, стохастический спуск градиента). Потеря классификации плюс срок регуляризации составляет целевую функцию.
В отличие от других моделей классификации, и для экономичного использования памяти, объекты модели ClassificationLinear не хранят данные тренировки. Однако они действительно хранят, например, предполагаемые линейные коэффициенты модели, вероятности предшествующего класса и силу регуляризации.
Можно использовать обученные модели ClassificationLinear, чтобы предсказать метки или музыку классификации к новым данным. Для получения дополнительной информации смотрите predict.
Создайте объект ClassificationLinear при помощи fitclinear.
\lambda Сила срока регуляризацииСила срока регуляризации, заданная как неотрицательный скаляр или вектор неотрицательных значений.
Типы данных: double | single
Learner — Линейный тип модели классификации'logistic' | 'svm'Линейный тип модели классификации, заданный как 'logistic' или 'svm'.
В этой таблице,
β является вектором коэффициентов p.
x является наблюдением от переменных прогноза p.
b является скалярным смещением.
| Значение | Алгоритм | Функция потерь | Значение FittedLoss |
|---|---|---|---|
'logistic' | Логистическая регрессия | (Логистическое) отклонение: | 'logit' |
'svm' | Поддержите векторную машину | Стержень: | 'hinge' |
\beta Линейные содействующие оценкиЛинейные содействующие оценки, заданные как числовой вектор с длиной, равняются количеству предикторов.
Типы данных: double
Bias — Предполагаемый срок смещенияПредполагаемый срок смещения или образцовое прерывание, заданное в виде числа.
Типы данных: double
FittedLoss — Функция потерь раньше соответствовала линейной модели'hinge' | 'logit'Функция потерь раньше соответствовала линейной модели, заданной как 'hinge' или 'logit'.
| Значение | Алгоритм | Функция потерь | Значение Learner |
|---|---|---|---|
'hinge' | Поддержите векторную машину | Стержень: | 'svm' |
'logit' | Логистическая регрессия | (Логистическое) отклонение: | 'logistic' |
Regularization — Тип штрафа сложности'lasso (L1)' | 'ridge (L2)'Тип штрафа сложности, заданный как 'lasso (L1)' или 'ridge (L2)'.
Программное обеспечение составляет целевую функцию для минимизации от суммы средней функции потерь (см. FittedLoss), и значение регуляризации из этой таблицы.
| Значение | Описание |
|---|---|
'lasso (L1)' | Лассо (L 1) штраф: |
'ridge (L2)' | Гребень (L 2) штраф: |
λ задает силу срока регуляризации (см. Lambda).
Программное обеспечение исключает срок смещения (β 0) от штрафа регуляризации.
CategoricalPredictors — Индексы категориальных предикторов[]Индексы категориальных предикторов, значение которых всегда пусто ([]), потому что модель ClassificationLinear не поддерживает категориальные предикторы.
ClassNames — Уникальные метки классаУникальные метки класса используются в обучении, заданном как категориальное или символьный массив, логический или числовой вектор или массив ячеек из символьных векторов. ClassNames имеет совпадающий тип данных, когда класс маркирует Y. (Программное обеспечение обрабатывает строковые массивы как массивы ячеек из символьных векторов.)
ClassNames также определяет порядок класса.
Типы данных: categorical | char | logical | single | double | cell
Cost — Затраты MisclassificationЭто свойство доступно только для чтения.
Затраты Misclassification, заданные как квадратная числовая матрица. Cost имеет строки и столбцы K, где K является количеством классов.
является стоимостью классификации точки в класс Cost(i,j) j, если его истинным классом является i. Порядок строк и столбцов Cost соответствует порядку классов в ClassNames.
Типы данных: double
ModelParameters — Параметры используются для учебной моделиПараметры использовали для обучения модель ClassificationLinear, заданную как структура.
Доступ к полям ModelParameters с помощью записи через точку. Например, получите доступ к относительному допуску на линейных коэффициентах и сроке смещения при помощи Mdl.ModelParameters.BetaTolerance.
Типы данных: struct
PredictorNames — Имена предиктораПредиктор называет в порядке их внешнего вида в данных о предикторе X, заданный как массив ячеек из символьных векторов. Длина PredictorNames равна количеству столбцов в X.
Типы данных: cell
ExpandedPredictorNames — Расширенные имена предиктораРасширенные имена предиктора, заданные как массив ячеек из символьных векторов.
Поскольку модель ClassificationLinear не поддерживает категориальные предикторы, ExpandedPredictorNames и PredictorNames равны.
Типы данных: cell
Prior — Предшествующие вероятности классаЭто свойство доступно только для чтения.
Предшествующие вероятности класса, заданные как числовой вектор. Prior имеет столько же элементов сколько классы в ClassNames, и порядок элементов соответствует элементам ClassNames.
Типы данных: double
ScoreTransform — Выиграйте функцию преобразования'doublelogit' | 'invlogit' | 'ismax' | 'logit' | 'none' | указатель на функцию |...Выиграйте функцию преобразования, чтобы примениться к предсказанным очкам, заданным как имя функции или указатель на функцию.
Для линейных моделей классификации и перед преобразованием, предсказанным счетом классификации к наблюдению 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
ResponseName — Имя переменной откликаИмя переменной отклика, заданное как вектор символов.
Типы данных: char
| ребро | Ребро классификации для линейных моделей классификации |
| потеря | Потеря классификации для линейных моделей классификации |
| поле | Поля классификации для линейных моделей классификации |
| предсказать | Предскажите метки для линейных моделей классификации |
| selectModels | Выберите подмножество упорядоченных, бинарных линейных моделей классификации |
Значение. Чтобы изучить, как классы значения влияют на операции копии, смотрите Копирование Объектов (MATLAB).
Обучите двоичный файл, линейная модель классификации, использующая машины вектора поддержки, двойной SGD и гребенчатую регуляризацию.
Загрузите набор данных NLP.
load nlpdataX является разреженной матрицей данных о предикторе, и 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% наблюдений из выборки.
Указания и ограничения по применению:
Функция predict поддерживает генерацию кода.
Когда вы обучаете линейную модель классификации при помощи fitclinear, следующие ограничения применяются.
Значение аргумента ввода данных предиктора (X) должно быть полной, числовой матрицей.
Значение входного параметра меток класса (Y) не может быть категориальным массивом.
Значение аргумента пары "имя-значение" 'ClassNames' или свойства не может быть категориальным массивом.
Можно задать только одну силу регуляризации, или 'auto' или неотрицательный скаляр для аргумента пары "имя-значение" 'Lambda'.
Значение аргумента пары "имя-значение" 'ScoreTransform' не может быть анонимной функцией.
Для получения дополнительной информации смотрите Введение в Генерацию кода.
ClassificationECOC | ClassificationKernel | ClassificationPartitionedLinear | ClassificationPartitionedLinearECOC | fitclinear | predict
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.