Подгонка линейной регрессионой модели к высоко-размерным данным
fitrlinear
эффективно обучает линейные регрессионые модели с высокомерными, полными или разреженными данными предиктора. Доступные линейные регрессионные модели включают регуляризованные машины опорных векторов (SVM) и методы регрессии методом наименьших квадратов. fitrlinear
минимизирует целевую функцию с помощью методов, которые сокращают время вычисления (например, стохастический градиентный спуск).
Для сокращения времени вычисления на высоко-размерном наборе данных, который включает много переменные, обучите линейную регрессионую модель при помощи fitrlinear
. Для наборов данных со средним и средним размерностями смотрите Альтернативы для нижних размерных данных.
возвращает линейную регрессионую модель, используя переменные предиктора в таблице Mdl
= fitrlinear(Tbl
,ResponseVarName
)Tbl
и значений отклика в Tbl.ResponseVarName
.
задает опции, использующие один или несколько аргументы пары "имя-значение" в дополнение к любой комбинации входных аргументов в предыдущих синтаксисах. Для примера можно задать перекрестную валидацию, реализацию регрессии методом наименьших квадратов или задать тип регуляризации. Хорошей практикой является перекрестная проверка с использованием Mdl
= fitrlinear(X
,Y
,Name,Value
)'Kfold'
аргумент пары "имя-значение". Результаты перекрестной валидации определяют, насколько хорошо обобщается модель.
[
также возвращает детали оптимизации гипероптимизации параметров управления, когда вы проходите Mdl
,FitInfo
,HyperparameterOptimizationResults
]
= fitrlinear(___)OptimizeHyperparameters
Пара "имя-значение".
Обучите линейную регрессионую модель с помощью SVM, двойной SGD и регуляризации гребня.
Симулируйте 10000 наблюдений из этой модели
является разреженной матрицей 10000 на 1000 с 10% ненулевыми стандартными нормальными элементами.
e - случайная нормальная ошибка со средним 0 и стандартным отклонением 0,3.
rng(1) % For reproducibility
n = 1e4;
d = 1e3;
nz = 0.1;
X = sprandn(n,d,nz);
Y = X(:,100) + 2*X(:,200) + 0.3*randn(n,1);
Обучите линейную регрессионую модель. По умолчанию fitrlinear
использует машины опорных векторов с хребтовой штрафной платой и оптимизирует использование двойного SGD для SVM. Определите, насколько хорошо алгоритм оптимизации соответствует модели данным, путем извлечения сводных данных подгонки.
[Mdl,FitInfo] = fitrlinear(X,Y)
Mdl = RegressionLinear ResponseName: 'Y' ResponseTransform: 'none' Beta: [1000x1 double] Bias: -0.0056 Lambda: 1.0000e-04 Learner: 'svm' Properties, Methods
FitInfo = struct with fields:
Lambda: 1.0000e-04
Objective: 0.2725
PassLimit: 10
NumPasses: 10
BatchLimit: []
NumIterations: 100000
GradientNorm: NaN
GradientTolerance: 0
RelativeChangeInBeta: 0.4907
BetaTolerance: 1.0000e-04
DeltaGradient: 1.5816
DeltaGradientTolerance: 0.1000
TerminationCode: 0
TerminationStatus: {'Iteration limit exceeded.'}
Alpha: [10000x1 double]
History: []
FitTime: 0.1253
Solver: {'dual'}
Mdl
является RegressionLinear
модель. Можно пройти Mdl
и обучающих или новых данных для loss
чтобы проверить среднюю квадратную ошибку в выборке. Или ты можешь пройти Mdl
и новые данные предиктора для predict
для предсказания ответов на новые наблюдения.
FitInfo
- массив структур, содержащий, помимо прочего, статус завершения (TerminationStatus
) и как долго решатель подгонял модель к данным (FitTime
). Передовой практикой является использование FitInfo
чтобы определить, являются ли измерения оптимизации-обрыв удовлетворительными. В этом случае fitrlinear
достигло максимального количества итераций. Поскольку время обучения быстро, можно переобучить модель, но увеличить количество проходов через данные. Или попробуйте другой решатель, такой как LBFGS.
Чтобы определить хорошую силу лассо-штрафа для линейной регрессионой модели, которая использует методом наименьших квадратов, реализуйте 5-кратную перекрестную валидацию.
Симулируйте 10000 наблюдений из этой модели
является разреженной матрицей 10000 на 1000 с 10% ненулевыми стандартными нормальными элементами.
e - случайная нормальная ошибка со средним 0 и стандартным отклонением 0,3.
rng(1) % For reproducibility
n = 1e4;
d = 1e3;
nz = 0.1;
X = sprandn(n,d,nz);
Y = X(:,100) + 2*X(:,200) + 0.3*randn(n,1);
Создайте набор из 15 логарифмически разнесенных сильных сторон регуляризации через .
Lambda = logspace(-5,-1,15);
Перекрестная проверка моделей. Чтобы увеличить скорость выполнения, транспонируйте данные предиктора и укажите, что наблюдения указаны в столбцах. Оптимизируйте целевую функцию с помощью SpaRSA.
X = X'; CVMdl = fitrlinear(X,Y,'ObservationsIn','columns','KFold',5,'Lambda',Lambda,... 'Learner','leastsquares','Solver','sparsa','Regularization','lasso'); numCLModels = numel(CVMdl.Trained)
numCLModels = 5
CVMdl
является RegressionPartitionedLinear
модель. Потому что fitrlinear
реализует 5-кратную перекрестную валидацию, CVMdl
содержит 5 RegressionLinear
модели, которые программное обеспечение обучает на каждой складке.
Отобразите первую обученную линейную регрессионую модель.
Mdl1 = CVMdl.Trained{1}
Mdl1 = RegressionLinear ResponseName: 'Y' ResponseTransform: 'none' Beta: [1000x15 double] Bias: [1x15 double] Lambda: [1x15 double] Learner: 'leastsquares' Properties, Methods
Mdl1
является RegressionLinear
объект модели. fitrlinear
построенные Mdl1
путем обучения на первых четырех складках. Потому что Lambda
последовательность регуляризационных сильных сторон, вы можете думать о Mdl1
как 15 моделей, по одной на каждую силу регуляризации в Lambda
.
Оцените перекрестно проверенный MSE.
mse = kfoldLoss(CVMdl);
Более высокие значения Lambda
привести к разреженности переменной предиктора, которая является хорошим качеством регрессионой модели. Для каждой силы регуляризации обучите линейную регрессионую модель, используя весь набор данных и те же опции, что и при перекрестной проверке моделей. Определите количество ненулевых коэффициентов на модель.
Mdl = fitrlinear(X,Y,'ObservationsIn','columns','Lambda',Lambda,... 'Learner','leastsquares','Solver','sparsa','Regularization','lasso'); numNZCoeff = sum(Mdl.Beta~=0);
На том же рисунке постройте график перекрестного проверки MSE и частоты ненулевых коэффициентов для каждой силы регуляризации. Постройте график всех переменных по шкале журнала.
figure [h,hL1,hL2] = plotyy(log10(Lambda),log10(mse),... log10(Lambda),log10(numNZCoeff)); hL1.Marker = 'o'; hL2.Marker = 'o'; ylabel(h(1),'log_{10} MSE') ylabel(h(2),'log_{10} nonzero-coefficient frequency') xlabel('log_{10} Lambda') hold off
Выберите индекс силы регуляризации, который балансирует переменную разреженности предиктора и низкий MSE (для примера, Lambda(10)
).
idxFinal = 10;
Извлеките модель с соответствующим минимальным MSE.
MdlFinal = selectModels(Mdl,idxFinal)
MdlFinal = RegressionLinear ResponseName: 'Y' ResponseTransform: 'none' Beta: [1000x1 double] Bias: -0.0050 Lambda: 0.0037 Learner: 'leastsquares' Properties, Methods
idxNZCoeff = find(MdlFinal.Beta~=0)
idxNZCoeff = 2×1
100
200
EstCoeff = Mdl.Beta(idxNZCoeff)
EstCoeff = 2×1
1.0051
1.9965
MdlFinal
является RegressionLinear
модель с одной силой регуляризации. Ненулевые коэффициенты EstCoeff
близки к коэффициентам, которые моделировали данные.
В этом примере показано, как автоматически оптимизировать гиперпараметры с помощью fitrlinear
. Пример использует искусственные (моделируемые) данные для модели
является разреженной матрицей 10000 на 1000 с 10% ненулевыми стандартными нормальными элементами.
e - случайная нормальная ошибка со средним 0 и стандартным отклонением 0,3.
rng(1) % For reproducibility
n = 1e4;
d = 1e3;
nz = 0.1;
X = sprandn(n,d,nz);
Y = X(:,100) + 2*X(:,200) + 0.3*randn(n,1);
Найдите гиперпараметры, которые минимизируют пятикратные потери на перекрестную валидацию с помощью автоматической оптимизации гипероптимизации параметров управления.
Для воспроизводимости используйте 'expected-improvement-plus'
функция сбора.
hyperopts = struct('AcquisitionFunctionName','expected-improvement-plus'); [Mdl,FitInfo,HyperparameterOptimizationResults] = fitrlinear(X,Y,... 'OptimizeHyperparameters','auto',... 'HyperparameterOptimizationOptions',hyperopts)
|=====================================================================================================| | Iter | Eval | Objective: | Objective | BestSoFar | BestSoFar | Lambda | Learner | | | result | log(1+loss) | runtime | (observed) | (estim.) | | | |=====================================================================================================| | 1 | Best | 0.16029 | 0.8393 | 0.16029 | 0.16029 | 2.4206e-09 | svm | | 2 | Best | 0.14496 | 0.55333 | 0.14496 | 0.14601 | 0.001807 | svm | | 3 | Best | 0.13879 | 0.42441 | 0.13879 | 0.14065 | 2.4681e-09 | leastsquares | | 4 | Best | 0.115 | 0.39828 | 0.115 | 0.11501 | 0.021027 | leastsquares | | 5 | Accept | 0.44352 | 0.41855 | 0.115 | 0.1159 | 4.6795 | leastsquares | | 6 | Best | 0.11025 | 0.46318 | 0.11025 | 0.11024 | 0.010671 | leastsquares | | 7 | Accept | 0.13222 | 0.41191 | 0.11025 | 0.11024 | 8.6067e-08 | leastsquares | | 8 | Accept | 0.13262 | 0.38611 | 0.11025 | 0.11023 | 8.5109e-05 | leastsquares | | 9 | Accept | 0.13543 | 0.38747 | 0.11025 | 0.11021 | 2.7562e-06 | leastsquares | | 10 | Accept | 0.15751 | 0.60115 | 0.11025 | 0.11022 | 5.0559e-06 | svm | | 11 | Accept | 0.40673 | 0.51909 | 0.11025 | 0.1102 | 0.52074 | svm | | 12 | Accept | 0.16057 | 0.62674 | 0.11025 | 0.1102 | 0.00014292 | svm | | 13 | Accept | 0.16105 | 0.54953 | 0.11025 | 0.11018 | 1.0079e-07 | svm | | 14 | Accept | 0.12763 | 0.42777 | 0.11025 | 0.11019 | 0.0012085 | leastsquares | | 15 | Accept | 0.13504 | 0.38913 | 0.11025 | 0.11019 | 1.3981e-08 | leastsquares | | 16 | Accept | 0.11041 | 0.4437 | 0.11025 | 0.11026 | 0.0093968 | leastsquares | | 17 | Best | 0.10954 | 0.40244 | 0.10954 | 0.11003 | 0.010393 | leastsquares | | 18 | Accept | 0.10998 | 0.42486 | 0.10954 | 0.11002 | 0.010254 | leastsquares | | 19 | Accept | 0.45314 | 0.53248 | 0.10954 | 0.11001 | 9.9966 | svm | | 20 | Best | 0.10753 | 0.6322 | 0.10753 | 0.10759 | 0.022576 | svm | |=====================================================================================================| | Iter | Eval | Objective: | Objective | BestSoFar | BestSoFar | Lambda | Learner | | | result | log(1+loss) | runtime | (observed) | (estim.) | | | |=====================================================================================================| | 21 | Best | 0.10737 | 0.64783 | 0.10737 | 0.10728 | 0.010171 | svm | | 22 | Accept | 0.13448 | 0.39942 | 0.10737 | 0.10727 | 1.5344e-05 | leastsquares | | 23 | Best | 0.10645 | 0.55045 | 0.10645 | 0.10565 | 0.015495 | svm | | 24 | Accept | 0.13598 | 0.39638 | 0.10645 | 0.10559 | 4.5984e-07 | leastsquares | | 25 | Accept | 0.15962 | 0.64705 | 0.10645 | 0.10556 | 1.4302e-08 | svm | | 26 | Accept | 0.10689 | 0.55033 | 0.10645 | 0.10616 | 0.015391 | svm | | 27 | Accept | 0.13748 | 0.39817 | 0.10645 | 0.10614 | 1.001e-09 | leastsquares | | 28 | Accept | 0.10692 | 0.5724 | 0.10645 | 0.10639 | 0.015761 | svm | | 29 | Accept | 0.10681 | 0.5118 | 0.10645 | 0.10649 | 0.015777 | svm | | 30 | Accept | 0.34314 | 0.39349 | 0.10645 | 0.10651 | 0.39671 | leastsquares |
__________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 55.5211 seconds Total objective function evaluation time: 14.899 Best observed feasible point: Lambda Learner ________ _______ 0.015495 svm Observed objective function value = 0.10645 Estimated objective function value = 0.10651 Function evaluation time = 0.55045 Best estimated feasible point (according to models): Lambda Learner ________ _______ 0.015777 svm Estimated objective function value = 0.10651 Estimated function evaluation time = 0.56915
Mdl = RegressionLinear ResponseName: 'Y' ResponseTransform: 'none' Beta: [1000x1 double] Bias: -0.0018 Lambda: 0.0158 Learner: 'svm' Properties, Methods
FitInfo = struct with fields:
Lambda: 0.0158
Objective: 0.2309
PassLimit: 10
NumPasses: 10
BatchLimit: []
NumIterations: 99989
GradientNorm: NaN
GradientTolerance: 0
RelativeChangeInBeta: 0.0641
BetaTolerance: 1.0000e-04
DeltaGradient: 1.1697
DeltaGradientTolerance: 0.1000
TerminationCode: 0
TerminationStatus: {'Iteration limit exceeded.'}
Alpha: [10000x1 double]
History: []
FitTime: 0.1001
Solver: {'dual'}
HyperparameterOptimizationResults = BayesianOptimization with properties: ObjectiveFcn: @createObjFcn/inMemoryObjFcn VariableDescriptions: [3x1 optimizableVariable] Options: [1x1 struct] MinObjective: 0.1065 XAtMinObjective: [1x2 table] MinEstimatedObjective: 0.1065 XAtMinEstimatedObjective: [1x2 table] NumObjectiveEvaluations: 30 TotalElapsedTime: 55.5211 NextPoint: [1x2 table] XTrace: [30x2 table] ObjectiveTrace: [30x1 double] ConstraintsTrace: [] UserDataTrace: {30x1 cell} ObjectiveEvaluationTimeTrace: [30x1 double] IterationTimeTrace: [30x1 double] ErrorTrace: [30x1 double] FeasibilityTrace: [30x1 logical] FeasibilityProbabilityTrace: [30x1 double] IndexOfMinimumTrace: [30x1 double] ObjectiveMinimumTrace: [30x1 double] EstimatedObjectiveMinimumTrace: [30x1 double]
Этот метод оптимизации проще, чем тот, что показан в Find Good Lasso Pencial Using Cross-Validation, но не позволяет вам сравнить сложность модели и потери перекрестной валидации.
X
- Данные предиктораДанные предиктора, заданные как n -by p полная или разреженная матрица.
Длина Y
и количество наблюдений в X
должно быть равным.
Примечание
Если вы ориентируете матрицу предиктора так, чтобы наблюдения соответствовали столбцам и задавали 'ObservationsIn','columns'
, тогда вы можете испытать значительное сокращение времени выполнения оптимизации.
Типы данных: single
| double
Tbl
- Выборочные данныеВыборочные данные, используемых для обучения модели, заданная как таблица. Каждая строка Tbl
соответствует одному наблюдению, и каждый столбец соответствует одной переменной предиктора. Опционально Tbl
может содержать один дополнительный столбец для переменной отклика. Многополюсные переменные и массивы ячеек, отличные от массивов ячеек векторов символов, не разрешены.
Если Tbl
содержит переменную отклика, и необходимо использовать все оставшиеся переменные в Tbl
в качестве предикторов, затем задайте переменную отклика при помощи ResponseVarName
.
Если Tbl
содержит переменную отклика, и необходимо использовать только подмножество остальных переменных в Tbl
в качестве предикторов задайте формулу при помощи formula
.
Если Tbl
не содержит переменную отклика, затем задает переменную отклика при помощи Y
. Длина переменной отклика и количество строк в Tbl
должно быть равным.
Типы данных: table
ResponseVarName
- Имя переменной откликаTbl
Имя переменной отклика, заданное как имя переменной в Tbl
. Переменная отклика должна быть числовым вектором.
Вы должны задать ResponseVarName
как вектор символов или строковый скаляр. Для примера, если Tbl
сохраняет переменную отклика Y
как Tbl.Y
, затем укажите его следующим 'Y'
. В противном случае программное обеспечение обрабатывает все столбцы Tbl
, включая Y
, как предикторы при обучении модели.
Типы данных: 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
.
Mdl = fitrlinear(X,Y,'Learner','leastsquares','CrossVal','on','Regularization','lasso')
задает для реализации регрессии методом наименьших квадратов, реализует 10-кратную перекрестную валидацию и указывает, что включает термин регуляризации лассо.Примечание
Вы не можете использовать какой-либо аргумент пары "имя-значение" перекрестной проверки наряду с 'OptimizeHyperparameters'
аргумент пары "имя-значение". Можно изменить перекрестную валидацию для 'OptimizeHyperparameters'
только при помощи 'HyperparameterOptimizationOptions'
аргумент пары "имя-значение".
'Epsilon'
- Половина ширины эпсилонно-нечувствительной полосыiqr(Y)/13.49
(по умолчанию) | неотрицательное скалярное значениеПоловина ширины эпсилонно-нечувствительной полосы, заданная как разделенная разделенными запятой парами, состоящая из 'Epsilon'
и неотрицательное скалярное значение. 'Epsilon'
применяется только к учащимся SVM.
Значение по умолчанию Epsilon
значение iqr(Y)/13.49
, которая является оценкой стандартного отклонения с использованием межквартильной области значений переменной отклика Y
. Если iqr(Y)
равно нулю, тогда значение по умолчанию Epsilon
значение равно 0,1.
Пример: 'Epsilon',0.3
Типы данных: single
| double
'Lambda'
- Прочность термина регуляризации'auto'
(по умолчанию) | неотрицательный скаляр | вектор неотрицательных значенийСила термина регуляризации, заданная как разделенная разделенными запятой парами, состоящая из 'Lambda'
и 'auto'
, неотрицательный скаляр или вектор неотрицательных значений.
Для 'auto'
, Lambda
= 1 / n.
Если вы задаете перекрестную валидацию, аргумент пары "имя-значение" (например CrossVal
), тогда n количество кратных наблюдений.
В противном случае n размер обучающей выборки.
Для вектора неотрицательных значений, fitrlinear
последовательно оптимизирует целевую функцию для каждого отдельного значения в Lambda
в порядке возрастания.
Если Solver
является 'sgd'
или 'asgd'
и Regularization
является 'lasso'
, fitrlinear
не использует предыдущие оценки коэффициентов в качестве теплого начала для следующей итерации оптимизации. В противном случае, fitrlinear
использует теплые старты.
Если Regularization
является 'lasso'
, тогда любая оценка коэффициента 0 сохраняет свое значение, когда fitrlinear
оптимизирует использование последующих значений в Lambda
.
fitrlinear
возвращает оценки коэффициентов для каждой заданной степени регуляризации.
Пример: 'Lambda',10.^(-(10:-2:2))
Типы данных: char
| string
| double
| single
'Learner'
- Тип линейной регрессионной модели'svm'
(по умолчанию) | 'leastsquares'
Тип линейной регрессионой модели, заданный как разделенная разделенными запятой парами, состоящая из 'Learner'
и 'svm'
или 'leastsquares'
.
В этой таблице,
β является вектором p коэффициентов.
x является наблюдением от p переменных предиктора.
b - скалярное смещение.
Значение | Алгоритм | Область значений отклика | Функция потерь |
---|---|---|---|
'leastsquares' | Линейная регрессия через обыкновенные наименьшие квадраты | y ∊ (- ∞, ∞) | Средняя квадратичная невязка (MSE): |
'svm' | Машина опорных векторов регрессия | То же, что и 'leastsquares' | Эпсилон-нечувствительный: |
Пример: 'Learner','leastsquares'
'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) [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
) и size(X,1) <= 100
(100 или меньше переменных предиктора), тогда решатель по умолчанию 'bfgs'
.
Регрессионая модель SVM (см Learner
), штраф за хребет и size(X,1) > 100
(более 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
)
По умолчанию:
Типы данных: 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
управляет объемом диагностической информации fitrlinear
отображается в командной строке.
Значение | Описание |
---|---|
0 | fitrlinear не отображает диагностическую информацию. |
1 | fitrlinear периодически отображения и сохраняют значение целевой функции, градиентную величину и другую диагностическую информацию. FitInfo.History содержит диагностическую информацию. |
Любое другое положительное целое число | fitrlinear отображает и хранит диагностическую информацию при каждой итерации оптимизации. 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
Типы данных: 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
), fitrlinear
принимает, что переменная категориальна, если это логический вектор, категориальный вектор, символьный массив, строковые массивы или массив ячеек из векторов символов. Если данные предиктора являются матрицей (X
), fitrlinear
принимает, что все предикторы непрерывны. Чтобы идентифицировать любые другие предикторы как категориальные предикторы, задайте их с помощью 'CategoricalPredictors'
аргумент имя-значение.
Для идентифицированных категориальных предикторов, fitrlinear
создает фиктивные переменные с помощью двух различных схем, в зависимости от того, является ли категориальная переменная неупорядоченной или упорядоченной. Для неупорядоченной категориальной переменной, fitrlinear
создает одну фиктивную переменную для каждого уровня категориальной переменной. Для упорядоченной категориальной переменной, fitrlinear
создает одну переменную с меньшим количеством манекенов, чем количество категорий. Для получения дополнительной информации смотрите Автоматическое создание переменных манекена.
Пример: 'CategoricalPredictors','all'
Типы данных: single
| double
| logical
| char
| string
| cell
'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'
выбрать, какие переменные предиктора использовать в обучении. То есть, fitrlinear
использует только переменные предиктора в PredictorNames
и переменной отклика во время обучения.
PredictorNames
должен быть подмножеством Tbl.Properties.VariableNames
и не может включать имя переменной отклика.
По умолчанию PredictorNames
содержит имена всех переменных предиктора.
Хорошей практикой является определение предикторов для обучения с использованием любой из 'PredictorNames'
или formula
, но не то и другое.
Пример: 'PredictorNames',{'SepalLength','SepalWidth','PetalLength','PetalWidth'}
Типы данных: string
| cell
'ResponseName'
- Имя переменной отклика'Y'
(по умолчанию) | символьный вектор | строковый скалярИмя переменной отклика, заданное как вектор символов или строковый скаляр.
Если вы поставляете Y
, тогда можно использовать 'ResponseName'
чтобы задать имя для переменной отклика.
Если вы поставляете ResponseVarName
или formula
, тогда вы не можете использовать 'ResponseName'
.
Пример: 'ResponseName','response'
Типы данных: char
| string
'ResponseTransform'
- Преобразование отклика'none'
(по умолчанию) | указатель на функциюПреобразование отклика, заданное как 'none'
или указатель на функцию. Значение по умолчанию является 'none'
, что означает @(y)y
, или без преобразования. Для функции MATLAB или функции, которую вы задаете, используйте указатель на функцию для преобразования отклика. Указатель на функцию должен принять вектор (исходные значения отклика) и вернуть вектор того же размера (преобразованные значения отклика).
Пример: Предположим, что вы создаете указатель на функцию, который применяет экспоненциальное преобразование к вектору входа при помощи myfunction = @(y)exp(y)
. Затем можно задать преобразование отклика следующим 'ResponseTransform',myfunction
.
Типы данных: char
| string
| function_handle
'Weights'
- Веса наблюденийTbl
Веса наблюдений, заданные как разделенная разделенными запятой парами, состоящая из 'Weights'
и положительный числовой вектор или имя переменной в Tbl
. Программа взвешивает каждое наблюдение в X
или Tbl
с соответствующим значением в Weights
. Длина Weights
должно равняться количеству наблюдений в X
или Tbl
.
Если вы задаете входные данные как таблицу Tbl
, затем Weights
может быть именем переменной в Tbl
который содержит числовой вектор. В этом случае необходимо задать Weights
как вектор символов или строковый скаляр. Для примера, если вектор весов W
хранится как Tbl.W
, затем укажите его следующим 'W'
. В противном случае программное обеспечение обрабатывает все столбцы Tbl
, включая W
, как предикторы при обучении модели.
По умолчанию Weights
является ones(n,1)
, где n
количество наблюдений в X
или Tbl
.
fitrlinear
Нормализует веса в сумме до 1.
Типы данных: 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'
и положительное целое число.
fitrlinear
обрабатывает все наблюдения, когда он завершает один проход через данные.
Когда fitrlinear
проходит через данные PassLimit
раз, это прекращает оптимизацию.
Если вы задаете '
BatchLimit
'
и PassLimit
, затем fitrlinear
выбирает аргумент, который приводит к обработке наименьшего количества наблюдений. Для получения дополнительной информации см. «Алгоритмы».
Пример: '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{1}
является таблицей, тогда ValidationData{2}
может быть именем переменной отклика в таблице. Если вы хотите использовать ту же ResponseVarName
или formula
, можно задать ValidationData{2}
как []
.
Опционально можно задать ValidationData{3}
как m -мерный числовой вектор весов наблюдений или имя переменной в таблице ValidationData{1}
который содержит веса наблюдений. Программа нормирует веса с данными валидации так, чтобы их сумма равнялась 1.
Если вы задаете ValidationData
и хотите отобразить потерю валидации в командной строке, задайте значение, больше 0 для Verbose
.
Если программное обеспечение сходится для последнего решателя, заданного в Solver
, затем оптимизация прекращается. В противном случае программное обеспечение использует следующий решатель, указанный в Solver
.
По умолчанию программное обеспечение не обнаруживает сходимость путем мониторинга потерь данных валидации.
'GradientTolerance'
- Абсолютный допуск градиента1e-6
(по умолчанию) | неотрицательной скаляромАбсолютный допуск градиента, заданный как разделенная разделенными запятой парами, состоящая из 'GradientTolerance'
и неотрицательный скаляр. GradientTolerance
применяется к этим значениям Solver
: 'bfgs'
, 'lbfgs'
, и 'sparsa'
.
Давайте быть вектором градиента целевой функции относительно коэффициентов и члена смещения при t итерации оптимизации. Если , затем оптимизация прекращается.
Если вы также задаете BetaTolerance
, затем оптимизация прекращается, когда fitrlinear
удовлетворяет любому критерию остановки.
Если fitrlinear
сходится для последнего решателя, заданного в Solver
, затем оптимизация прекращается. В противном случае, fitrlinear
использует следующий решатель, указанный в Solver
.
Пример: 'GradientTolerance',eps
Типы данных: single
| double
'IterationLimit'
- Максимальное количество итераций оптимизации1000
(по умолчанию) | положительное целое числоМаксимальное количество итераций оптимизации, заданное как разделенная разделенными запятой парами, состоящая из 'IterationLimit'
и положительное целое число. IterationLimit
применяется к этим значениям Solver
: 'bfgs'
, 'lbfgs'
, и 'sparsa'
.
Пример: 'IterationLimit',1e7
Типы данных: single
| double
'BetaTolerance'
- Относительная погрешность на линейные коэффициенты и термин смещения1e-4
(по умолчанию) | неотрицательной скаляромОтносительная погрешность на линейные коэффициенты и термин смещения ( точка пересечения), заданный как разделенная разделенными запятой парами, состоящая из 'BetaTolerance'
и неотрицательный скаляр.
Давайте , то есть вектор коэффициентов и член смещения при t итерации оптимизации. Если , затем оптимизация прекращается.
Если вы также задаете DeltaGradientTolerance
затем оптимизация прекращается, когда программное обеспечение удовлетворяет любому критерию остановки.
Если программное обеспечение сходится для последнего решателя, заданного в Solver
, затем оптимизация прекращается. В противном случае программное обеспечение использует следующий решатель, указанный в Solver
.
Пример: 'BetaTolerance',1e-6
Типы данных: single
| double
'DeltaGradientTolerance'
- Отклонение разности градиентов0.1
(по умолчанию) | неотрицательной скаляромДопуск градиента-разности между верхним и нижним бассейном Каруш-Кун-Такер (KKT) нарушители условий комплементарности, заданный как разделенная разделенными запятой парами, состоящая из 'DeltaGradientTolerance'
и неотрицательный скаляр. DeltaGradientTolerance
применяется к 'dual'
значение Solver
только.
Если величина нарушителей ККТ меньше DeltaGradientTolerance
, затем fitrlinear
завершает оптимизацию.
Если fitrlinear
сходится для последнего решателя, заданного в Solver
, затем оптимизация прекращается. В противном случае, fitrlinear
использует следующий решатель, указанный в 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{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{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
.
Оптимизация пытается минимизировать потери перекрестной валидации (ошибка) для fitrlinear
путем изменения параметров. Чтобы контролировать тип перекрестной валидации и другие аспекты оптимизации, используйте HyperparameterOptimizationOptions
Пара "имя-значение".
Примечание
'OptimizeHyperparameters'
значения переопределяют все значения, которые вы устанавливаете, используя другие аргументы пары "имя-значение". Для примера установка 'OptimizeHyperparameters'
на 'auto'
вызывает 'auto'
значения для применения.
Подходящие параметры для fitrlinear
являются:
Lambda
— fitrlinear
поиск среди положительных значений, по умолчанию логарифмический в области значений [1e-5/NumObservations,1e5/NumObservations]
.
Learner
— fitrlinear
поиск среди 'svm'
и 'leastsquares'
.
Regularization
— fitrlinear
поиск среди 'ridge'
и 'lasso'
.
Установите параметры nondefault путем передачи вектора optimizableVariable
объекты, которые имеют значения nondefault. Для примера,
load carsmall params = hyperparameters('fitrlinear',[Horsepower,Weight],MPG); params(1).Range = [1e-3,2e4];
Передайте 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
- Обученная линейная регрессионая модельRegressionLinear
объект модели | RegressionPartitionedLinear
перекрестно проверенный объект моделиОбученная линейная регрессионая модель, возвращенная как RegressionLinear
объект модели
перекрестно проверенный объект модели.
Если вы задаете любой из аргументов пары "имя-значение" KFold
, Holdout
, CrossVal
, или CVPartition
, затем Mdl
является RegressionPartitionedLinear
перекрестно проверенный объект модели. В противном случае Mdl
является RegressionLinear
объект модели.
Ссылка на свойства Mdl
, используйте запись через точку. Для примера введите Mdl.Beta
в Командном окне, чтобы отобразить вектор или матрицу предполагаемых коэффициентов.
Примечание
В отличие от других регрессионных моделей и для экономичного использования памяти, RegressionLinear
и RegressionPartitionedLinear
объекты модели не хранят обучающие данные или детали оптимизации (для примера, истории сходимости).
FitInfo
- Детали оптимизацииДетали оптимизации, возвращенные как массив структур.
Поля задают конечные значения или спецификации аргументов пары "имя-значение", например Objective
- значение целевой функции, когда оптимизация прекращается. Строки многомерных полей соответствуют значениям Lambda
а столбцы соответствуют значениям Solver
.
В этой таблице описываются некоторые заметные области.
Область | Описание | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
TerminationStatus |
| ||||||||||||||
FitTime | Истекшее, настенное время в секундах | ||||||||||||||
History | Массив структур информации оптимизации для каждой итерации. Полевые
|
Для доступа к полям используйте запись через точку. Для примера, чтобы получить доступ к вектору значений целевой функции для каждой итерации, введите FitInfo.History.Objective
.
Это хорошая практика, чтобы изучить FitInfo
оценить, является ли сходимость удовлетворительной.
HyperparameterOptimizationResults
- Оптимизация гиперпараметров перекрестной валидацииBayesianOptimization
объект | таблица гиперпараметров и связанных значенийОптимизация гиперпараметров с перекрестной валидацией, возвращенная как BayesianOptimization
объект или таблица гиперпараметров и связанных значений. Выход непуст, когда значение 'OptimizeHyperparameters'
не 'none'
. Выходное значение зависит от Optimizer
значение поля 'HyperparameterOptimizationOptions'
аргумент пары "имя-значение":
Значение Optimizer Область | Значение HyperparameterOptimizationResults |
---|---|
'bayesopt' (по умолчанию) | Объект BayesianOptimization классов |
'gridsearch' или 'randomsearch' | Таблица используемых гиперпараметров, наблюдаемых значений целевой функции (потери перекрестной валидации) и ранг наблюдений от самого низкого (лучшего) до самого высокого (худшего) |
Примечание
Если Learner
является 'leastsquares'
, тогда термин потерь в целевой функции составляет половину MSE. loss
возвращает MSE по умолчанию. Поэтому, если вы используете loss
чтобы проверить реституцию, или обучение, ошибка, тогда существует расхождение между MSE, возвращенным loss
и результаты оптимизации в FitInfo
или вернулся в командную строку путем установки положительного уровня подробностей с помощью Verbose
.
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
слишком маленькая, тогда fitrlinear
достигает минимума во многих итерациях, но быстро вычисляет градиент на итерацию.
Если BatchSize
слишком велик, тогда fitrlinear
достигает минимума в меньшем количестве итераций, но вычисляет градиент на итерацию медленно.
Большие скорости обучения (см LearnRate
) ускорить сходимость до минимума, но может привести к расхождению (то есть переступая минимум). Малые скорости обучения гарантируют сходимость к минимуму, но могут привести к медленному прекращению обучения.
При использовании штрафов лассо экспериментируйте с различными значениями TruncationPeriod
. Для примера задайте TruncationPeriod
на 1
, 10
и затем 100
.
Для эффективности, fitrlinear
не стандартизирует данные предиктора. Для стандартизации X
, введите
X = bsxfun(@rdivide,bsxfun(@minus,X,mean(X,2)),std(X,0,2));
Код требует, чтобы вы ориентировали предикторы и наблюдения как строки и столбцы X
, соответственно. Кроме того, для экономии использования памяти код заменяет исходные данные предиктора стандартизированные данные.
После обучения модели можно сгенерировать код C/C + +, который предсказывает ответы для новых данных. Для генерации кода C/C + + требуется MATLAB Coder™. Для получения дополнительной информации смотрите Введение в генерацию кода.
Если вы задаете ValidationData
затем, во время оптимизации целевой функции:
fitrlinear
оценивает потерю валидации ValidationData
периодически используя текущую модель, и отслеживает минимальную оценку.
Когда fitrlinear
оценивает потери валидации, сравнивает оценку с минимальной оценкой.
Когда последующие оценки потерь при валидации превышают минимальную оценку в пять раз, fitrlinear
завершает оптимизацию.
Если вы задаете ValidationData
и для реализации перекрестной стандартной программы валидации (CrossVal
, CVPartition
, Holdout
, или KFold
), затем:
fitrlinear
случайным образом разделы X
и Y
(или Tbl
) в соответствии с выбранной процедурой перекрестной валидации.
fitrlinear
обучает модель с помощью раздела обучающих данных. Во время оптимизации целевой функции, fitrlinear
использует ValidationData
как еще один возможный способ завершения оптимизации (для получения дополнительной информации см. предыдущую пулю).
Однажды fitrlinear
удовлетворяет критерию остановки, он строит обученную модель на основе оптимизированных линейных коэффициентов и точки пересечения.
Если вы реализуете k -кратную перекрестную валидацию, иfitrlinear
не исчерпал все складки набора обучающих данных, тогда fitrlinear
возвращается к шагу 2, чтобы обучиться с использованием следующего шага набора обучающих данных.
В противном случае, fitrlinear
завершает обучение, а затем возвращает перекрестно проверенную модель.
Можно определить качество перекрестно проверенной модели. Для примера:
Чтобы определить потери валидации с помощью данных holdout или out-of-fold из шага 1, передайте перекрестно проверенную модель, чтобы kfoldLoss
.
Чтобы предсказать наблюдения за данными holdout или out-of-fold с шага 1, передайте перекрестно проверенную модель, чтобы kfoldPredict
.
[1] Ho, C. H. and C. J. Lin. «Крупномасштабная линейная Поддержка Вектора регрессия». Journal of Машинное Обучение Research, Vol. 13, 2012, pp. 3323-3348.
[2] Hsieh, C. J., K. W. Chang, C. J. Лин, С. С. Кеерти и С. Сундарараджан. Метод двойного координатного спуска для крупномасштабного линейного SVM. Материалы 25-й Международной конференции по машинному обучению, ICML "08, 2001, стр. 408-415.
[3] Лэнгфорд, Дж., Л. Ли, и Т. Чжан. «Разреженное онлайн-обучение через усеченный градиент». Дж. Мач. Учись. Рес., том 10, 2009, стр. 777-801.
[4] Nocedal, J. and S. J. Wright. Численная оптимизация, 2-е изд., Нью-Йорк: Спрингер, 2006.
[5] Шалев-Шварц, С., Я. Сингер, и Н. Сребру. Pegasos: Primal Estimated Sub-Gradient Solver for SVM (неопр.) (недоступная ссылка). Материалы 24-й Международной конференции по машинному обучению, ICML "07, 2007, стр. 807-814.
[6] Райт, С. Дж., Р. Д. Новак, и М. А. Т. Фигейредо. «Разреженная реконструкция с помощью разделяемого приближения». Транс. Сиг. Proc., Том 57, № 7, 2009, стр. 2479-2493.
[7] Xiao, Lin. «Dual Aververaging Methods for Regularized Stochastic Learning and Online Optimization». Дж. Мач. Учись. Res., Vol. 11, 2010, pp. 2543-2596.
[8] Сюй, Вэй. «К оптимальной однопроходной большой Шкале обучению со средним стохастическим градиентным спуском». CoRR, abs/1107.2490, 2011.
Указания и ограничения по применению:
fitrlinear
не поддерживает высокие table
данные.
Некоторые аргументы пары "имя-значение" имеют различные значения по умолчанию и значения по сравнению с оперативной памятью fitrlinear
функция. Поддерживаемые аргументы пары "имя-значение" и любые различия:
'Epsilon'
'ObservationsIn'
- Поддерживает только 'rows'
.
'Lambda'
- Можно 'auto'
(по умолчанию) или скаляром.
'Learner'
'Regularization'
- Поддерживает только 'ridge'
.
'Solver'
- Поддерживает только 'lbfgs'
.
'Verbose'
- Значение по умолчанию 1
'Beta'
'Bias'
'FitBias'
- Поддерживает только true
.
'Weights'
- Значение должно быть длинный массив.
'HessianHistorySize'
'BetaTolerance'
- Значение по умолчанию ослаблено до 1e-3
.
'GradientTolerance'
- Значение по умолчанию ослаблено до 1e-3
.
'IterationLimit'
- Значение по умолчанию ослаблено до 20
.
'OptimizeHyperparameters'
- Значение 'Regularization'
параметр должен быть 'ridge'
.
'HyperparameterOptimizationOptions'
- Для перекрестной валидации tall optimization поддерживает только 'Holdout'
валидация. По умолчанию программное обеспечение выбирает и резервирует 20% данных в качестве данных валидации удержания и обучает модель, используя остальную часть данных. Вы можете задать другое значение для задержанной дроби с помощью этого аргумента. Для примера задайте 'HyperparameterOptimizationOptions',struct('Holdout',0.3)
зарезервировать 30% данных в качестве данных валидации.
Для длинных массивов fitrlinear
реализует LBFGS путем распределения вычисления потерь и градиента между различными частями длинный массив при каждой итерации. Другие решатели недоступны для длинные массивы.
Когда начальные значения для Beta
и Bias
не даны, fitrlinear
сначала уточняет начальные оценки параметров путем локальной подгонки модели к частям данных и объединения коэффициентов путем усреднения.
Для получения дополнительной информации см. Раздел «Длинные массивы»
Чтобы выполнить параллельную оптимизацию гипероптимизации параметров управления, используйте 'HyperparameterOptimizationOptions', struct('UseParallel',true)
аргумент имя-значение в вызове этой функции.
Для получения дополнительной информации об оптимизации параллельной гипероптимизации параметров управления смотрите Parallel Bayesian Optimization.
Общие сведения о параллельных вычислениях см. в разделе Запуск функций MATLAB с поддержкой автоматических параллелей (Parallel Computing Toolbox).
fitclinear
| fitlm
| fitrsvm
| kfoldLoss
| kfoldPredict
| lasso
| predict
| RegressionLinear
| RegressionPartitionedLinear
| ridge
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.