Соответствуйте линейной модели классификации к высоко-размерным данным
fitclinear
обучает линейные модели классификации 2D классу (бинарное) изучение с высоко-размерными, полными или разреженными данными о предикторе. Доступные линейные модели классификации включают упорядоченные машины вектора поддержки (SVM) и модели логистической регрессии. fitclinear
минимизирует целевую функцию с помощью методов, которые уменьшают вычислительное время (например, стохастический спуск градиента).
В течение уменьшаемого времени вычисления на высоко-размерном наборе данных, который включает много переменных прогноза, обучите линейную модель классификации при помощи fitclinear
. Для низкого - через средние размерные наборы данных предиктора, смотрите Альтернативы для Более низко-размерных Данных.
Чтобы обучить линейную модель классификации мультиклассу, учащемуся путем объединения SVM или двоичных классификаторов логистической регрессии с помощью выходных кодов с коррекцией ошибок, смотрите fitcecoc
.
Mdl = fitclinear(X,Y)
Mdl = fitclinear(X,Y,Name,Value)
[Mdl,FitInfo]
= fitclinear(___)
[Mdl,FitInfo,HyperparameterOptimizationResults]
= fitclinear(___)
возвращает обученную линейную модель классификации с дополнительными опциями, заданными одним или несколькими аргументами пары Mdl
= fitclinear(X
,Y
,Name,Value
)Name,Value
. Например, можно указать, что столбцы матрицы предиктора соответствуют наблюдениям, реализуют логистическую регрессию или задают, чтобы перекрестный подтвердить. Это - хорошая практика, чтобы перекрестный подтвердить использование аргумента пары Name,Value
Kfold
. Результаты перекрестной проверки определяют, как хорошо модель делает вывод.
[
также возвращает детали гипероптимизации параметров управления, когда вы передаете пару "имя-значение" Mdl
,FitInfo
,HyperparameterOptimizationResults
]
= fitclinear(___)OptimizeHyperparameters
.
Обучите двоичный файл, линейная модель классификации, использующая машины вектора поддержки, двойной 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
.
Чтобы определить хорошую силу штрафа лассо для линейной модели классификации, которая использует ученика логистической регрессии, реализуйте 5-кратную перекрестную проверку.
Загрузите набор данных NLP.
load nlpdata
X
является разреженной матрицей данных о предикторе, и Y
является категориальным вектором меток класса. В данных существует больше чем два класса.
Модели должны идентифицировать, являются ли подсчеты слов в веб-странице из документации Statistics and Machine Learning Toolbox™. Так, идентифицируйте метки, которые соответствуют веб-страницам документации Statistics and Machine Learning Toolbox™.
Ystats = Y == 'stats';
Создайте набор 11 логарифмически распределенных сильных мест регуляризации от через .
Lambda = logspace(-6,-0.5,11);
Перекрестный подтвердите модели. Чтобы увеличить скорость выполнения, транспонируйте данные о предикторе и укажите, что наблюдения находятся в столбцах. Оцените содействующее использование SpaRSA. Понизьте допуск на градиент целевой функции к 1e-8
.
X = X'; rng(10); % For reproducibility CVMdl = fitclinear(X,Ystats,'ObservationsIn','columns','KFold',5,... 'Learner','logistic','Solver','sparsa','Regularization','lasso',... 'Lambda',Lambda,'GradientTolerance',1e-8)
CVMdl = classreg.learning.partition.ClassificationPartitionedLinear CrossValidatedModel: 'Linear' ResponseName: 'Y' NumObservations: 31572 KFold: 5 Partition: [1×1 cvpartition] ClassNames: [0 1] ScoreTransform: 'none' Properties, Methods
numCLModels = numel(CVMdl.Trained)
numCLModels = 5
CVMdl
является моделью ClassificationPartitionedLinear
. Поскольку fitclinear
реализует 5-кратную перекрестную проверку, CVMdl
содержит 5 моделей ClassificationLinear
, которые программное обеспечение обучает на каждом сгибе.
Отобразите первую обученную линейную модель классификации.
Mdl1 = CVMdl.Trained{1}
Mdl1 = ClassificationLinear ResponseName: 'Y' ClassNames: [0 1] ScoreTransform: 'logit' Beta: [34023×11 double] Bias: [-13.2904 -13.2904 -13.2904 -13.2904 -9.9357 -7.0782 -5.4335 -4.5473 -3.4223 -3.1649 -2.9795] Lambda: [1.0000e-06 3.5481e-06 1.2589e-05 4.4668e-05 1.5849e-04 5.6234e-04 0.0020 0.0071 0.0251 0.0891 0.3162] Learner: 'logistic' Properties, Methods
Mdl1
является объектом модели ClassificationLinear
. fitclinear
создал Mdl1
по образованию на первых четырех сгибах. Поскольку Lambda
является последовательностью сильных мест регуляризации, можно думать о Mdl1
как о 11 моделях, один для каждой силы регуляризации в Lambda
.
Оцените перекрестную подтвержденную ошибку классификации.
ce = kfoldLoss(CVMdl);
Поскольку существует 11 сильных мест регуляризации, ce
является вектором 1 на 11 коэффициентов ошибок классификации.
Более высокие значения Lambda
приводят к разреженности переменной прогноза, которая является хорошим качеством классификатора. Для каждой силы регуляризации обучите линейную модель классификации использование целого набора данных и тех же опций как тогда, когда вы перекрестный подтвержденный модели. Определите количество ненулевых коэффициентов на модель.
Mdl = fitclinear(X,Ystats,'ObservationsIn','columns',... 'Learner','logistic','Solver','sparsa','Regularization','lasso',... 'Lambda',Lambda,'GradientTolerance',1e-8); numNZCoeff = sum(Mdl.Beta~=0);
В той же фигуре постройте перекрестное подтвержденное, коэффициенты ошибок классификации и частоту ненулевых коэффициентов для каждой силы регуляризации. Постройте все переменные на логарифмической шкале.
figure; [h,hL1,hL2] = plotyy(log10(Lambda),log10(ce),... log10(Lambda),log10(numNZCoeff)); hL1.Marker = 'o'; hL2.Marker = 'o'; ylabel(h(1),'log_{10} classification error') ylabel(h(2),'log_{10} nonzero-coefficient frequency') xlabel('log_{10} Lambda') title('Test-Sample Statistics') hold off
Выберите индекс силы регуляризации, которая балансирует разреженность переменной прогноза и низкую ошибку классификации. В этом случае, значение между к должен быть достаточным.
idxFinal = 7;
Выберите модель из Mdl
с выбранной силой регуляризации.
MdlFinal = selectModels(Mdl,idxFinal);
MdlFinal
является моделью ClassificationLinear
, содержащей одну силу регуляризации. Чтобы оценить метки для новых наблюдений, передайте MdlFinal
и новые данные к predict
.
Этот пример показывает, как минимизировать ошибку перекрестной проверки в линейном классификаторе с помощью fitclinear
. Пример использует набор данных NLP.
Загрузите набор данных NLP.
load nlpdata
X
является разреженной матрицей данных о предикторе, и Y
является категориальным вектором меток класса. В данных существует больше чем два класса.
Модели должны идентифицировать, являются ли подсчеты слов в веб-странице из документации Statistics and Machine Learning Toolbox™. Идентифицируйте соответствующие метки.
X = X';
Ystats = Y == 'stats';
Оптимизируйте классификацию с помощью параметров 'auto'
.
Для воспроизводимости, набор случайный seed и использование функция приобретения 'expected-improvement-plus'
.
rng default Mdl = fitclinear(X,Ystats,'ObservationsIn','columns','Solver','sparsa',... 'OptimizeHyperparameters','auto','HyperparameterOptimizationOptions',... struct('AcquisitionFunctionName','expected-improvement-plus'))
|=====================================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | Lambda | Learner | | | result | | runtime | (observed) | (estim.) | | | |=====================================================================================================| | 1 | Best | 0.041619 | 3.7102 | 0.041619 | 0.041619 | 0.077903 | logistic | | 2 | Best | 0.00072849 | 3.6146 | 0.00072849 | 0.0028767 | 2.1405e-09 | logistic | | 3 | Accept | 0.049221 | 4.383 | 0.00072849 | 0.00075737 | 0.72101 | svm | | 4 | Accept | 0.00079184 | 4.0362 | 0.00072849 | 0.00074989 | 3.4734e-07 | svm | | 5 | Accept | 0.00082351 | 3.6567 | 0.00072849 | 0.00072924 | 1.1738e-08 | logistic | | 6 | Accept | 0.00085519 | 3.8855 | 0.00072849 | 0.00072746 | 2.4529e-09 | svm | | 7 | Accept | 0.00079184 | 3.8795 | 0.00072849 | 0.00072518 | 3.1854e-08 | svm | | 8 | Accept | 0.00088686 | 4.1503 | 0.00072849 | 0.00072236 | 3.1717e-10 | svm | | 9 | Accept | 0.00076017 | 3.5691 | 0.00072849 | 0.00068304 | 3.1837e-10 | logistic | | 10 | Accept | 0.00079184 | 4.203 | 0.00072849 | 0.00072853 | 1.1258e-07 | svm | | 11 | Accept | 0.00076017 | 3.8095 | 0.00072849 | 0.00072144 | 2.1214e-09 | logistic | | 12 | Accept | 0.00079184 | 6.3278 | 0.00072849 | 0.00075984 | 2.2819e-07 | logistic | | 13 | Accept | 0.00072849 | 3.9257 | 0.00072849 | 0.00075648 | 6.6161e-08 | logistic | | 14 | Best | 0.00069682 | 4.1709 | 0.00069682 | 0.00069781 | 7.4324e-08 | logistic | | 15 | Best | 0.00066515 | 4.1086 | 0.00066515 | 0.00068861 | 7.6994e-08 | logistic | | 16 | Accept | 0.00076017 | 3.685 | 0.00066515 | 0.00068881 | 7.0687e-10 | logistic | | 17 | Accept | 0.00066515 | 4.1488 | 0.00066515 | 0.0006838 | 7.7159e-08 | logistic | | 18 | Accept | 0.0012353 | 4.5418 | 0.00066515 | 0.00068521 | 0.00083275 | svm | | 19 | Accept | 0.00076017 | 4.0808 | 0.00066515 | 0.00068508 | 5.0781e-05 | svm | | 20 | Accept | 0.00085519 | 3.1398 | 0.00066515 | 0.00068527 | 0.00022104 | svm | |=====================================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | Lambda | Learner | | | result | | runtime | (observed) | (estim.) | | | |=====================================================================================================| | 21 | Accept | 0.00082351 | 6.2676 | 0.00066515 | 0.00068569 | 4.5396e-06 | svm | | 22 | Accept | 0.0010769 | 14.789 | 0.00066515 | 0.00070107 | 5.1931e-06 | logistic | | 23 | Accept | 0.00095021 | 16.747 | 0.00066515 | 0.00069594 | 1.3051e-06 | logistic | | 24 | Accept | 0.00085519 | 5.2072 | 0.00066515 | 0.00069625 | 1.6481e-05 | svm | | 25 | Accept | 0.00085519 | 4.265 | 0.00066515 | 0.00069643 | 1.157e-06 | svm | | 26 | Accept | 0.00079184 | 3.4761 | 0.00066515 | 0.00069667 | 1.0016e-08 | svm | | 27 | Accept | 0.00072849 | 3.7038 | 0.00066515 | 0.00069848 | 4.2234e-08 | logistic | | 28 | Accept | 0.049221 | 0.48067 | 0.00066515 | 0.00069842 | 3.1608 | logistic | | 29 | Accept | 0.00085519 | 4.0213 | 0.00066515 | 0.00069855 | 8.5626e-10 | svm | | 30 | Accept | 0.00076017 | 3.6389 | 0.00066515 | 0.00069837 | 3.1946e-10 | logistic | __________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 162.4664 seconds. Total objective function evaluation time: 143.6227 Best observed feasible point: Lambda Learner __________ ________ 7.6994e-08 logistic Observed objective function value = 0.00066515 Estimated objective function value = 0.00069837 Function evaluation time = 4.1086 Best estimated feasible point (according to models): Lambda Learner __________ ________ 7.4324e-08 logistic Estimated objective function value = 0.00069837 Estimated function evaluation time = 4.0948
Mdl = ClassificationLinear ResponseName: 'Y' ClassNames: [0 1] ScoreTransform: 'logit' Beta: [34023×1 double] Bias: -10.1723 Lambda: 7.4324e-08 Learner: 'logistic' Properties, Methods
X
Данные о предиктореДанные о предикторе, заданные как n-by-p полная или разреженная матрица.
Длина Y
и количество наблюдений в X
должны быть равными.
Если вы ориентируете свою матрицу предиктора так, чтобы наблюдения соответствовали столбцам и задали 'ObservationsIn','columns'
, то вы можете испытать значительное сокращение во время выполнения оптимизации.
Типы данных: single | double
Y
Метки классаМетки класса, к которым обучена модель классификации, задали как категориальное, символ, или массив строк, логический или числовой вектор или массив ячеек из символьных векторов.
fitclinear
только поддерживает бинарную классификацию. Или Y
должен содержать точно два отличных класса, или необходимо задать два класса для обучения с помощью аргумента пары "имя-значение" 'ClassNames'
. Для изучения мультикласса смотрите fitcecoc
.
Если Y
является символьным массивом, то каждый элемент должен соответствовать одной строке массива.
Длина Y
и количество наблюдений в X
должны быть равными.
Это - хорошая практика, чтобы задать порядок класса с помощью аргумента пары "имя-значение" ClassNames
.
Типы данных: char
| string
| cell
| categorical
| logical
| single
| double
fitclinear
удаляет недостающие наблюдения, то есть, наблюдения с любой из этих характеристик:
NaN
, пустой символьный вектор (''
), пустая строка (""
), <missing>
и элементы <undefined>
в ответе (Y
или ValidationData
{2}
)
По крайней мере одно значение NaN
в наблюдении предиктора (строка в X
или ValidationData{1}
)
Значение NaN
или вес 0
(Weights
или ValidationData{3}
)
Для экономики использования памяти это - лучшая практика удалить наблюдения, содержащие отсутствующие значения от ваших данных тренировки вручную перед обучением.
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение.
Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
'ObservationsIn','columns','Learner','logistic','CrossVal','on'
указывает, что столбцы матрицы предиктора соответствуют наблюдениям, чтобы реализовать логистическую регрессию, реализовать 10-кратную перекрестную проверку.Вы не можете использовать аргумент пары "имя-значение" перекрестной проверки наряду с аргументом пары "имя-значение" 'OptimizeHyperparameters'
. Можно изменить перекрестную проверку для 'OptimizeHyperparameters'
только при помощи аргумента пары "имя-значение" 'HyperparameterOptimizationOptions'
.
\lambda
Сила срока регуляризации'auto'
(значение по умолчанию) | неотрицательный скаляр | вектор неотрицательных значенийСила срока регуляризации, заданная как пара, разделенная запятой, состоящая из 'Lambda'
и 'auto'
, неотрицательного скаляра или вектора неотрицательных значений.
Для 'auto'
, Lambda
= 1/n.
Если вы задаете перекрестную проверку, аргумент пары "имя-значение" (например, CrossVal
), то n является количеством, окутывают наблюдения.
В противном случае n является учебным объемом выборки.
Для вектора неотрицательных значений программное обеспечение последовательно оптимизирует целевую функцию для каждого отличного значения в Lambda
в порядке возрастания.
Если Solver
является 'sgd'
или 'asgd'
, и Regularization
является 'lasso'
, то программное обеспечение не использует предыдущие содействующие оценки в качестве горячего запуска для следующей итерации оптимизации. В противном случае программное обеспечение использует горячие запуски.
Если Regularization
является 'lasso'
, то любая содействующая оценка 0 сохраняет свое значение, когда программное обеспечение оптимизирует использующие последующие значения в Lambda
.
Возвращает содействующие оценки для всех итераций оптимизации.
Пример: 'Lambda',10.^(-(10:-2:2))
Типы данных: char
| string
| double
| single
'Learner'
— Линейный тип модели классификации'svm'
(значение по умолчанию) | 'logistic'
Линейный тип модели классификации, заданный как пара, разделенная запятой, состоящая из 'Learner'
и 'svm'
или 'logistic'
.
В этой таблице,
β является вектором коэффициентов p.
x является наблюдением от переменных прогноза p.
b является скалярным смещением.
Значение | Алгоритм | Область значений ответа | Функция потерь |
---|---|---|---|
'svm' | Поддержите векторную машину | y ∊ {-1,1}; 1 для положительного класса и –1 в противном случае | Стержень: |
'logistic' | Логистическая регрессия | То же самое как 'svm' | (Логистическое) отклонение: |
Пример: 'Learner','logistic'
'ObservationsIn'
— Размерность наблюдения данных о предикторе'rows'
(значение по умолчанию) | 'columns'
Размерность наблюдения данных о предикторе, заданная как пара, разделенная запятой, состоящая из 'ObservationsIn'
и 'columns'
или 'rows'
.
Если вы ориентируете свою матрицу предиктора так, чтобы наблюдения соответствовали столбцам и задали 'ObservationsIn','columns'
, то вы можете испытать значительное сокращение во время выполнения оптимизации.
'Regularization'
— Тип штрафа сложности'lasso'
| 'ridge'
Тип штрафа сложности, заданный как пара, разделенная запятой, состоящая из 'Regularization'
и 'lasso'
или 'ridge'
.
Программное обеспечение составляет целевую функцию для минимизации от суммы средней функции потерь (см. Learner
), и срок регуляризации в этой таблице.
Значение | Описание |
---|---|
'lasso' | Лассо (L1) штраф: |
'ridge' | Гребень (L2) штраф: |
Чтобы задать регуляризацию называют силу, которая является λ в выражениях, используйте Lambda
.
Программное обеспечение исключает срок смещения (β 0) от штрафа регуляризации.
Если Solver
является 'sparsa'
, то значением по умолчанию Regularization
является 'lasso'
. В противном случае значением по умолчанию является 'ridge'
.
Для выбора переменной прогноза задайте 'lasso'
.
Для точности оптимизации задайте 'ridge'
.
Пример: 'Regularization','lasso'
'Solver'
— Метод минимизации целевой функции'sgd'
| 'asgd'
| 'dual'
| 'bfgs'
| 'lbfgs'
| 'sparsa'
| массив строк | массив ячеек из символьных векторовМетод минимизации целевой функции, заданный как пара, разделенная запятой, состоящая из 'Solver'
и вектора символов или скаляра строки, массива строк или массива ячеек из символьных векторов со значениями из этой таблицы.
Значение | Описание | Ограничения |
---|---|---|
'sgd' | Стохастический спуск градиента (SGD) [5][3] | |
'asgd' | Средний стохастический спуск градиента (ASGD) [8] | |
'dual' | Двойной SGD для SVM [2][7] | Regularization должен быть 'ridge' , и Learner должен быть 'svm' . |
'bfgs' | Алгоритм квазиньютона Бройдена Флетчера Голдфарба Шэнно (BFGS) [4] | Неэффективный, если X является очень высоко-размерным. |
'lbfgs' | Ограниченная память BFGS (LBFGS) [4] | Regularization должен быть 'ridge' . |
'sparsa' | Разреженная реконструкция отделимым приближением (SpaRSA) [6] | Regularization должен быть 'lasso' . |
Если вы задаете:
Гребенчатый штраф (см. Regularization
) и X
содержат 100 или меньше переменных прогноза, затем решателем по умолчанию является 'bfgs'
.
Модель SVM (см. Learner
), гребенчатый штраф и X
содержат больше чем 100 переменных прогноза, затем решателем по умолчанию является 'dual'
.
Штраф лассо и X
содержат 100 или меньше переменных прогноза, затем решателем по умолчанию является 'sparsa'
.
В противном случае решателем по умолчанию является 'sgd'
.
Если вы задаете массив строк или массив ячеек имен решателя, то программное обеспечение использует все решатели в заданном порядке для каждого Lambda
.
Для получения дополнительной информации, на который решатель выбрать, смотрите Советы.
Пример: 'Solver',{'sgd','lbfgs'}
\beta
Начальные линейные содействующие оценкиzeros(p,1)
(значение по умолчанию) | числовой вектор | числовая матрицаНачальный линейный коэффициент оценивает (β), заданный как пара, разделенная запятой, состоящая из 'Beta'
и p - размерный числовой вектор или p-by-L числовая матрица. p является количеством переменных прогноза в X
, и L является количеством значений силы регуляризации (для получения дополнительной информации, смотрите Lambda
).
Если вы задаете p - размерный вектор, то программное обеспечение оптимизирует целевую функцию времена L с помощью этого процесса.
Программное обеспечение оптимизирует использование Beta
как начальное значение и минимальное значение Lambda
как сила регуляризации.
Программное обеспечение оптимизирует снова использование получившейся оценки от предыдущей оптимизации как горячий запуск и следующее наименьшее значение в Lambda
как сила регуляризации.
Программное обеспечение реализует шаг 2, пока это не исчерпывает все значения в Lambda
.
Если вы задаете p-by-L матрица, то программное обеспечение оптимизирует целевую функцию времена L. В итерации j
программное обеспечение использует
в качестве начального значения и, после того, как это отсортирует Beta(:,j)
Lambda
в порядке возрастания,
использования Lambda(j)
как сила регуляризации.
Если вы устанавливаете 'Solver','dual'
, то программное обеспечение игнорирует Beta
.
Типы данных: single | double
'Bias'
— Начальная оценка прерыванияНачальная оценка прерывания (b), заданный как пара, разделенная запятой, состоящая из 'Bias'
и числового скаляра или L - размерный числовой вектор. L является количеством значений силы регуляризации (для получения дополнительной информации, смотрите Lambda
).
Если вы задаете скаляр, то программное обеспечение оптимизирует целевую функцию времена L с помощью этого процесса.
Программное обеспечение оптимизирует использование Bias
как начальное значение и минимальное значение Lambda
как сила регуляризации.
Использование получившаяся оценка как горячий запуск к следующей итерации оптимизации и использование следующее наименьшее значение в Lambda
как сила регуляризации.
Программное обеспечение реализует шаг 2, пока это не исчерпывает все значения в Lambda
.
Если вы задаете L - размерный вектор, то программное обеспечение оптимизирует целевую функцию времена L. В итерации j
программное обеспечение использует
в качестве начального значения и, после того, как это отсортирует Bias(j)
Lambda
в порядке возрастания,
использования Lambda(j)
как сила регуляризации.
По умолчанию:
Если Learner
является 'logistic'
, то gj, которому позволяют, 1, если
является положительным классом, и-1 в противном случае. Y(j)
Bias
является взвешенным средним g для обучения или для перекрестной проверки, окутайте наблюдения.
Если Learner
является 'svm'
, то Bias
0.
Типы данных: single | double
'FitBias'
— Linear прерывает флаг включенияtrue
(значение по умолчанию) | false
Линейный образцовый флаг включения прерывания, заданный как пара, разделенная запятой, состоящая из 'FitBias'
и true
или false
.
Значение | Описание |
---|---|
true | Программное обеспечение включает срок смещения b в линейную модель, и затем оценивает его. |
false | Программное обеспечение устанавливает b = 0 во время оценки. |
Пример: 'FitBias',false
Типы данных: логический
'PostFitBias'
— Отметьте, чтобы соответствовать линейному образцовому прерыванию после оптимизацииfalse
(значение по умолчанию) | true
Отметьте, чтобы соответствовать линейному образцовому прерыванию после оптимизации, заданной как пара, разделенная запятой, состоящая из 'PostFitBias'
и true
или false
.
Значение | Описание |
---|---|
false | Программное обеспечение оценивает, что смещение называет b и коэффициенты β во время оптимизации. |
true |
Оценить b, программное обеспечение:
|
Если вы задаете true
, то FitBias
должен быть верным.
Пример: 'PostFitBias',true
Типы данных: логический
'Verbose'
— Уровень многословия0
(значение по умолчанию) | неотрицательное целое числоУровень многословия, заданный как пара, разделенная запятой, состоящая из 'Verbose'
и неотрицательного целого числа. Verbose
управляет суммой диагностической информации отображения fitclinear
в командной строке.
Значение | Описание |
---|---|
0 | fitclinear не отображает диагностическую информацию. |
1 | fitclinear периодически отображает и хранит значение целевой функции, величины градиента и другой диагностической информации. FitInfo.History содержит диагностическую информацию. |
Любое другое положительное целое число | fitclinear отображает и хранит диагностическую информацию в каждой итерации оптимизации. FitInfo.History содержит диагностическую информацию. |
Пример: 'Verbose',1
Типы данных: double | single
'BatchSize'
— Мини-пакетный размерМини-пакетный размер, заданный как пара, разделенная запятой, состоящая из 'BatchSize'
и положительного целого числа. В каждой итерации программное обеспечение оценивает подградиент с помощью наблюдений BatchSize
от данных тренировки.
Если X
является числовой матрицей, то значением по умолчанию является 10
.
Если X
является разреженной матрицей, то значением по умолчанию является max([10,ceil(sqrt(ff))])
, где ff = numel(X)/nnz(X)
(fullness factor X
).
Пример: 'BatchSize',100
Типы данных: single | double
'LearnRate'
— Темп обученияТемп обучения, заданный как пара, разделенная запятой, состоящая из 'LearnRate'
и положительной скалярной величины. LearnRate
задает сколько шагов, чтобы взять на итерацию. В каждой итерации градиент задает направление и значение каждого шага.
Если Regularization
является 'ridge'
, то LearnRate
задает начальный темп обучения γ 0. Программное обеспечение определяет темп обучения для итерации t, γt, с помощью
Если Regularization
является 'lasso'
, то для всех итераций LearnRate
является постоянным.
По умолчанию LearnRate
является 1/sqrt(1+max((sum(X.^2,obsDim))))
, где obsDim
является 1
, если наблюдения составляют столбцы данных о предикторе X
и 2
в противном случае.
Пример: 'LearnRate',0.01
Типы данных: single | double
'OptimizeLearnRate'
— Отметьте, чтобы уменьшить темп обученияtrue
(значение по умолчанию) | false
Отметьте, чтобы уменьшить темп обучения, когда программное обеспечение обнаружит расхождение (то есть, переступая через минимум), заданный как пара, разделенная запятой, состоящая из 'OptimizeLearnRate'
и true
или false
.
Если OptimizeLearnRate
является 'true'
, то:
Для нескольких итераций оптимизации программное обеспечение запускает оптимизацию с помощью LearnRate
в качестве темпа обучения.
Если значение увеличений целевой функции, то перезапуски программного обеспечения и использование половина текущего значения темпа обучения.
Программное обеспечение выполняет итерации шага 2, пока целевая функция не уменьшается.
Пример: 'OptimizeLearnRate',true
Типы данных: логический
'TruncationPeriod'
— Количество мини-пакетов между выполнениями усечения лассо10
(значение по умолчанию) | положительное целое числоКоличество мини-пакетов между выполнениями усечения лассо, заданными как пара, разделенная запятой, состоящая из 'TruncationPeriod'
и положительного целого числа.
После запущенного усечения программное обеспечение применяет мягкий порог к линейным коэффициентам. Таким образом, после обработки k = мини-пакеты TruncationPeriod
, программное обеспечение обрезает предполагаемый коэффициент использование j
Для SGD, оценка коэффициента j после обработки мини-пакетов k. γt является темпом обучения в итерации t. λ является значением Lambda
.
Для ASGD, усредненный оценочный коэффициент j после обработки мини-пакетов k,
Если Regularization
является 'ridge'
, то программное обеспечение игнорирует TruncationPeriod
.
Пример: 'TruncationPeriod',100
Типы данных: single | double
'ClassNames'
— Имена классов, чтобы использовать для обученияИмена классов, чтобы использовать для обучения, заданного как пара, разделенная запятой, состоящая из 'ClassNames'
и категориального, символа, или массива строк, логического или числового вектора или массива ячеек из символьных векторов. ClassNames
должен иметь совпадающий тип данных как Y
.
Если ClassNames
является символьным массивом, то каждый элемент должен соответствовать одной строке массива.
Используйте ClassNames
для:
Закажите классы во время обучения.
Задайте порядок любой размерности аргумента ввода или вывода, которая соответствует порядку класса. Например, используйте ClassNames
, чтобы задать порядок размерностей Cost
или порядка следования столбцов очков классификации, возвращенных predict
.
Выберите подмножество классов для обучения. Например, предположите, что набором всех отличных имен классов в Y
является {'a','b','c'}
. Чтобы обучить модель с помощью наблюдений от классов 'a'
и 'c'
только, задайте 'ClassNames',{'a','c'}
.
Значение по умолчанию для ClassNames
является набором всех отличных имен классов в Y
.
Пример: 'ClassNames',{'b','g'}
Типы данных: categorical
| char
| string
| logical
| single
| double
| cell
'Cost'
— Misclassification стоитсяMisclassification стоят, заданный как пара, разделенная запятой, состоящая из 'Cost'
и квадратной матрицы или структуры.
Если вы задаете квадратную матрицу cost
('Cost',cost
), то cost(i,j)
является стоимостью классификации точки в класс j
, если его истинным классом является i
. Таким образом, строки соответствуют истинному классу, и столбцы соответствуют предсказанному классу. Чтобы задать порядок класса для соответствующих строк и столбцов cost
, используйте аргумент пары "имя-значение" ClassNames
.
Если вы задаете структуру S
('Cost',S
), то это должно иметь два поля:
S.ClassNames
, который содержит имена классов как переменную совпадающего типа данных как Y
S.ClassificationCosts
, который содержит матрицу стоимости со строками и столбцами, упорядоченными как в S.ClassNames
Значением по умолчанию для Cost
является
, где ones(K) – eye(K)
K
является количеством отличных классов.
fitclinear
использует Cost
, чтобы настроить предшествующие вероятности класса, заданные в Prior
. Затем fitclinear
использует настроенные априорные вероятности для обучения и сбрасывает матрицу стоимости к ее значению по умолчанию.
Пример: 'Cost',[0 2; 1 0]
Типы данных: single
| double
| struct
'Prior'
— Априорные вероятности'empirical'
(значение по умолчанию) | 'uniform'
| числовой вектор | массив структурАприорные вероятности для каждого класса, заданного как пара, разделенная запятой, состоящая из 'Prior'
и 'empirical'
, 'uniform'
, числового вектора или массива структур.
Эта таблица суммирует доступные параметры для установки априорных вероятностей.
Значение | Описание |
---|---|
'empirical' | Априорные вероятности класса являются частотами родственника класса в Y . |
'uniform' | Все априорные вероятности класса равны 1/K , где K является количеством классов. |
числовой вектор | Каждый элемент является априорной вероятностью класса. Закажите элементы согласно их порядку в Y . Если вы задаете порядок с помощью аргумента пары "имя-значение" 'ClassNames' , то заказываете элементы соответственно. |
массив структур |
Структура
|
fitclinear
нормирует априорные вероятности в Prior
, чтобы суммировать к 1.
Пример: 'Prior',struct('ClassNames',{{'setosa','versicolor'}},'ClassProbs',1:2)
Типы данных: char
| string
| double
| single
| struct
'ScoreTransform'
— Выиграйте преобразование'none'
(значение по умолчанию) | 'doublelogit'
| 'invlogit'
| 'ismax'
| 'logit'
| указатель на функцию |...Выиграйте преобразование, заданное как пара, разделенная запятой, состоящая из 'ScoreTransform'
и вектора символов, представьте в виде строки скаляр или указатель на функцию.
Эта таблица суммирует доступные векторы символов и скаляры строки.
Значение | Описание |
---|---|
'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® или функции вы задаете, используете ее указатель на функцию для счета, преобразовывают. Указатель на функцию должен принять матрицу (исходные очки) и возвратить матрицу, одного размера (преобразованные очки).
Пример: 'ScoreTransform','logit'
Типы данных: char
| string
| function_handle
'Weights'
— Веса наблюденияВеса наблюдения, заданные как пара, разделенная запятой, состоящая из 'Weights'
и числовой вектор положительных значений. fitclinear
взвешивает наблюдения в X
с соответствующим значением в Weights
. Размер Weights
должен равняться количеству наблюдений в X
.
fitclinear
нормирует Weights
, чтобы суммировать до значения априорной вероятности в соответствующем классе.
По умолчанию Weights
является
, где ones(n,1)
n
является количеством наблюдений в X
.
Типы данных: double | single
'CrossVal'
— Флаг перекрестной проверки'off'
(значение по умолчанию) | 'on'
Флаг перекрестной проверки, заданный как пара, разделенная запятой, состоящая из 'Crossval'
и 'on'
или 'off'
.
Если вы задаете 'on'
, то программное обеспечение реализует 10-кратную перекрестную проверку.
Чтобы заменить эту установку перекрестной проверки, используйте один из этих аргументов пары "имя-значение": CVPartition
, Holdout
или KFold
. Чтобы создать перекрестную подтвержденную модель, можно использовать один аргумент пары "имя-значение" перекрестной проверки за один раз только.
Пример: 'Crossval','on'
'CVPartition'
— Раздел перекрестной проверки[]
(значение по умолчанию) | объект раздела cvpartition
Раздел перекрестной проверки, заданный как пара, разделенная запятой, состоящая из 'CVPartition'
и раздела cvpartition
, возражает, как создано cvpartition
. Объект раздела задает тип перекрестной проверки, и также индексации для наборов обучения и валидации.
Чтобы создать перекрестную подтвержденную модель, можно использовать одну из этих четырех опций только: '
CVPartition
'
, '
Holdout
'
или '
KFold
'
.
'Holdout'
— Часть данных для валидации затяжкиЧасть данных используется для валидации затяжки, заданной как пара, разделенная запятой, состоящая из 'Holdout'
и скалярного значения в области значений (0,1). Если вы задаете
, то программное обеспечение: 'Holdout',p
Случайным образом резервы %
данных как данные о валидации и train модель с помощью остальной части данныхp*100
Хранит компактную, обученную модель в свойстве Trained
перекрестной подтвержденной модели.
Чтобы создать перекрестную подтвержденную модель, можно использовать одну из этих четырех опций только: '
CVPartition
'
, '
Holdout
'
или '
KFold
'
.
Пример: 'Holdout',0.1
Типы данных: double | single
'KFold'
— Количество сгибов10
(значение по умолчанию) | положительное целочисленное значение, больше, чем 1Количество сгибов, чтобы использовать в перекрестном подтвержденном классификаторе, заданном как пара, разделенная запятой, состоящая из 'KFold'
и положительного целочисленного значения, больше, чем 1. Если вы задаете, например, 'KFold',k
, то программное обеспечение:
Случайным образом делит данные в наборы k
Для каждого набора, резервирует набор как данные о валидации и обучает модель с помощью другого k – 1 набор
Хранит k
компактные, обученные модели в ячейках k
-by-1 вектор ячейки в свойстве Trained
перекрестной подтвержденной модели.
Чтобы создать перекрестную подтвержденную модель, можно использовать одну из этих четырех опций только: '
CVPartition
'
, '
Holdout
'
или '
KFold
'
.
Пример: 'KFold',8
Типы данных: single | double
'BatchLimit'
— Максимальное количество пакетовМаксимальное количество пакетов к процессу, заданному как пара, разделенная запятой, состоящая из 'BatchLimit'
и положительного целого числа. Когда программные процессы пакеты BatchLimit
, это отключает оптимизацию.
По умолчанию:
Проходы через данные программного обеспечения времена PassLimit
.
Если вы задаете несколько решателей и используете (A) SGD, чтобы получить начальное приближение для следующего решателя, то значением по умолчанию является ceil(1e6/BatchSize)
. BatchSize
является значением аргумента пары "имя-значение" '
BatchSize
'
.
Если вы задаете 'BatchLimit'
и '
PassLimit
'
, то программное обеспечение выбирает аргумент, который приводит к обработке наименьшего количества наблюдений.
Если вы задаете 'BatchLimit'
, но не 'PassLimit'
, то программные процессы достаточно пакетов, чтобы завершиться до одного целого прохода через данные.
Пример: 'BatchLimit',100
Типы данных: single | double
'BetaTolerance'
— Относительный допуск на линейных коэффициентах и сроке смещения1e-4
(значение по умолчанию) | неотрицательный скалярОтносительный допуск на линейных коэффициентах и сроке смещения (прерывание), заданное как пара, разделенная запятой, состоящая из 'BetaTolerance'
и неотрицательного скаляра.
Пусть , то есть, вектор коэффициентов и смещения называет в итерации оптимизации t. Если , затем оптимизация останавливается.
Если программное обеспечение сходится для последнего решателя, заданного в Solver
, то оптимизация останавливается. В противном случае программное обеспечение использует следующий решатель, заданный в Solver
.
Пример: 'BetaTolerance',1e-6
Типы данных: single | double
'NumCheckConvergence'
— Количество пакетов к процессу перед следующей проверкой сходимостиКоличество пакетов к процессу перед следующей проверкой сходимости, заданной как пара, разделенная запятой, состоящая из 'NumCheckConvergence'
и положительного целого числа.
Чтобы задать пакетный размер, смотрите BatchSize
.
Проверки программного обеспечения на сходимость приблизительно 10 раз на проходят через целый набор данных по умолчанию.
Пример: 'NumCheckConvergence',100
Типы данных: single | double
'PassLimit'
— Максимальное количество передач1
(значение по умолчанию) | положительное целое числоМаксимальное количество проходов через данные, заданное как пара, разделенная запятой, состоящая из 'PassLimit'
и положительного целого числа.
fitclinear
обрабатывает все наблюдения, когда он завершает один проход через данные.
Когда проходы через данные fitclinear
времена PassLimit
, это отключает оптимизацию.
Если вы задаете '
BatchLimit
'
и 'PassLimit'
, то fitclinear
выбирает аргумент, который приводит к обработке наименьшего количества наблюдений.
Пример: 'PassLimit',5
Типы данных: single | double
'ValidationData'
— Данные о валидации для обнаружения сходимости оптимизацииДанные для обнаружения сходимости оптимизации, заданного как пара, разделенная запятой, состоящая из 'ValidationData'
и массива ячеек.
Во время оптимизации программное обеспечение периодически оценивает потерю ValidationData
. Если потеря данных валидации увеличивается, то программное обеспечение отключает оптимизацию. Для получения дополнительной информации см. Алгоритмы. Чтобы оптимизировать гиперпараметры с помощью перекрестной проверки, см. опции перекрестной проверки, такие как CrossVal
.
ValidationData(1)
должен содержать m-by-p или p-by-m полная или разреженная матрица данных о предикторе, которые имеют ту же ориентацию как X
. Переменные прогноза в данных тренировки X
и ValidationData{1}
должны соответствовать. Количество наблюдений в обоих наборах может отличаться.
ValidationData{2}
и Y
должны быть совпадающим типом данных. Набор всех отличных меток ValidationData{2}
должен быть подмножеством всех отличных меток Y
.
Опционально, ValidationData(3)
может содержать m - размерный числовой вектор весов наблюдения. Программное обеспечение нормирует веса с данными о валидации так, чтобы они суммировали к 1.
Если вы задаете ValidationData
, то, чтобы отобразить потерю валидации в командной строке, задают значение, больше, чем 0 для Verbose
.
Если программное обеспечение сходится для последнего решателя, заданного в Solver
, то оптимизация останавливается. В противном случае программное обеспечение использует следующий решатель, заданный в Solver
.
По умолчанию программное обеспечение не обнаруживает сходимость путем контроля потери данных валидации.
'BetaTolerance'
— Относительный допуск на линейных коэффициентах и сроке смещения1e-4
(значение по умолчанию) | неотрицательный скалярОтносительный допуск на линейных коэффициентах и сроке смещения (прерывание), заданное как пара, разделенная запятой, состоящая из 'BetaTolerance'
и неотрицательного скаляра.
Пусть , то есть, вектор коэффициентов и смещения называет в итерации оптимизации t. Если , затем оптимизация останавливается.
Если вы также задаете DeltaGradientTolerance
, то оптимизация останавливается, когда программное обеспечение удовлетворяет любой критерий остановки.
Если программное обеспечение сходится для последнего решателя, заданного в Solver
, то оптимизация останавливается. В противном случае программное обеспечение использует следующий решатель, заданный в Solver
.
Пример: 'BetaTolerance',1e-6
Типы данных: single | double
'DeltaGradientTolerance'
— Допуск различия градиента1
(значение по умолчанию) | неотрицательный скалярДопуск различия градиента между верхними и более низкими нарушителями условий взаимозависимости Karush-Kuhn-Tucker (KKT) пула, заданными как пара, разделенная запятой, состоящая из 'DeltaGradientTolerance'
и неотрицательного скаляра.
Если значение нарушителей KKT является меньше, чем DeltaGradientTolerance
, то программное обеспечение отключает оптимизацию.
Если программное обеспечение сходится для последнего решателя, заданного в Solver
, то оптимизация останавливается. В противном случае программное обеспечение использует следующий решатель, заданный в Solver
.
Пример: 'DeltaGapTolerance',1e-2
Типы данных: double | single
'NumCheckConvergence'
— Количество проходит через целый набор данных к процессу перед следующей проверкой сходимости5
(значение по умолчанию) | положительное целое числоКоличество проходит через целый набор данных к процессу перед следующей проверкой сходимости, заданной как пара, разделенная запятой, состоящая из 'NumCheckConvergence'
и положительного целого числа.
Пример: 'NumCheckConvergence',100
Типы данных: single | double
'PassLimit'
— Максимальное количество передач10
(значение по умолчанию) | положительное целое числоМаксимальное количество проходов через данные, заданное как пара, разделенная запятой, состоящая из 'PassLimit'
и положительного целого числа.
Когда программное обеспечение завершает один проход через данные, оно обработало все наблюдения.
Когда проходы через данные программного обеспечения времена PassLimit
, это отключает оптимизацию.
Пример: 'PassLimit',5
Типы данных: single | double
'ValidationData'
— Данные о валидации для обнаружения сходимости оптимизацииДанные для обнаружения сходимости оптимизации, заданного как пара, разделенная запятой, состоящая из 'ValidationData'
и массива ячеек.
Во время оптимизации программное обеспечение периодически оценивает потерю ValidationData
. Если потеря данных валидации увеличивается, то программное обеспечение отключает оптимизацию. Для получения дополнительной информации см. Алгоритмы. Чтобы оптимизировать гиперпараметры с помощью перекрестной проверки, см. опции перекрестной проверки, такие как CrossVal
.
ValidationData(1)
должен содержать m-by-p или p-by-m полная или разреженная матрица данных о предикторе, которые имеют ту же ориентацию как X
. Переменные прогноза в данных тренировки X
и ValidationData{1}
должны соответствовать. Количество наблюдений в обоих наборах может отличаться.
ValidationData{2}
и Y
должны быть совпадающим типом данных. Набор всех отличных меток ValidationData{2}
должен быть подмножеством всех отличных меток Y
.
Опционально, ValidationData(3)
может содержать m - размерный числовой вектор весов наблюдения. Программное обеспечение нормирует веса с данными о валидации так, чтобы они суммировали к 1.
Если вы задаете ValidationData
, то, чтобы отобразить потерю валидации в командной строке, задают значение, больше, чем 0 для Verbose
.
Если программное обеспечение сходится для последнего решателя, заданного в Solver
, то оптимизация останавливается. В противном случае программное обеспечение использует следующий решатель, заданный в Solver
.
По умолчанию программное обеспечение не обнаруживает сходимость путем контроля потери данных валидации.
'BetaTolerance'
— Относительный допуск на линейных коэффициентах и сроке смещения1e-4
(значение по умолчанию) | неотрицательный скалярОтносительный допуск на линейных коэффициентах и сроке смещения (прерывание), заданное как пара, разделенная запятой, состоящая из 'BetaTolerance'
и неотрицательного скаляра.
Пусть , то есть, вектор коэффициентов и смещения называет в итерации оптимизации t. Если , затем оптимизация останавливается.
Если вы также задаете GradientTolerance
, то оптимизация останавливается, когда программное обеспечение удовлетворяет любой критерий остановки.
Если программное обеспечение сходится для последнего решателя, заданного в Solver
, то оптимизация останавливается. В противном случае программное обеспечение использует следующий решатель, заданный в Solver
.
Пример: 'BetaTolerance',1e-6
Типы данных: single | double
'GradientTolerance'
— Абсолютный допуск градиента1e-6
(значение по умолчанию) | неотрицательный скалярАбсолютный допуск градиента, заданный как пара, разделенная запятой, состоящая из 'GradientTolerance'
и неотрицательного скаляра.
Пусть будьте вектором градиента целевой функции относительно коэффициентов, и смещение называют в итерации оптимизации t. Если , затем оптимизация останавливается.
Если вы также задаете BetaTolerance
, то оптимизация останавливается, когда программное обеспечение удовлетворяет любой критерий остановки.
Если программное обеспечение сходится для последнего решателя, заданного в программном обеспечении, то оптимизация останавливается. В противном случае программное обеспечение использует следующий решатель, заданный в Solver
.
Пример: 'GradientTolerance',1e-5
Типы данных: single | double
'HessianHistorySize'
— Размер буфера истории для приближения Гессиана15
(значение по умолчанию) | положительное целое числоРазмер буфера истории для приближения Гессиана, заданного как пара, разделенная запятой, состоящая из 'HessianHistorySize'
и положительного целого числа. Таким образом, в каждой итерации программное обеспечение составляет Гессиан с помощью статистики от последних итераций HessianHistorySize
.
Программное обеспечение не поддерживает 'HessianHistorySize'
для SpaRSA.
Пример: 'HessianHistorySize',10
Типы данных: single | double
'IterationLimit'
— Максимальное количество итераций оптимизации1000
(значение по умолчанию) | положительное целое числоМаксимальное количество итераций оптимизации, заданных как пара, разделенная запятой, состоящая из 'IterationLimit'
и положительного целого числа. IterationLimit
применяется к этим значениям Solver
: 'bfgs'
, 'lbfgs'
и 'sparsa'
.
Пример: 'IterationLimit',500
Типы данных: single | double
'ValidationData'
— Данные о валидации для обнаружения сходимости оптимизацииДанные для обнаружения сходимости оптимизации, заданного как пара, разделенная запятой, состоящая из 'ValidationData'
и массива ячеек.
Во время оптимизации программное обеспечение периодически оценивает потерю ValidationData
. Если потеря данных валидации увеличивается, то программное обеспечение отключает оптимизацию. Для получения дополнительной информации см. Алгоритмы. Чтобы оптимизировать гиперпараметры с помощью перекрестной проверки, см. опции перекрестной проверки, такие как CrossVal
.
ValidationData(1)
должен содержать m-by-p или p-by-m полная или разреженная матрица данных о предикторе, которые имеют ту же ориентацию как X
. Переменные прогноза в данных тренировки X
и ValidationData{1}
должны соответствовать. Количество наблюдений в обоих наборах может отличаться.
ValidationData{2}
и Y
должны быть совпадающим типом данных. Набор всех отличных меток ValidationData{2}
должен быть подмножеством всех отличных меток Y
.
Опционально, ValidationData(3)
может содержать m - размерный числовой вектор весов наблюдения. Программное обеспечение нормирует веса с данными о валидации так, чтобы они суммировали к 1.
Если вы задаете ValidationData
, то, чтобы отобразить потерю валидации в командной строке, задают значение, больше, чем 0 для Verbose
.
Если программное обеспечение сходится для последнего решателя, заданного в Solver
, то оптимизация останавливается. В противном случае программное обеспечение использует следующий решатель, заданный в Solver
.
По умолчанию программное обеспечение не обнаруживает сходимость путем контроля потери данных валидации.
'OptimizeHyperparameters'
— Параметры, чтобы оптимизировать'none'
(значение по умолчанию) | 'auto'
| 'all'
| массив строк или массив ячеек имеющих право названий параметра | вектор объектов optimizableVariable
Параметры, чтобы оптимизировать, заданный как пара, разделенная запятой, состоящая из 'OptimizeHyperparameters'
и одно из следующего:
'none'
Не оптимизировать.
'auto'
Используйте {'Lambda','Learner'}
.
все
Оптимизируйте все имеющие право параметры.
Массив строк или массив ячеек имеющих право названий параметра.
Вектор объектов optimizableVariable
, обычно вывод hyperparameters
.
Оптимизация пытается минимизировать потерю перекрестной проверки (ошибка) для fitclinear
путем варьирования параметров. Для получения информации о потере перекрестной проверки (хотя в различном контексте), смотрите Потерю Классификации. Чтобы управлять типом перекрестной проверки и другими аспектами оптимизации, используйте пару "имя-значение" HyperparameterOptimizationOptions
.
Значения 'OptimizeHyperparameters'
заменяют любые значения, вы устанавливаете использование других аргументов пары "имя-значение". Например, установка 'OptimizeHyperparameters'
к 'auto'
заставляет значения 'auto'
применяться.
Имеющие право параметры для fitclinear
:
\lambda
fitclinear
ищет среди положительных значений, по умолчанию масштабируемых журналом в области значений [1e-5/NumObservations,1e5/NumObservations]
.
Learner
— fitclinear
ищет среди 'svm'
и 'logistic'
.
Regularization
— fitclinear
ищет среди 'ridge'
и 'lasso'
.
Установите параметры не по умолчанию путем передачи вектора объектов optimizableVariable
, которые имеют значения не по умолчанию. Например,
load fisheriris params = hyperparameters('fitclinear',meas,species); params(1).Range = [1e-4,1e6];
Передайте params
как значение OptimizeHyperparameters
.
По умолчанию итеративное отображение появляется в командной строке, и графики появляются согласно количеству гиперпараметров в оптимизации. Для оптимизации и графиков, целевая функция является журналом (1 + потеря перекрестной проверки) для регрессии и misclassification уровня для классификации. Чтобы управлять итеративным отображением, установите поле Verbose
аргумента пары "имя-значение" 'HyperparameterOptimizationOptions'
. Чтобы управлять графиками, установите поле ShowPlots
аргумента пары "имя-значение" 'HyperparameterOptimizationOptions'
.
Для примера смотрите, Оптимизируют Линейный Классификатор.
Пример: 'OptimizeHyperparameters','auto'
'HyperparameterOptimizationOptions'
— Опции для оптимизацииОпции для оптимизации, заданной как пара, разделенная запятой, состоящая из 'HyperparameterOptimizationOptions'
и структуры. Этот аргумент изменяет эффект аргумента пары "имя-значение" OptimizeHyperparameters
. Все поля в структуре являются дополнительными.
Имя поля | Значения | Значение по умолчанию |
---|---|---|
Optimizer |
| 'bayesopt' |
AcquisitionFunctionName |
Приобретение функционирует, чьи имена включают | 'expected-improvement-per-second-plus' |
MaxObjectiveEvaluations | Максимальное количество оценок целевой функции. | 30 для 'bayesopt' или 'randomsearch' и целой сетки для 'gridsearch' |
MaxTime | Ограничение по времени, заданное как положительное действительное. Ограничение по времени находится в секундах, как измерено | Inf |
NumGridDivisions | Для 'gridsearch' , количества значений в каждой размерности. Значение может быть вектором положительных целых чисел, дающих количество значений для каждой размерности или скаляр, который применяется ко всем размерностям. Это поле проигнорировано для категориальных переменных. | 10 |
ShowPlots | Логическое значение, указывающее, показать ли графики. Если true , это поле строит лучшее значение целевой функции против номера итерации. Если существуют один или два параметра оптимизации, и если Optimizer является 'bayesopt' , то ShowPlots также строит модель целевой функции против параметров. | true |
SaveIntermediateResults | Логическое значение, указывающее, сохранить ли результаты, когда Optimizer является 'bayesopt' . Если true , это поле перезаписывает переменную рабочей области под названием 'BayesoptResults' в каждой итерации. Переменная является объектом BayesianOptimization . | false |
Verbose | Отобразитесь к командной строке.
Для получения дополнительной информации смотрите
аргумент пары "имя-значение" | 1 |
UseParallel | Логическое значение, указывающее, запустить ли Байесовую оптимизацию параллельно, которая требует Parallel Computing Toolbox™. Для получения дополнительной информации смотрите Параллельную Байесовую Оптимизацию. | false |
Repartition | Логическое значение, указывающее, повторно разделить ли перекрестную проверку в каждой итерации. Если
| false |
Используйте не больше, чем одни из следующих трех имен полей. | ||
CVPartition | Объект cvpartition , как создано cvpartition . | 'Kfold',5 , если вы не задаете поля перекрестной проверки |
Holdout | Скаляр в области значений (0,1) , представляющий часть затяжки. | |
Kfold | Целое число, больше, чем 1. |
Пример: 'HyperparameterOptimizationOptions',struct('MaxObjectiveEvaluations',60)
Типы данных: struct
Mdl
— Обученная линейная модель классификацииClassificationLinear
| ClassificationPartitionedLinear
перекрестный подтвержденный объект моделиОбученная линейная модель классификации, возвращенная как объект модели ClassificationLinear
или ClassificationPartitionedLinear
перекрестный подтвержденный объект модели.
Если вы устанавливаете какой-либо из аргументов пары "имя-значение" KFold
, Holdout
, CrossVal
или CVPartition
, то Mdl
является ClassificationPartitionedLinear
перекрестный подтвержденный объект модели. В противном случае Mdl
является объектом модели ClassificationLinear
.
К ссылочным свойствам Mdl
используйте запись через точку. Например, введите Mdl.Beta
в Командном окне, чтобы отобразить вектор или матрицу предполагаемых коэффициентов.
В отличие от других моделей классификации, и для экономичного использования памяти, ClassificationLinear
и объекты модели ClassificationPartitionedLinear
не хранят данные тренировки или учебные детали процесса (например, история сходимости).
FitInfo
— Детали оптимизацииДетали оптимизации, возвращенные как массив структур.
Поля задают окончательные значения или спецификации аргумента пары "имя-значение", например, Objective
является значением целевой функции, когда оптимизация останавливается. Строки многомерных полей соответствуют значениям Lambda
, и столбцы соответствуют значениям Solver
.
Эта таблица описывает некоторые известные поля.
Поле | Описание | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
TerminationStatus |
| ||||||||||||||
FitTime | Прошедшее, тактовое стеной время в секундах | ||||||||||||||
History | Массив структур информации об оптимизации для каждой итерации. Поле
|
К полям доступа используйте запись через точку. Например, чтобы получить доступ к вектору значений целевой функции для каждой итерации, введите FitInfo.History.Objective
.
Это - хорошая практика, чтобы исследовать FitInfo
, чтобы оценить, является ли сходимость удовлетворительной.
HyperparameterOptimizationResults
— Оптимизация перекрестной проверки гиперпараметровBayesianOptimization
| таблица гиперпараметров и присваиваемых значенийОптимизация перекрестной проверки гиперпараметров, возвращенных как объект BayesianOptimization
или таблица гиперпараметров и присваиваемых значений. Вывод непуст, когда значением 'OptimizeHyperparameters'
не является 'none'
. Выходное значение зависит от значения поля Optimizer
аргумента пары "имя-значение" 'HyperparameterOptimizationOptions'
:
Значение поля Optimizer | Значение HyperparameterOptimizationResults |
---|---|
'bayesopt' (значение по умолчанию) | Объект класса BayesianOptimization |
'gridsearch' или 'randomsearch' | Таблица гиперпараметров используемые, наблюдаемые значения целевой функции (потеря перекрестной проверки), и ранг наблюдений от самого низкого (лучше всего) к (худшему) самому высокому |
warm start является первоначальными оценками бета коэффициентов и срока смещения, предоставленного стандартной программе оптимизации для более быстрой сходимости.
Высоко-размерная линейная классификация и модели регрессии минимизируют целевые функции относительно быстро, но за счет некоторой точности, числовое единственное ограничение переменных прогноза и модель должны быть линейными относительно параметров. Если ваш набор данных предиктора является низким - через средний размерный, или содержит неоднородные переменные, то необходимо использовать соответствующую классификацию или функцию подбора кривой регрессии. Чтобы помочь вам решить, какой подбор кривой функции подходит для вашего низко-размерного набора данных, используйте эту таблицу.
Модель, чтобы соответствовать | Функция | Известные алгоритмические различия |
---|---|---|
SVM |
| |
Линейная регрессия |
| |
Логистическая регрессия |
|
Это - лучшая практика ориентировать вашу матрицу предиктора так, чтобы наблюдения соответствовали столбцам и задавать 'ObservationsIn','columns'
. В результате можно испытать значительное сокращение во время выполнения оптимизации.
Для лучшей точности оптимизации, если X
является высоко-размерным и Regularization
является 'ridge'
, установите любую из этих комбинаций для Solver
:
'sgd'
'asgd'
'dual'
, если Learner
является 'svm'
{'sgd','lbfgs'}
{'asgd','lbfgs'}
{'dual','lbfgs'}
, если Learner
является 'svm'
Другие комбинации могут привести к плохой точности оптимизации.
Для лучшей точности оптимизации, если X
является умеренным - через низко-размерный и Regularization
, 'ridge'
, установите Solver
на 'bfgs'
.
Если Regularization
является 'lasso'
, установите любую из этих комбинаций для Solver
:
'sgd'
'asgd'
'sparsa'
{'sgd','sparsa'}
{'asgd','sparsa'}
При выборе между SGD и ASGD, полагайте что:
SGD занимает меньше времени на итерацию, но требует, чтобы сходилось больше итераций.
ASGD требует, чтобы меньше итераций сходилось, но занимает больше времени на итерацию.
Если X
имеет немного наблюдений, но много переменных прогноза, то:
Задайте 'PostFitBias',true
.
Для SGD или решателей ASGD, набор PassLimit
к положительному целому числу, которое больше, чем 1, например, 5 или 10. Эта установка часто приводит к лучшей точности.
Для SGD и решателей ASGD, BatchSize
влияет на уровень сходимости.
Если BatchSize
является слишком маленьким, то fitclinear
достигает минимума во многих итерациях, но вычисляет градиент на итерацию быстро.
Если BatchSize
является слишком большим, то fitclinear
достигает минимума в меньшем количестве итераций, но вычисляет градиент на итерацию медленно.
Большие темпы обучения (см. LearnRate
) ускоряют сходимость к минимуму, но могут привести к расхождению (то есть, переступив через минимум). Небольшие темпы обучения гарантируют сходимость минимуму, но могут вести, чтобы замедлить завершение.
При использовании штрафов лассо экспериментируйте с различными значениями TruncationPeriod
. Например, установите TruncationPeriod
на 1
, 10
, и затем 100
.
Для эффективности fitclinear
не стандартизирует данные о предикторе. Чтобы стандартизировать X
, войти
X = bsxfun(@rdivide,bsxfun(@minus,X,mean(X,2)),std(X,0,2));
Код требует, чтобы вы ориентировали предикторы и наблюдения как строки и столбцы X
, соответственно. Кроме того, для экономики использования памяти код заменяет исходные данные о предикторе стандартизированные данные.
После обучения модель можно сгенерировать код C/C++, который предсказывает метки для новых данных. Генерация кода C/C++ требует MATLAB Coder™. Для получения дополнительной информации смотрите Введение в Генерацию кода.
Если вы задаете ValidationData
, то, во время оптимизации целевой функции:
fitclinear
оценивает потерю валидации ValidationData
периодически с помощью текущей модели и отслеживает минимальную оценку.
Когда fitclinear
оценивает потерю валидации, он сравнивает оценку с минимальной оценкой.
Когда последующий, оценки потерь валидации превышают минимальную оценку пять раз, fitclinear
отключает оптимизацию.
Если вы задаете ValidationData
и реализовывать стандартную программу перекрестной проверки (CrossVal
, CVPartition
, Holdout
или KFold
), то:
fitclinear
случайным образом делит X
и Y
согласно стандартной программе перекрестной проверки, которую вы выбираете.
fitclinear
обучает модель с помощью раздела данных тренировки. Во время оптимизации целевой функции fitclinear
использует ValidationData
в качестве другого возможного способа отключить оптимизацию (для получения дополнительной информации смотрите предыдущий маркер).
Если fitclinear
удовлетворяет останавливающийся критерий, он создает обученное основанное на модели на оптимизированных линейных коэффициентах и прерывании.
Если вы реализуете k - перекрестная проверка сгиба, и fitclinear
не исчерпал все сгибы набора обучающих данных, то fitclinear
возвращается к Шагу 2, чтобы обучить использование следующего сгиба набора обучающих данных.
В противном случае fitclinear
отключает обучение, и затем возвращает перекрестную подтвержденную модель.
Можно определить качество перекрестной подтвержденной модели. Например:
Чтобы определить потерю валидации с помощью затяжки или данных из сгиба из шага 1, передайте перекрестную подтвержденную модель kfoldLoss
.
Чтобы предсказать наблюдения относительно затяжки или данных из сгиба из шага 1, передайте перекрестную подтвержденную модель kfoldPredict
.
[1] Се, C. J. К. В. Чанг, К. Дж. Лин, С. С. Кирти и С. Сандарарэджэн. “Двойной Координатный Метод Спуска для Крупномасштабного Линейного SVM”. Продолжения 25-й Международной конференции по вопросам Машинного обучения, ICML ’08, 2001, стр 408–415.
[2] Лэнгфорд, J., Л. Ли и Т. Чжан. “Разреженное Дистанционное обучение Через Усеченный Градиент”. Дж. Мах. Учиться. Res., Издание 10, 2009, стр 777–801.
[3] Nocedal, J. и С. Дж. Райт. Числовая Оптимизация, 2-й редактор, Нью-Йорк: Спрингер, 2006.
[4] Шалев-Шварц, S., И. Зингер и Н. Сребро. “Pegasos: Основной Предполагаемый Решатель Подградиента для SVM”. Продолжения 24-й Международной конференции по вопросам Машинного обучения, ICML ’07, 2007, стр 807–814.
[5] Мастер, S. J. Р. Д. Ноуок и М. А. Т. Фигередо. “Разреженная Реконструкция Отделимым Приближением”. Сигнал сделки Proc., Издание 57, № 7, 2009, стр 2479–2493.
[6] Сяо, Лин. “Двойные Методы усреднения для Упорядоченного Стохастического Изучения и Онлайновой Оптимизации”. Дж. Мах. Учиться. Res., Издание 11, 2010, стр 2543–2596.
[7] Сюй, Вэй. “К Оптимальному Один Крупный масштаб Передачи Изучение с Усредненным Стохастическим Спуском Градиента”. CoRR, abs/1107.2490, 2011.
Указания и ограничения по применению:
Некоторые аргументы пары "имя-значение" имеют различные значения по умолчанию по сравнению со значениями по умолчанию для функции fitclinear
в оперативной памяти. Поддерживаемые аргументы пары "имя-значение" и любые различия:
'ObservationsIn'
— Поддержки только 'rows'
.
\lambda
Может быть 'auto'
(значение по умолчанию) или скаляр.
'Learner'
'Regularization'
— Поддержки только 'ridge'
.
'Solver'
— Поддержки только 'lbfgs'
.
'FitBias'
— Поддержки только true
.
'Verbose'
— Значением по умолчанию является 1
.
'Beta'
'Bias'
'ClassNames'
'Cost'
'Prior'
'Weights'
— Значение должно быть длинным массивом.
'HessianHistorySize'
'BetaTolerance'
— Значение по умолчанию ослабляется к 1e–3
.
'GradientTolerance'
— Значение по умолчанию ослабляется к 1e–3
.
'IterationLimit'
— Значение по умолчанию ослабляется к 20
.
'OptimizeHyperparameters'
— Значением параметра 'Regularization'
должен быть 'ridge'
.
'HyperparameterOptimizationOptions'
— Для перекрестной проверки высокая оптимизация поддерживает только валидацию 'Holdout'
. Например, можно задать fitclinear(X,Y,'OptimizeHyperparameters','auto','HyperparameterOptimizationOptions',struct('Holdout',0.2))
.
Для длинных массивов fitclinear
реализует LBFGS путем распределения вычисления потери и градиента среди различных частей длинного массива в каждой итерации. Другие решатели не доступны для длинных массивов.
Когда начальные значения для Beta
и Bias
не даны, fitclinear
совершенствовал первоначальные оценки параметров путем подбора кривой модели локально к частям данных и объединения коэффициентов путем усреднения.
Для получения дополнительной информации смотрите Длинные массивы (MATLAB).
Чтобы запуститься параллельно, установите опцию 'UseParallel'
на true
.
Чтобы выполнить параллельную гипероптимизацию параметров управления, используйте аргумент пары "имя-значение" 'HyperparameterOptions', struct('UseParallel',true)
в вызове этой функции.
Для получения дополнительной информации о параллельной гипероптимизации параметров управления смотрите Параллельную Байесовую Оптимизацию.
Для более общей информации о параллельных вычислениях смотрите функции MATLAB Выполнения с Автоматической Параллельной Поддержкой (Parallel Computing Toolbox).
ClassificationLinear
| ClassificationPartitionedLinear
| fitcecoc
| fitckernel
| fitcsvm
| fitglm
| fitrlinear
| kfoldLoss
| kfoldPredict
| lassoglm
| predict
| templateLinear
| testcholdout
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.