Подгонка линейной классификационной модели к высоко-размерным данным
fitclinear
обучает линейные модели классификации для двухклассного (двоичного) обучения с высокомерными, полными или разреженными данными предиктора. Доступные линейные модели классификации включают регуляризованные машины опорных векторов (SVM) и логистические регрессионые модели. fitclinear
минимизирует целевую функцию с помощью методов, которые сокращают время вычисления (например, стохастический градиентный спуск).
Для сокращения времени вычисления на высоко-размерном наборе данных, который включает много переменные, обучите линейную модель классификации при помощи fitclinear
. Для наборов данных со средним и средним размерностями смотрите Альтернативы для нижних размерных данных.
Чтобы обучить линейную модель классификации для многоклассового обучения путем объединения SVM или логистических регрессионых двоичных классификаторов с использованием выходных кодов с исправлением ошибок, см. fitcecoc
.
возвращает линейную модель классификации, используя переменные предиктора в таблице Mdl
= fitclinear(Tbl
,ResponseVarName
)Tbl
и метки классов в Tbl.ResponseVarName
.
задает опции, использующие один или несколько аргументы пары "имя-значение" в дополнение к любой комбинации входных аргументов в предыдущих синтаксисах. Например, можно задать, что столбцы матрицы предиктора соответствуют наблюдениям, реализовать логистическую регрессию или задать для перекрестной проверки. Хорошей практикой является перекрестная проверка с использованием Mdl
= fitclinear(X
,Y
,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.1894
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 = ClassificationPartitionedLinear CrossValidatedModel: 'Linear' ResponseName: 'Y' NumObservations: 31572 KFold: 5 Partition: [1x1 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: [34023x11 double] Bias: [1x11 double] Lambda: [1x11 double] 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 | 7.9361 | 0.041619 | 0.041619 | 0.077903 | logistic | | 2 | Best | 0.00076017 | 7.9167 | 0.00076017 | 0.0029067 | 2.1405e-09 | logistic | | 3 | Accept | 0.049221 | 8.6984 | 0.00076017 | 0.00078902 | 0.72101 | svm | | 4 | Accept | 0.00079184 | 9.4976 | 0.00076017 | 0.00078154 | 3.4734e-07 | svm | | 5 | Best | 0.00072849 | 8.9874 | 0.00072849 | 0.00073116 | 1.1738e-08 | logistic | | 6 | Accept | 0.00085519 | 8.9501 | 0.00072849 | 0.00073307 | 2.5065e-09 | svm | | 7 | Accept | 0.00079184 | 10.705 | 0.00072849 | 0.00073512 | 3.212e-08 | svm | | 8 | Accept | 0.00088686 | 10.281 | 0.00072849 | 0.00073791 | 3.1717e-10 | svm | | 9 | Accept | 0.00076017 | 8.9367 | 0.00072849 | 0.00070971 | 3.1837e-10 | logistic | | 10 | Accept | 0.00079184 | 15.805 | 0.00072849 | 0.0006934 | 2.2804e-07 | logistic | | 11 | Accept | 0.00072849 | 7.5213 | 0.00072849 | 0.00067177 | 5.8465e-08 | logistic | | 12 | Accept | 0.00079184 | 7.7882 | 0.00072849 | 0.00067223 | 1.1295e-07 | svm | | 13 | Best | 0.00069682 | 8.2314 | 0.00069682 | 0.00068288 | 6.1059e-08 | logistic | | 14 | Accept | 0.00069682 | 10.229 | 0.00069682 | 0.00068745 | 6.322e-08 | logistic | | 15 | Accept | 0.00072849 | 12.064 | 0.00069682 | 0.00068818 | 9.2613e-10 | logistic | | 16 | Accept | 0.00069682 | 11.695 | 0.00069682 | 0.00069047 | 6.6793e-08 | logistic | | 17 | Accept | 0.00072849 | 7.655 | 0.00069682 | 0.00069075 | 3.21e-10 | logistic | | 18 | Accept | 0.0012353 | 11.986 | 0.00069682 | 0.00069811 | 0.00083275 | svm | | 19 | Accept | 0.00076017 | 11.395 | 0.00069682 | 0.00069953 | 5.0781e-05 | svm | | 20 | Accept | 0.00085519 | 8.1292 | 0.00069682 | 0.00070008 | 0.00022104 | svm | |=====================================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | Lambda | Learner | | | result | | runtime | (observed) | (estim.) | | | |=====================================================================================================| | 21 | Accept | 0.00082351 | 13.535 | 0.00069682 | 0.00069992 | 4.5396e-06 | svm | | 22 | Accept | 0.0010769 | 27.561 | 0.00069682 | 0.00070804 | 4.9241e-06 | logistic | | 23 | Accept | 0.0010136 | 33.915 | 0.00069682 | 0.00070353 | 1.2534e-06 | logistic | | 24 | Accept | 0.00072849 | 7.8882 | 0.00069682 | 0.00070517 | 2.4564e-08 | logistic | | 25 | Accept | 0.00088686 | 10.864 | 0.00069682 | 0.00070528 | 1.6498e-05 | svm | | 26 | Accept | 0.00085519 | 8.7177 | 0.00069682 | 0.00070534 | 1.1571e-06 | svm | | 27 | Accept | 0.00079184 | 6.7623 | 0.00069682 | 0.00070543 | 1.021e-08 | svm | | 28 | Accept | 0.00076017 | 7.0401 | 0.00069682 | 0.00070556 | 6.9444e-10 | logistic | | 29 | Accept | 0.00076017 | 8.3586 | 0.00069682 | 0.00070535 | 5.7627e-09 | logistic | | 30 | Accept | 0.00076017 | 8.1972 | 0.00069682 | 0.00071141 | 3.123e-08 | logistic |
__________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 369.5861 seconds Total objective function evaluation time: 327.2462 Best observed feasible point: Lambda Learner __________ ________ 6.1059e-08 logistic Observed objective function value = 0.00069682 Estimated objective function value = 0.00071146 Function evaluation time = 8.2314 Best estimated feasible point (according to models): Lambda Learner __________ ________ 5.8465e-08 logistic Estimated objective function value = 0.00071141 Estimated function evaluation time = 9.4912
Mdl = ClassificationLinear ResponseName: 'Y' ClassNames: [0 1] ScoreTransform: 'logit' Beta: [34023x1 double] Bias: -9.8590 Lambda: 5.8465e-08 Learner: 'logistic' Properties, Methods
X
- Данные предиктораДанные предиктора, заданные как n -by p полная или разреженная матрица.
Длина Y
и количество наблюдений в X
должно быть равным.
Примечание
Если вы ориентируете матрицу предиктора так, чтобы наблюдения соответствовали столбцам и задавали 'ObservationsIn','columns'
, тогда вы можете испытать значительное сокращение времени выполнения оптимизации.
Типы данных: single
| double
Y
- Метки классовМетки класса, к которым обучена модель классификации, заданные как категориальные символьные или строковые массивы, логический или числовой вектор или массив ячеек из векторов символов.
fitclinear
поддерживает только двоичную классификацию. Либо Y
должен содержать ровно два различных класса, или необходимо задать два класса для обучения с помощью 'ClassNames'
аргумент пары "имя-значение". Для многоклассового обучения см. fitcecoc
.
Если Y
является символьный массив, тогда каждый элемент должен соответствовать одной строке массива.
Длина Y
должно быть равно количеству наблюдений в X
или Tbl
.
Хорошей практикой является определение порядка классов с помощью ClassNames
аргумент пары "имя-значение".
Типы данных: char
| string
| cell
| categorical
| logical
| single
| double
Tbl
- Выборочные данныеВыборочные данные, используемых для обучения модели, заданная как таблица. Каждая строка Tbl
соответствует одному наблюдению, и каждый столбец соответствует одной переменной предиктора. Опционально Tbl
может содержать один дополнительный столбец для переменной отклика. Многополюсные переменные и массивы ячеек, отличные от массивов ячеек векторов символов, не разрешены.
Если Tbl
содержит переменную отклика, и необходимо использовать все оставшиеся переменные в Tbl
в качестве предикторов, затем задайте переменную отклика при помощи ResponseVarName
.
Если Tbl
содержит переменную отклика, и необходимо использовать только подмножество остальных переменных в Tbl
в качестве предикторов задайте формулу при помощи formula
.
Если Tbl
не содержит переменную отклика, затем задает переменную отклика при помощи Y
. Длина переменной отклика и количество строк в Tbl
должно быть равным.
Типы данных: table
ResponseVarName
- Имя переменной откликаTbl
Имя переменной отклика, заданное как имя переменной в Tbl
.
Вы должны задать ResponseVarName
как вектор символов или строковый скаляр. Для примера, если переменная отклика Y
хранится как Tbl.Y
, затем укажите его следующим 'Y'
. В противном случае программное обеспечение обрабатывает все столбцы Tbl
, включая Y
, как предикторы при обучении модели.
Переменная отклика должна быть категориальными символьными или строковыми массивами; логический или числовой вектор; или массив ячеек из векторов символов. Если Y
является символьным массивом, тогда каждый элемент переменной отклика должен соответствовать одной строке массива.
Хорошей практикой является определение порядка классов при помощи ClassNames
аргумент имя-значение.
Типы данных: char
| string
formula
- Объяснительная модель переменной отклика и подмножества переменных предиктораОбъяснительная модель переменной отклика и подмножества переменных предиктора, заданная в виде вектора символов или строкового скаляра в форме 'Y~x1+x2+x3'
. В этой форме Y
представляет переменную отклика, и x1
, x2
, и x3
представляют переменные предиктора.
Чтобы задать подмножество переменных в Tbl
в качестве предикторов для настройки модели используйте формулу. Если вы задаете формулу, то программное обеспечение не использует никаких переменных в Tbl
которые не появляются в formula
.
Имена переменных в формуле должны быть обоими именами переменных в Tbl
(Tbl.Properties.VariableNames
) и действительный MATLAB® идентификаторы. Можно проверить имена переменных в Tbl
при помощи isvarname
функция. Если имена переменных недопустимы, можно преобразовать их, используя matlab.lang.makeValidName
функция.
Типы данных: char
| string
Примечание
Программное обеспечение лечит NaN
, пустой символьный вектор (''
), пустая строка (""
), <missing>
, и <undefined>
элементы как отсутствующие значения и удаляет наблюдения с любой из этих характеристик:
Отсутствующее значение в переменной отклика (для примера, Y
или ValidationData
{2}
)
По крайней мере, одно отсутствующее значение в наблюдении предиктора (для примера, строка в X
или ValidationData{1}
)
NaN
значение или 0
вес (для примера, значение в Weights
или ValidationData{3}
)
Для экономии использования памяти лучшей практики удалить наблюдения, содержащие отсутствующие значения, из обучающих данных вручную перед обучением.
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. 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 размер обучающей выборки.
Для вектора неотрицательных значений, fitclinear
последовательно оптимизирует целевую функцию для каждого отдельного значения в Lambda
в порядке возрастания.
Если Solver
является 'sgd'
или 'asgd'
и Regularization
является 'lasso'
, fitclinear
не использует предыдущие оценки коэффициентов в качестве теплого начала для следующей итерации оптимизации. В противном случае, fitclinear
использует теплые старты.
Если Regularization
является 'lasso'
, тогда любая оценка коэффициента 0 сохраняет свое значение, когда fitclinear
оптимизирует использование последующих значений в Lambda
.
fitclinear
возвращает оценки коэффициентов для каждой заданной степени регуляризации.
Пример: 'Lambda',10.^(-(10:-2:2))
Типы данных: char
| string
| double
| single
'Learner'
- Тип линейной классификационной модели'svm'
(по умолчанию) | 'logistic'
Тип модели линейной классификации, заданный как разделенная разделенными запятой парами, состоящая из 'Learner'
и 'svm'
или 'logistic'
.
В этой таблице,
β является вектором p коэффициентов.
x является наблюдением от p переменных предиктора.
b - скалярное смещение.
Значение | Алгоритм | Область значений отклика | Функция потерь |
---|---|---|---|
'svm' | Поддерживайте векторную машину | <reservedrangesplaceholder0> {-1,1}; 1 для положительного класса и -1 в противном случае | Шарнир: |
'logistic' | Логистическая регрессия | То же, что и 'svm' | Отклонение (логистическое): |
Пример: 'Learner','logistic'
'ObservationsIn'
- размерность наблюдения данных предиктора'rows'
(по умолчанию) | 'columns'
Размерность наблюдения данных предиктора, заданная как 'rows'
или 'columns'
.
Примечание
Если вы ориентируете матрицу предиктора так, чтобы наблюдения соответствовали столбцам и задавали 'ObservationsIn','columns'
, тогда вы можете испытать значительное сокращение времени расчета. Вы не можете задать 'ObservationsIn','columns'
для данных предиктора в таблице.
Пример: 'ObservationsIn','columns'
Типы данных: char
| string
'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) [4][2] | |
'asgd' | Средний стохастический градиентный спуск (ASGD) [7] | |
'dual' | Двойной SGD для SVM- [1][6] | Regularization должен быть 'ridge' и Learner должен быть 'svm' . |
'bfgs' | Алгоритм Бройдена-Флетчера-Голдфарба-Шанно квази-Ньютона (BFGS) [3] | Неэффективный, если X очень высоко-размерный. |
'lbfgs' | BFGS (LBFGS) с ограниченной памятью [3] | Regularization должен быть 'ridge' . |
'sparsa' | Разреженная реконструкция с помощью разделяемого приближения (SpaRSA) [5] | Regularization должен быть 'lasso' . |
Если вы задаете:
Штраф за хребет (см. Regularization
) и X
содержит 100 или менее переменных предиктора, тогда решатель по умолчанию 'bfgs'
.
Модель SVM (см Learner
), штраф за хребет и X
содержит более 100 переменных предиктора, тогда решатель по умолчанию 'dual'
.
Лассо штраф и X
содержит 100 или менее переменных предиктора, тогда решатель по умолчанию 'sparsa'
.
В противном случае решатель по умолчанию является 'sgd'
.
Если вы задаете строковые массивы или массив ячеек из имен решателей, то программа использует все решатели в заданном порядке для каждого Lambda
.
Для получения дополнительной информации о том, какой решатель выбрать, смотрите Советы.
Пример: 'Solver',{'sgd','lbfgs'}
'Beta'
- Начальные оценки линейных коэффициентовнули (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, если Y
является положительным классом и -1 в противном случае. (j
)Bias
- взвешенное среднее значение g для обучения или, для перекрестной валидации, в кратном выражении.
Если Learner
является 'svm'
, затем Bias
равен 0.
Типы данных: single
| double
'FitBias'
- флаг включения линейной модели точки пересеченияtrue
(по умолчанию) | false
Флаг включения линейной модели точки пересечения, заданный как разделенная разделенными запятой парами, состоящая из 'FitBias'
и true
или false
.
Значение | Описание |
---|---|
true | Программное обеспечение включает термин смещения, b в линейной модели, и затем оценивает его. |
false | Программное обеспечение устанавливает b = 0 во время оценки. |
Пример: 'FitBias',false
Типы данных: logical
'PostFitBias'
- Флаг для соответствия линейной точке пересечения модели после оптимизацииfalse
(по умолчанию) | true
Флаг для подгонки линейной точки пересечения модели после оптимизации, заданный как разделенная разделенными запятой парами, состоящая из 'PostFitBias'
и true
или false
.
Значение | Описание |
---|---|
false | Программа оценивает срок смещения b и коэффициенты, β во время оптимизации. |
true |
Чтобы оценить b, программное обеспечение:
|
Если вы задаете true
, затем FitBias
должно быть true.
Пример: 'PostFitBias',true
Типы данных: logical
'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 .fitclinear
определяет скорость обучения для 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
Типы данных: logical
'TruncationPeriod'
- Количество мини-пакетов между запусками усечения лассо10
(по умолчанию) | положительное целое числоКоличество мини-пакетов между запусками усечения lasso, заданное как разделенная разделенными запятой парами, состоящая из 'TruncationPeriod'
и положительное целое число.
После выполнения усечения программное обеспечение применяет мягкий порог к линейным коэффициентам. То есть после обработки k = TruncationPeriod
мини-пакеты, программное обеспечение обрезает предполагаемый коэффициент j используя
Для SGD, - оценка коэффициентного j после обработки k мини-пакетов. γt - скорость обучения в t итерации. λ - значение Lambda
.
Для ASGD, - усредненный оценочный коэффициент, j после обработки k мини-пакетов,
Если Regularization
является 'ridge'
, затем программное обеспечение игнорирует TruncationPeriod
.
Пример: 'TruncationPeriod',100
Типы данных: single
| double
'CategoricalPredictors'
- Категориальный список предикторов'all'
Категориальный список предикторов, заданный как одно из значений в этой таблице. Описания предполагают, что данные предиктора имеют наблюдения в строках и предикторы в столбцах.
Значение | Описание |
---|---|
Вектор положительных целых чисел |
Каждая запись в векторе является индексом значением, соответствующим столбцу данных предиктора, который содержит категориальную переменную. Значения индекса находятся между 1 и Если |
Логический вектор |
A |
Матрица символов | Каждая строка матрицы является именем переменной. Имена должны совпадать с записями в PredictorNames . Дополните имена дополнительными пробелами, чтобы каждая строка матрицы символов имела одинаковую длину. |
Строковые массивы или массив ячеек векторов символов | Каждый элемент массива является именем переменной. Имена должны совпадать с записями в PredictorNames . |
'all' | Все предикторы категоричны. |
По умолчанию, если данные предиктора находятся в таблице (Tbl
), fitclinear
принимает, что переменная категориальна, если это логический вектор, категориальный вектор, символьный массив, строковые массивы или массив ячеек из векторов символов. Если данные предиктора являются матрицей (X
), fitclinear
принимает, что все предикторы непрерывны. Чтобы идентифицировать любые другие предикторы как категориальные предикторы, задайте их с помощью 'CategoricalPredictors'
аргумент имя-значение.
Для идентифицированных категориальных предикторов, fitclinear
создает фиктивные переменные с помощью двух различных схем, в зависимости от того, является ли категориальная переменная неупорядоченной или упорядоченной. Для неупорядоченной категориальной переменной, fitclinear
создает одну фиктивную переменную для каждого уровня категориальной переменной. Для упорядоченной категориальной переменной, fitclinear
создает одну переменную с меньшим количеством манекенов, чем количество категорий. Для получения дополнительной информации смотрите Автоматическое создание переменных манекена.
Пример: 'CategoricalPredictors','all'
Типы данных: single
| double
| logical
| char
| string
| cell
'ClassNames'
- Имена классов, используемых для обученияИмена классов, используемых для обучения, заданные как категориальные символьные или строковые массивы; логический или числовой вектор; или массив ячеек из векторов символов. ClassNames
должен иметь тот совпадающий тип данных, что и переменная отклика в Tbl
или Y
.
Если ClassNames
является символьный массив, тогда каждый элемент должен соответствовать одной строке массива.
Использование ClassNames
кому:
Задайте порядок классов во время обучения.
Задайте порядок любой размерности входного или выходного аргумента, которая соответствует порядку классов. Для примера используйте ClassNames
для определения порядка размерностей Cost
или порядок столбцов классификационных оценок, возвращаемых predict
.
Выберите подмножество классов для обучения. Например, предположим, что набор всех различных имен классов в Y
является {'a','b','c'}
. Чтобы обучить модель с помощью наблюдений из классов 'a'
и 'c'
только, задайте 'ClassNames',{'a','c'}
.
Значение по умолчанию для ClassNames
- набор всех различных имен классов в переменной отклика в Tbl
или Y
.
Пример: 'ClassNames',{'b','g'}
Типы данных: categorical
| char
| string
| logical
| single
| double
| cell
'Cost'
- Расходы на неправильную классификациюСтоимость неправильной классификации, заданная как разделенная разделенными запятой парами, состоящая из 'Cost'
и квадратную матрицу или структуру.
Если вы задаете квадратную матрицу cost
('Cost',cost
), затем cost(i,j)
- стоимость классификации точки в класс j
если его класс true i
. То есть строки соответствуют истинному классу, а столбцы соответствуют предсказанному классу. Чтобы задать порядок классов для соответствующих строк и столбцов cost
, используйте ClassNames
аргумент пары "имя-значение".
Если вы задаете структуру S
('Cost',S
), тогда оно должно иметь два поля:
S.ClassNames
, который содержит имена классов как переменный совпадающий тип данных as Y
S.ClassificationCosts
, которая содержит матрицу затрат со строками и столбцами, упорядоченными как в S.ClassNames
Значение по умолчанию для Cost
это таковые
, где (K
) - глаз (K
)K
- количество различных классов.
fitclinear
использует Cost
для корректировки вероятностей предыдущего класса, заданных в Prior
. Затем, fitclinear
использует скорректированные предыдущие вероятности для обучения и сбрасывает матрицу затрат в значение по умолчанию.
Пример: 'Cost',[0 2; 1 0]
Типы данных: single
| double
| struct
'PredictorNames'
- Имена переменных предиктораИмена переменных предиктора, заданные как строковые массивы уникальных имен или массив ячеек из уникальных векторов символов. Функциональность 'PredictorNames'
зависит от способа предоставления обучающих данных.
Если вы поставляете X
и Y
, тогда можно использовать 'PredictorNames'
для назначения имен переменным предиктора в X
.
Порядок имен в PredictorNames
должен соответствовать порядку предиктора в X
. Принимая, что X
имеет ориентацию по умолчанию, с наблюдениями в строках и предикторами в столбцах, PredictorNames{1}
- имя X(:,1)
, PredictorNames{2}
- имя X(:,2)
и так далее. Кроме того, size(X,2)
и numel(PredictorNames)
должно быть равным.
По умолчанию PredictorNames
является {'x1','x2',...}
.
Если вы поставляете Tbl
, тогда можно использовать 'PredictorNames'
выбрать, какие переменные предиктора использовать в обучении. То есть, fitclinear
использует только переменные предиктора в PredictorNames
и переменной отклика во время обучения.
PredictorNames
должен быть подмножеством Tbl.Properties.VariableNames
и не может включать имя переменной отклика.
По умолчанию PredictorNames
содержит имена всех переменных предиктора.
Хорошей практикой является определение предикторов для обучения с использованием любой из 'PredictorNames'
или formula
, но не то и другое.
Пример: 'PredictorNames',{'SepalLength','SepalWidth','PetalLength','PetalWidth'}
Типы данных: string
| cell
'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
'ResponseName'
- Имя переменной отклика'Y'
(по умолчанию) | символьный вектор | строковый скалярИмя переменной отклика, заданное как вектор символов или строковый скаляр.
Если вы поставляете Y
, тогда можно использовать 'ResponseName'
чтобы задать имя для переменной отклика.
Если вы поставляете ResponseVarName
или formula
, тогда вы не можете использовать 'ResponseName'
.
Пример: 'ResponseName','response'
Типы данных: char
| string
'ScoreTransform'
- Преобразование счета'none'
(по умолчанию) | 'doublelogit'
| 'invlogit'
| 'ismax'
| 'logit'
| указатель на функцию |...Преобразование счета, заданное как вектор символов, строковый скаляр или указатель на функцию.
В этой таблице результирующие векторы символов и строковые скаляры.
Значение | Описание |
---|---|
'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' | 2 x – 1 |
'symmetricismax' | Устанавливает счет для класса с самым большим счетом равным 1 и устанавливает счета для всех других классов равной -1 |
'symmetriclogit' | 2/(1 + e–x) – 1 |
Для функции MATLAB или функции, которую вы задаете, используйте указатель на функцию для преобразования счета. Указатель на функцию должен принять матрицу (исходные счета) и вернуть матрицу того же размера (преобразованные счета).
Пример: 'ScoreTransform','logit'
Типы данных: char
| string
| function_handle
'Weights'
- Веса наблюденийTbl
Веса наблюдений, заданные как неотрицательный числовой вектор или имя переменной в Tbl
. Программа взвешивает каждое наблюдение в X
или Tbl
с соответствующим значением в Weights
. Длина Weights
должно равняться количеству наблюдений в X
или Tbl
.
Если вы задаете входные данные как таблицу Tbl
, затем Weights
может быть именем переменной в Tbl
который содержит числовой вектор. В этом случае необходимо задать Weights
как вектор символов или строковый скаляр. Для примера, если вектор весов W
хранится как Tbl.W
, затем укажите его следующим 'W'
. В противном случае программное обеспечение обрабатывает все столбцы Tbl
, включая W
, как предикторы или переменная отклика при обучении модели.
По умолчанию Weights
является ones(n,1)
, где n
количество наблюдений в X
или Tbl
.
Программное обеспечение нормализует Weights
суммировать к значению предшествующей вероятности в соответствующем классе.
Типы данных: single
| double
| char
| string
'CrossVal'
- флаг перекрестной валидации'off'
(по умолчанию) | 'on'
Флаг перекрестной проверки, заданный как разделенная разделенными запятой парами, состоящая из 'Crossval'
и 'on'
или 'off'
.
Если вы задаете 'on'
затем программное обеспечение реализует 10-кратную перекрестную валидацию.
Чтобы переопределить этот параметр перекрестной проверки, используйте один из следующих аргументов пары "имя-значение": CVPartition
, Holdout
, или KFold
. Чтобы создать перекрестно проверенную модель, можно использовать один аргумент пары "имя-значение" перекрестной валидации только за раз.
Пример: 'Crossval','on'
'CVPartition'
- Раздел перекрестной проверки[]
(по умолчанию) | cvpartition
Объект разделаРаздел перекрестной проверки, заданный как разделенная разделенными запятой парами, состоящая из 'CVPartition'
и a cvpartition
Объект раздела, созданный cvpartition
. Объект раздела задает тип перекрестной проверки, а также индексацию для наборов обучения и валидации.
Чтобы создать перекрестно проверенную модель, можно использовать только одну из следующих четырех опций: '
CVPartition
'
, '
Holdout
'
, или '
KFold
'
.
'Holdout'
- Доля данных для валидации отключенияДоля данных, используемых для валидации типа «holdout», заданная как разделенная разделенными запятой парами, состоящая из 'Holdout'
и скалярное значение в области значений (0,1). Если вы задаете 'Holdout',
, затем программное обеспечение: p
Случайные резервы
% данных в качестве данных валидации и обучает модель, используя остальную часть данных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
пакеты, это прекращает оптимизацию.
По умолчанию:
Если вы задаете '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
как таблица, если вы используете таблицу Tbl
данных предиктора, который содержит переменную отклика. В этом случае ValidationData
должны содержать те же предикторы и ответ, содержащиеся в Tbl
. Программа не применяет веса к наблюдениям, даже если Tbl
содержит вектор весов. Чтобы задать веса, вы должны задать ValidationData
как массив ячеек.
Если вы задаете ValidationData
в качестве массива ячеек он должен иметь следующий формат:
ValidationData{1}
должны иметь совпадающий тип данных и ориентацию в качестве данных предиктора. То есть, если вы используете матрицу предиктора X
, затем ValidationData{1}
должен быть m -by - p или p -by - m полной или разреженной матрицей данных предиктора, которая имеет ту же ориентацию, что и X
. Переменные предиктора в обучающих данных X
и ValidationData{1}
должен соответствовать. Точно так же, если вы используете таблицу предикторов Tbl
данных предиктора, затем ValidationData{1}
должна быть таблицей, содержащей те же переменные предиктора, которые содержатся в Tbl
. Количество наблюдений в ValidationData{1}
и данные предиктора могут варьироваться.
ValidationData{2}
должен совпадать с типом данных и форматом переменной отклика, либо Y
или ResponseVarName
. Если ValidationData{2}
- массив меток классов, тогда он должен иметь то же количество элементов, что и количество наблюдений в ValidationData{1}
. Набор всех различных меток ValidationData{2}
должен быть подмножеством всех различных меток Y
. Если ValidationData{1}
является таблицей, тогда ValidationData{2}
может быть именем переменной отклика в таблице. Если вы хотите использовать ту же ResponseVarName
или formula
, можно задать ValidationData{2}
как []
.
Опционально можно задать ValidationData{3}
как m -мерный числовой вектор весов наблюдений или имя переменной в таблице ValidationData{1}
который содержит веса наблюдений. Программа нормирует веса с данными валидации так, чтобы их сумма равнялась 1.
Если вы задаете ValidationData
и хотите отобразить потерю валидации в командной строке, задайте значение, больше 0 для Verbose
.
Если программное обеспечение сходится для последнего решателя, заданного в Solver
, затем оптимизация прекращается. В противном случае программное обеспечение использует следующий решатель, указанный в Solver
.
По умолчанию программное обеспечение не обнаруживает сходимость путем мониторинга потерь данных валидации.
'BetaTolerance'
- Относительная погрешность на линейные коэффициенты и термин смещения1e-4
(по умолчанию) | неотрицательной скаляромОтносительная погрешность на линейные коэффициенты и термин смещения ( точка пересечения), заданный как разделенная разделенными запятой парами, состоящая из 'BetaTolerance'
и неотрицательный скаляр.
Давайте , то есть вектор коэффициентов и член смещения при t итерации оптимизации. Если , затем оптимизация прекращается.
Если вы также задаете DeltaGradientTolerance
затем оптимизация прекращается, когда программное обеспечение удовлетворяет любому критерию остановки.
Если программное обеспечение сходится для последнего решателя, заданного в Solver
, затем оптимизация прекращается. В противном случае программное обеспечение использует следующий решатель, указанный в Solver
.
Пример: 'BetaTolerance',1e-6
Типы данных: single
| double
'DeltaGradientTolerance'
- Отклонение разности градиентов1
(по умолчанию) | неотрицательной скаляромДопуск градиента-разности между верхним и нижним бассейном Каруш-Кун-Такер (KKT) нарушители условий комплементарности, заданный как разделенная разделенными запятой парами, состоящая из 'DeltaGradientTolerance'
и неотрицательный скаляр.
Если величина нарушителей ККТ меньше 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
как таблица, если вы используете таблицу Tbl
данных предиктора, который содержит переменную отклика. В этом случае ValidationData
должны содержать те же предикторы и ответ, содержащиеся в Tbl
. Программа не применяет веса к наблюдениям, даже если Tbl
содержит вектор весов. Чтобы задать веса, вы должны задать ValidationData
как массив ячеек.
Если вы задаете ValidationData
в качестве массива ячеек он должен иметь следующий формат:
ValidationData{1}
должны иметь совпадающий тип данных и ориентацию в качестве данных предиктора. То есть, если вы используете матрицу предиктора X
, затем ValidationData{1}
должен быть m -by - p или p -by - m полной или разреженной матрицей данных предиктора, которая имеет ту же ориентацию, что и X
. Переменные предиктора в обучающих данных X
и ValidationData{1}
должен соответствовать. Точно так же, если вы используете таблицу предикторов Tbl
данных предиктора, затем ValidationData{1}
должна быть таблицей, содержащей те же переменные предиктора, которые содержатся в Tbl
. Количество наблюдений в ValidationData{1}
и данные предиктора могут варьироваться.
ValidationData{2}
должен совпадать с типом данных и форматом переменной отклика, либо Y
или ResponseVarName
. Если ValidationData{2}
- массив меток классов, тогда он должен иметь то же количество элементов, что и количество наблюдений в ValidationData{1}
. Набор всех различных меток ValidationData{2}
должен быть подмножеством всех различных меток Y
. Если ValidationData{1}
является таблицей, тогда ValidationData{2}
может быть именем переменной отклика в таблице. Если вы хотите использовать ту же ResponseVarName
или formula
, можно задать ValidationData{2}
как []
.
Опционально можно задать ValidationData{3}
как m -мерный числовой вектор весов наблюдений или имя переменной в таблице ValidationData{1}
который содержит веса наблюдений. Программа нормирует веса с данными валидации так, чтобы их сумма равнялась 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
(по умолчанию) | положительное целое числоРазмер буфера истории для Hessian приближения, заданный как разделенная запятой пара, состоящий из 'HessianHistorySize'
и положительное целое число. То есть на каждой итерации программное обеспечение составляет Hessian, используя статистику последних HessianHistorySize
итераций.
Программное обеспечение не поддерживает 'HessianHistorySize'
для SpaRSA.
Пример: 'HessianHistorySize',10
Типы данных: single
| double
'IterationLimit'
- Максимальное количество итераций оптимизации1000
(по умолчанию) | положительное целое числоМаксимальное количество итераций оптимизации, заданное как разделенная разделенными запятой парами, состоящая из 'IterationLimit'
и положительное целое число. IterationLimit
применяется к этим значениям Solver
: 'bfgs'
, 'lbfgs'
, и 'sparsa'
.
Пример: 'IterationLimit',500
Типы данных: single
| double
'ValidationData'
- Данные валидации для обнаружения сходимости оптимизацииДанные валидации для обнаружения сходимости оптимизации, заданные как разделенная разделенными запятой парами, состоящая из 'ValidationData'
и массив ячеек или таблица.
Во время оптимизации программное обеспечение периодически оценивает потерю ValidationData
. Если потеря данных валидации увеличивается, то программное обеспечение прекращает оптимизацию. Для получения дополнительной информации см. «Алгоритмы». Чтобы оптимизировать гиперпараметры с помощью перекрестной валидации, смотрите опции перекрестной валидации, такие как CrossVal
.
Можно задать ValidationData
как таблица, если вы используете таблицу Tbl
данных предиктора, который содержит переменную отклика. В этом случае ValidationData
должны содержать те же предикторы и ответ, содержащиеся в Tbl
. Программа не применяет веса к наблюдениям, даже если Tbl
содержит вектор весов. Чтобы задать веса, вы должны задать ValidationData
как массив ячеек.
Если вы задаете ValidationData
в качестве массива ячеек он должен иметь следующий формат:
ValidationData{1}
должны иметь совпадающий тип данных и ориентацию в качестве данных предиктора. То есть, если вы используете матрицу предиктора X
, затем ValidationData{1}
должен быть m -by - p или p -by - m полной или разреженной матрицей данных предиктора, которая имеет ту же ориентацию, что и X
. Переменные предиктора в обучающих данных X
и ValidationData{1}
должен соответствовать. Точно так же, если вы используете таблицу предикторов Tbl
данных предиктора, затем ValidationData{1}
должна быть таблицей, содержащей те же переменные предиктора, которые содержатся в Tbl
. Количество наблюдений в ValidationData{1}
и данные предиктора могут варьироваться.
ValidationData{2}
должен совпадать с типом данных и форматом переменной отклика, либо Y
или ResponseVarName
. Если ValidationData{2}
- массив меток классов, тогда он должен иметь то же количество элементов, что и количество наблюдений в ValidationData{1}
. Набор всех различных меток ValidationData{2}
должен быть подмножеством всех различных меток Y
. Если ValidationData{1}
является таблицей, тогда ValidationData{2}
может быть именем переменной отклика в таблице. Если вы хотите использовать ту же ResponseVarName
или formula
, можно задать ValidationData{2}
как []
.
Опционально можно задать ValidationData{3}
как m -мерный числовой вектор весов наблюдений или имя переменной в таблице ValidationData{1}
который содержит веса наблюдений. Программа нормирует веса с данными валидации так, чтобы их сумма равнялась 1.
Если вы задаете ValidationData
и хотите отобразить потерю валидации в командной строке, задайте значение, больше 0 для Verbose
.
Если программное обеспечение сходится для последнего решателя, заданного в Solver
, затем оптимизация прекращается. В противном случае программное обеспечение использует следующий решатель, указанный в Solver
.
По умолчанию программное обеспечение не обнаруживает сходимость путем мониторинга потерь данных валидации.
'OptimizeHyperparameters'
- Параметры для оптимизации'none'
(по умолчанию) | 'auto'
| 'all'
| строковые массивы или массив ячеек из допустимых имен параметров | вектор optimizableVariable
объектыОптимизируемые параметры, заданные как разделенная разделенными запятой парами, состоящая из 'OptimizeHyperparameters'
и одно из следующих:
'none'
- Не оптимизировать.
'auto'
- Использовать {'Lambda','Learner'}
.
'all'
- Оптимизируйте все подходящие параметры.
Строковые массивы или массив ячеек с допустимыми именами параметров.
Вектор optimizableVariable
объекты, как правило, выходные данные hyperparameters
.
Оптимизация пытается минимизировать потери перекрестной валидации (ошибка) для fitclinear
путем изменения параметров. Для получения информации о потерях при перекрестной проверке (хотя и в другом контексте), смотрите Классификационные потери. Чтобы контролировать тип перекрестной валидации и другие аспекты оптимизации, используйте HyperparameterOptimizationOptions
Пара "имя-значение".
Примечание
'OptimizeHyperparameters'
значения переопределяют все значения, которые вы устанавливаете, используя другие аргументы пары "имя-значение". Для примера установка 'OptimizeHyperparameters'
на 'auto'
вызывает 'auto'
значения для применения.
Подходящие параметры для fitclinear
являются:
Lambda
— fitclinear
поиск среди положительных значений, по умолчанию логарифмический в области значений [1e-5/NumObservations,1e5/NumObservations]
.
Learner
— fitclinear
поиск среди 'svm'
и 'logistic'
.
Regularization
— fitclinear
поиск среди 'ridge'
и 'lasso'
.
Установите параметры nondefault путем передачи вектора optimizableVariable
объекты, которые имеют значения nondefault. Для примера,
load fisheriris params = hyperparameters('fitclinear',meas,species); params(1).Range = [1e-4,1e6];
Передайте params
как значение OptimizeHyperparameters
.
По умолчанию итеративное отображение появляется в командной строке, и графики появляются согласно количеству гиперпараметров в оптимизации. Для оптимизации и графиков целевой функцией является журнал ( 1 + потери перекрестной валидации) для регрессии и коэффициент неправильной классификации для классификации. Чтобы управлять итеративным отображением, установите 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 | A cvpartition объект, созданный cvpartition . | 'Kfold',5 если вы не задаете какое-либо поле перекрестной проверки |
Holdout | Скаляр в области значений (0,1) представляющий фракцию удержания. | |
Kfold | Целое число, больше 1. |
Пример: 'HyperparameterOptimizationOptions',struct('MaxObjectiveEvaluations',60)
Типы данных: struct
Mdl
- Обученная модель линейной классификацииClassificationLinear
объект модели | ClassificationPartitionedLinear
перекрестно проверенный объект моделиОбученная модель линейной классификации, возвращенная как ClassificationLinear
объект модели
перекрестно проверенный объект модели.
Если вы задаете любой из аргументов пары "имя-значение" 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' | Таблица используемых гиперпараметров, наблюдаемых значений целевой функции (потери перекрестной валидации) и ранг наблюдений от самого низкого (лучшего) до самого высокого (худшего) |
A warm start является начальной оценкой бета-коэффициентов и условия смещения, поданные в стандартную программу оптимизации для более быстрого сходимости.
Высокомерные линейные модели классификации и регрессии минимизируют целевые функции относительно быстро, но за счет некоторой точности ограничение переменных предиктора только для числа и модель должна быть линейной относительно параметров. Если ваш набор данных предиктора низко- через среднюю размерность или содержит неоднородные переменные, то вам следует использовать соответствующую функцию подбора кривой классификации или регрессии. Чтобы помочь вам решить, какая функция подбора кривой подходит для вашего низкомерного набора данных, используйте эту таблицу.
Модель для подгонки | Функция | Заметные алгоритмические различия |
---|---|---|
SVM |
| |
Линейная регрессия |
| |
Логистическая регрессия |
|
Это - лучшая практика сориентировать матрицу предиктора так, чтобы наблюдения соответствовали столбцам, и задать 'ObservationsIn','columns'
. В результате можно испытать значительное сокращение времени оптимизации-выполнения.
Для лучшей точности оптимизации, когда у вас есть высокомерные данные предиктора и Regularization
значение 'ridge'
, установите любую из этих опций для Solver
:
'sgd'
'asgd'
'dual'
если Learner
является 'svm'
{'sgd','lbfgs'}
{'asgd','lbfgs'}
{'dual','lbfgs'}
если Learner
является 'svm'
Другие опции могут привести к плохой точности оптимизации.
Для лучшей точности оптимизации, когда у вас есть умеренно-низкомерные данные предиктора и Regularization
значение 'ridge'
, задать Solver
на 'bfgs'
.
Если Regularization
является 'lasso'
, установите любую из этих опций для Solver
:
'sgd'
'asgd'
'sparsa'
{'sgd','sparsa'}
{'asgd','sparsa'}
При выборе между SGD и ASGD примите к сведению, что:
SGD занимает меньше времени за итерацию, но для сходимости требуется больше итераций.
Для сходимости ASGD требуется меньше итераций, но требуется больше времени на итерацию.
Если ваши данные предиктора имеют мало наблюдений, но много переменных предиктора, то:
Задайте '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
(или Tbl
) в соответствии с выбранной процедурой перекрестной валидации.
fitclinear
обучает модель с помощью раздела обучающих данных. Во время оптимизации целевой функции, fitclinear
использует ValidationData
как еще один возможный способ завершения оптимизации (для получения дополнительной информации см. предыдущую пулю).
Однажды fitclinear
удовлетворяет критерию остановки, он строит обученную модель на основе оптимизированных линейных коэффициентов и точки пересечения.
Если вы реализуете k -кратную перекрестную валидацию, иfitclinear
не исчерпал все складки набора обучающих данных, тогда fitclinear
возвращается к шагу 2, чтобы обучиться с использованием следующего шага набора обучающих данных.
В противном случае, fitclinear
завершает обучение, а затем возвращает перекрестно проверенную модель.
Можно определить качество перекрестно проверенной модели. Для примера:
Чтобы определить потери валидации с помощью данных holdout или out-of-fold из шага 1, передайте перекрестно проверенную модель, чтобы kfoldLoss
.
Чтобы предсказать наблюдения за данными holdout или out-of-fold с шага 1, передайте перекрестно проверенную модель, чтобы kfoldPredict
.
[1] Hsieh, C. J., K. W. Chang, C. J. Лин, С. С. Кеерти и С. Сундарараджан. Метод двойного координатного спуска для крупномасштабного линейного SVM. Материалы 25-й Международной конференции по машинному обучению, ICML "08, 2001, стр. 408-415.
[2] Лэнгфорд, Дж., Л. Ли, и Т. Чжан. «Разреженное онлайн-обучение через усеченный градиент». Дж. Мач. Учись. Рес., том 10, 2009, стр. 777-801.
[3] Nocedal, J. and S. J. Wright. Численная оптимизация, 2-е изд., Нью-Йорк: Спрингер, 2006.
[4] Шалев-Шварц, С., Я. Сингер, и Н. Сребру. Pegasos: Primal Estimated Sub-Gradient Solver for SVM (неопр.) (недоступная ссылка). Материалы 24-й Международной конференции по машинному обучению, ICML "07, 2007, стр. 807-814.
[5] Райт, С. Дж., Р. Д. Новак, и М. А. Т. Фигейредо. «Разреженная реконструкция с помощью разделяемого приближения». Транс. Сиг. Proc., Том 57, № 7, 2009, стр. 2479-2493.
[6] Xiao, Lin. «Dual Aververaging Methods for Regularized Stochastic Learning and Online Optimization». Дж. Мач. Учись. Res., Vol. 11, 2010, pp. 2543-2596.
[7] Сюй, Вэй. «К оптимальной однопроходной большой Шкале обучению со средним стохастическим градиентным спуском». CoRR, abs/1107.2490, 2011.
Указания и ограничения по применению:
fitclinear
не поддерживает высокие table
данные.
Некоторые аргументы пары "имя-значение" имеют различные значения по умолчанию по сравнению со значениями по умолчанию для оперативной памяти 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'
- Для перекрестной валидации tall optimization поддерживает только 'Holdout'
валидация. По умолчанию программное обеспечение выбирает и резервирует 20% данных в качестве данных валидации удержания и обучает модель, используя остальную часть данных. Вы можете задать другое значение для задержанной дроби с помощью этого аргумента. Для примера задайте 'HyperparameterOptimizationOptions',struct('Holdout',0.3)
зарезервировать 30% данных в качестве данных валидации.
Для длинных массивов, fitclinear
реализует LBFGS путем распределения вычисления потерь и градиента между различными частями длинный массив при каждой итерации. Другие решатели недоступны для длинные массивы.
Когда начальные значения для Beta
и Bias
не даны, fitclinear
уточняет начальные оценки параметров путем локальной подгонки модели к частям данных и объединения коэффициентов путем усреднения.
Для получения дополнительной информации см. Раздел «Длинные массивы»
Чтобы выполнить параллельную оптимизацию гипероптимизации параметров управления, используйте 'HyperparameterOptimizationOptions', struct('UseParallel',true)
аргумент имя-значение в вызове этой функции.
Для получения дополнительной информации об оптимизации параллельной гипероптимизации параметров управления смотрите Parallel Bayesian Optimization.
Общие сведения о параллельных вычислениях см. в разделе Запуск функций MATLAB с поддержкой автоматических параллелей (Parallel Computing Toolbox).
ClassificationLinear
| ClassificationPartitionedLinear
| fitcecoc
| fitckernel
| fitcsvm
| fitglm
| fitrlinear
| kfoldLoss
| kfoldPredict
| lassoglm
| predict
| templateLinear
| testcholdout
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.