Линейная модель для бинарной классификации высоко-размерных данных
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 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% наблюдений из выборки.
Указания и ограничения по применению:
Функция predict
поддерживает генерацию кода.
Когда вы обучаете линейную модель классификации при помощи fitclinear
, следующие ограничения применяются.
Значение аргумента ввода данных предиктора (X
) должно быть полной, числовой матрицей.
Значение входного параметра меток класса (Y
) не может быть категориальным массивом.
Значение аргумента пары "имя-значение" 'ClassNames'
или свойства не может быть категориальным массивом.
Можно задать только одну силу регуляризации, или 'auto'
или неотрицательный скаляр для аргумента пары "имя-значение" 'Lambda'
.
Значение аргумента пары "имя-значение" 'ScoreTransform'
не может быть анонимной функцией.
Для получения дополнительной информации смотрите Введение в Генерацию кода.
ClassificationECOC
| ClassificationKernel
| ClassificationPartitionedLinear
| ClassificationPartitionedLinearECOC
| fitclinear
| predict
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.