Подгонка модели регрессии ядра Гауссова с использованием расширения случайных функций
fitrkernel
обучает или перекрестно проверяет регрессионую модель Гауссова ядра для нелинейной регрессии. fitrkernel
более практично использовать для приложений больших данных, которые имеют большие наборы обучающих данных, но могут также применяться к меньшим наборам данных, которые подгонка в памяти.
fitrkernel
преобразует данные в низкомерном пространстве в высокомерное пространство, затем подбирает линейную модель в высокомерном пространстве путем минимизации регуляризованной целевой функции. Получение линейной модели в высокомерном пространстве эквивалентно применению Гауссова ядра к модели в низкомерном пространстве. Доступные линейные регрессионые модели включают регуляризованные машины опорных векторов (SVM) и регрессионые модели методом наименьших квадратов.
Чтобы обучить нелинейную регрессионую модель SVM на данных в памяти, см. fitrsvm
.
возвращает регрессионую модель ядра Mdl
= fitrkernel(Tbl
,ResponseVarName
)Mdl
обучен с использованием переменных предиктора, содержащихся в таблице Tbl
и значений отклика в Tbl.ResponseVarName
.
задает опции, использующие один или несколько аргументы пары "имя-значение" в дополнение к любой комбинации входных аргументов в предыдущих синтаксисах. Для примера можно реализовать регрессию методом наименьших квадратов, задать количество размерности расширенного пространства или задать опции перекрестной валидации.Mdl
= fitrkernel(___,Name,Value
)
[
также возвращает результаты оптимизации гипероптимизации параметров управления, когда вы оптимизируете гиперпараметры с помощью Mdl
,FitInfo
,HyperparameterOptimizationResults
] = fitrkernel(___)'OptimizeHyperparameters'
аргумент пары "имя-значение".
Обучите регрессионую модель ядра для длинный массив с помощью SVM.
При выполнении вычислений на длинные массивы MATLAB ® использует либо параллельный пул (по умолчанию, если у вас есть Parallel Computing Toolbox™), либо локальный сеанс работы с MATLAB. Чтобы запустить пример с использованием локального сеанса работы с MATLAB, когда у вас есть Parallel Computing Toolbox, измените глобальное окружение выполнения с помощью mapreducer
функция.
mapreducer(0)
Создайте datastore, которое ссылается на расположение папки с данными. Данные могут содержаться в одном файле, наборе файлов или целой папке. Лечите 'NA'
значения как отсутствующие данные, так что datastore
заменяет их на NaN
значения. Выберите подмножество переменных для использования. Составьте длинная таблица в верхней части datastore.
varnames = {'ArrTime','DepTime','ActualElapsedTime'}; ds = datastore('airlinesmall.csv','TreatAsMissing','NA',... 'SelectedVariableNames',varnames); t = tall(ds);
Задайте DepTime
и ArrTime
как переменные предиктора (X
) и ActualElapsedTime
как переменная отклика (Y
). Выберите наблюдения, для которых ArrTime
позже DepTime
.
daytime = t.ArrTime>t.DepTime; Y = t.ActualElapsedTime(daytime); % Response data X = t{daytime,{'DepTime' 'ArrTime'}}; % Predictor data
Стандартизируйте переменные предиктора.
Z = zscore(X); % Standardize the data
Обучите регрессионую модель Гауссова ядра по умолчанию со стандартизированными предикторами. Извлеките сводные данные подгонки, чтобы определить, насколько хорошо алгоритм оптимизации подходит модели к данным.
[Mdl,FitInfo] = fitrkernel(Z,Y)
Found 6 chunks. |========================================================================= | Solver | Iteration / | Objective | Gradient | Beta relative | | | Data Pass | | magnitude | change | |========================================================================= | INIT | 0 / 1 | 4.307833e+01 | 4.345788e-02 | NaN | | LBFGS | 0 / 2 | 3.705713e+01 | 1.577301e-02 | 9.988252e-01 | | LBFGS | 1 / 3 | 3.704022e+01 | 3.082836e-02 | 1.338410e-03 | | LBFGS | 2 / 4 | 3.701398e+01 | 3.006488e-02 | 1.116070e-03 | | LBFGS | 2 / 5 | 3.698797e+01 | 2.870642e-02 | 2.234599e-03 | | LBFGS | 2 / 6 | 3.693687e+01 | 2.625581e-02 | 4.479069e-03 | | LBFGS | 2 / 7 | 3.683757e+01 | 2.239620e-02 | 8.997877e-03 | | LBFGS | 2 / 8 | 3.665038e+01 | 1.782358e-02 | 1.815682e-02 | | LBFGS | 3 / 9 | 3.473411e+01 | 4.074480e-02 | 1.778166e-01 | | LBFGS | 4 / 10 | 3.684246e+01 | 1.608942e-01 | 3.294968e-01 | | LBFGS | 4 / 11 | 3.441595e+01 | 8.587703e-02 | 1.420892e-01 | | LBFGS | 5 / 12 | 3.377755e+01 | 3.760006e-02 | 4.640134e-02 | | LBFGS | 6 / 13 | 3.357732e+01 | 1.912644e-02 | 3.842057e-02 | | LBFGS | 7 / 14 | 3.334081e+01 | 3.046709e-02 | 6.211243e-02 | | LBFGS | 8 / 15 | 3.309239e+01 | 3.858085e-02 | 6.411356e-02 | | LBFGS | 9 / 16 | 3.276577e+01 | 3.612292e-02 | 6.938579e-02 | | LBFGS | 10 / 17 | 3.234029e+01 | 2.734959e-02 | 1.144307e-01 | | LBFGS | 11 / 18 | 3.205763e+01 | 2.545990e-02 | 7.323180e-02 | | LBFGS | 12 / 19 | 3.183341e+01 | 2.472411e-02 | 3.689625e-02 | | LBFGS | 13 / 20 | 3.169307e+01 | 2.064613e-02 | 2.998555e-02 | |========================================================================= | Solver | Iteration / | Objective | Gradient | Beta relative | | | Data Pass | | magnitude | change | |========================================================================= | LBFGS | 14 / 21 | 3.146896e+01 | 1.788395e-02 | 5.967293e-02 | | LBFGS | 15 / 22 | 3.118171e+01 | 1.660696e-02 | 1.124062e-01 | | LBFGS | 16 / 23 | 3.106224e+01 | 1.506147e-02 | 7.947037e-02 | | LBFGS | 17 / 24 | 3.098395e+01 | 1.564561e-02 | 2.678370e-02 | | LBFGS | 18 / 25 | 3.096029e+01 | 4.464104e-02 | 4.547148e-02 | | LBFGS | 19 / 26 | 3.085475e+01 | 1.442800e-02 | 1.677268e-02 | | LBFGS | 20 / 27 | 3.078140e+01 | 1.906548e-02 | 2.275185e-02 | |========================================================================|
Mdl = RegressionKernel PredictorNames: {'x1' 'x2'} ResponseName: 'Y' Learner: 'svm' NumExpansionDimensions: 64 KernelScale: 1 Lambda: 8.5385e-06 BoxConstraint: 1 Epsilon: 5.9303 Properties, Methods
FitInfo = struct with fields:
Solver: 'LBFGS-tall'
LossFunction: 'epsiloninsensitive'
Lambda: 8.5385e-06
BetaTolerance: 1.0000e-03
GradientTolerance: 1.0000e-05
ObjectiveValue: 30.7814
GradientMagnitude: 0.0191
RelativeChangeInBeta: 0.0228
FitTime: 56.8110
History: [1x1 struct]
Mdl
является RegressionKernel
модель. Чтобы просмотреть ошибку регрессии, можно пройти Mdl
и обучающих данных или новых данных для loss
функция. Или ты можешь пройти Mdl
и новые данные предиктора в predict
функция для предсказания ответов на новые наблюдения. Можно также пройти Mdl
и обучающих данных к resume
функция для продолжения обучения.
FitInfo
- массив структур, содержащий информацию об оптимизации. Использование FitInfo
для определения, являются ли измерения оптимизации завершением удовлетворительными.
Для повышения точности можно увеличить максимальное количество итераций оптимизации ('IterationLimit'
) и уменьшить значения допусков ('BetaTolerance'
и 'GradientTolerance'
) при помощи аргументов пары "имя-значение" fitrkernel
. Это может улучшить такие меры, как ObjectiveValue
и RelativeChangeInBeta
в FitInfo
. Можно также оптимизировать параметры модели при помощи 'OptimizeHyperparameters'
аргумент пары "имя-значение".
Загрузите carbig
набор данных.
load carbig
Задайте переменные предиктора (X
) и переменной отклика (Y
).
X = [Acceleration,Cylinders,Displacement,Horsepower,Weight]; Y = MPG;
Удалите строки X
и Y
где любой массив имеет NaN
значения. Удаление строк с NaN
значения перед передачей данных в fitrkernel
может ускорить обучение и уменьшить использование памяти.
R = rmmissing([X Y]); % Data with missing entries removed
X = R(:,1:5);
Y = R(:,end);
Стандартизируйте переменные предиктора.
Z = zscore(X);
Перекрестная валидация регрессионной модели ядра с помощью 5-кратной перекрестной валидации.
Mdl = fitrkernel(Z,Y,'Kfold',5)
Mdl = RegressionPartitionedKernel CrossValidatedModel: 'Kernel' ResponseName: 'Y' NumObservations: 392 KFold: 5 Partition: [1x1 cvpartition] ResponseTransform: 'none' Properties, Methods
numel(Mdl.Trained)
ans = 5
Mdl
является RegressionPartitionedKernel
модель. Потому что fitrkernel
реализует пятикратную перекрестную валидацию, Mdl
содержит пять RegressionKernel
модели, которые программное обеспечение обучает по обучающим-складным (in-fold) наблюдениям.
Исследуйте потери перекрестной валидации (средняя квадратичная невязка) для каждой складки.
kfoldLoss(Mdl,'mode','individual')
ans = 5×1
13.0610
14.0975
24.0104
21.1223
24.3979
Оптимизируйте гиперпараметры автоматически с помощью 'OptimizeHyperparameters'
аргумент пары "имя-значение".
Загрузите carbig
набор данных.
load carbig
Задайте переменные предиктора (X
) и переменной отклика (Y
).
X = [Acceleration,Cylinders,Displacement,Horsepower,Weight]; Y = MPG;
Удалите строки X
и Y
где любой массив имеет NaN
значения. Удаление строк с NaN
значения перед передачей данных в fitrkernel
может ускорить обучение и уменьшить использование памяти.
R = rmmissing([X Y]); % Data with missing entries removed
X = R(:,1:5);
Y = R(:,end);
Стандартизируйте переменные предиктора.
Z = zscore(X);
Найдите гиперпараметры, которые минимизируют пятикратные потери при перекрестной проверке с помощью автоматической оптимизации гипероптимизации параметров управления. Задайте 'OptimizeHyperparameters'
как 'auto'
так что fitrkernel
находит оптимальные значения 'KernelScale'
, 'Lambda'
, и 'Epsilon'
Аргументы пары "имя-значение". Для воспроизводимости установите случайный seed и используйте 'expected-improvement-plus'
функция сбора.
rng('default') [Mdl,FitInfo,HyperparameterOptimizationResults] = fitrkernel(Z,Y,'OptimizeHyperparameters','auto',... 'HyperparameterOptimizationOptions',struct('AcquisitionFunctionName','expected-improvement-plus'))
|====================================================================================================================| | Iter | Eval | Objective: | Objective | BestSoFar | BestSoFar | KernelScale | Lambda | Epsilon | | | result | log(1+loss) | runtime | (observed) | (estim.) | | | | |====================================================================================================================| | 1 | Best | 4.8295 | 6.7644 | 4.8295 | 4.8295 | 0.011518 | 6.8068e-05 | 0.95918 | | 2 | Best | 4.1488 | 0.41379 | 4.1488 | 4.1855 | 477.57 | 0.066115 | 0.091828 | | 3 | Accept | 4.1521 | 0.22316 | 4.1488 | 4.1747 | 0.0080478 | 0.0052867 | 520.84 | | 4 | Accept | 4.1506 | 0.24382 | 4.1488 | 4.1488 | 0.10935 | 0.35931 | 0.013372 | | 5 | Best | 4.1446 | 0.57425 | 4.1446 | 4.1446 | 326.29 | 2.5457 | 0.22475 | | 6 | Accept | 4.1521 | 0.24056 | 4.1446 | 4.1447 | 719.11 | 0.19478 | 881.84 | | 7 | Accept | 4.1501 | 0.36784 | 4.1446 | 4.1461 | 0.052426 | 2.5402 | 0.051319 | | 8 | Accept | 4.1521 | 0.22448 | 4.1446 | 4.1447 | 990.71 | 0.014203 | 702.34 | | 9 | Accept | 4.1521 | 0.23926 | 4.1446 | 4.1465 | 415.85 | 0.054602 | 81.005 | | 10 | Accept | 4.1454 | 0.25366 | 4.1446 | 4.1455 | 972.49 | 1.1601 | 1.8715 | | 11 | Accept | 4.1495 | 0.29478 | 4.1446 | 4.1473 | 121.79 | 1.4077 | 0.061055 | | 12 | Accept | 4.1521 | 0.16042 | 4.1446 | 4.1474 | 985.81 | 0.83297 | 213.45 | | 13 | Best | 4.1374 | 0.30021 | 4.1374 | 4.1441 | 167.34 | 2.5497 | 4.8997 | | 14 | Accept | 4.1434 | 0.24781 | 4.1374 | 4.1437 | 74.527 | 2.55 | 6.1044 | | 15 | Accept | 4.1402 | 0.28729 | 4.1374 | 4.1407 | 877.17 | 2.5391 | 2.2888 | | 16 | Accept | 4.1436 | 0.93646 | 4.1374 | 4.1412 | 0.0010354 | 0.017613 | 0.11811 | | 17 | Best | 4.1346 | 1.0133 | 4.1346 | 4.1375 | 0.0010362 | 0.010401 | 8.9719 | | 18 | Accept | 4.1521 | 0.22251 | 4.1346 | 4.1422 | 0.0010467 | 0.0094817 | 563.96 | | 19 | Accept | 4.1508 | 0.29329 | 4.1346 | 4.1367 | 760.12 | 0.0079557 | 0.009087 | | 20 | Accept | 4.1435 | 1.0817 | 4.1346 | 4.143 | 0.020647 | 0.0089063 | 2.3699 | |====================================================================================================================| | Iter | Eval | Objective: | Objective | BestSoFar | BestSoFar | KernelScale | Lambda | Epsilon | | | result | log(1+loss) | runtime | (observed) | (estim.) | | | | |====================================================================================================================| | 21 | Best | 3.7172 | 0.57616 | 3.7172 | 3.7174 | 818.08 | 2.5529e-06 | 2.1058 | | 22 | Accept | 4.1521 | 0.22403 | 3.7172 | 3.7177 | 0.006272 | 2.5598e-06 | 93.063 | | 23 | Accept | 4.0567 | 0.31628 | 3.7172 | 3.7176 | 940.43 | 2.6941e-06 | 0.12016 | | 24 | Best | 2.8979 | 2.6062 | 2.8979 | 2.8979 | 37.141 | 2.5677e-06 | 2.71 | | 25 | Accept | 4.1521 | 0.19873 | 2.8979 | 2.898 | 13.817 | 2.5755e-06 | 863.91 | | 26 | Best | 2.795 | 5.1108 | 2.795 | 2.7953 | 20.022 | 2.6098e-06 | 1.6561 | | 27 | Accept | 2.8284 | 3.3885 | 2.795 | 2.7956 | 17.252 | 2.7719e-06 | 0.82777 | | 28 | Best | 2.7896 | 2.2461 | 2.7896 | 2.7898 | 11.432 | 7.621e-06 | 2.094 | | 29 | Accept | 2.8191 | 7.4885 | 2.7896 | 2.7899 | 8.5133 | 2.5872e-06 | 2.0567 | | 30 | Accept | 2.8061 | 3.7809 | 2.7896 | 2.7968 | 15.823 | 6.1956e-06 | 2.0085 |
__________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 66.8666 seconds Total objective function evaluation time: 40.3192 Best observed feasible point: KernelScale Lambda Epsilon ___________ _________ _______ 11.432 7.621e-06 2.094 Observed objective function value = 2.7896 Estimated objective function value = 2.7984 Function evaluation time = 2.2461 Best estimated feasible point (according to models): KernelScale Lambda Epsilon ___________ __________ _______ 15.823 6.1956e-06 2.0085 Estimated objective function value = 2.7968 Estimated function evaluation time = 3.4579
Mdl = RegressionKernel ResponseName: 'Y' Learner: 'svm' NumExpansionDimensions: 256 KernelScale: 15.8229 Lambda: 6.1956e-06 BoxConstraint: 411.7488 Epsilon: 2.0085 Properties, Methods
FitInfo = struct with fields:
Solver: 'LBFGS-fast'
LossFunction: 'epsiloninsensitive'
Lambda: 6.1956e-06
BetaTolerance: 1.0000e-04
GradientTolerance: 1.0000e-06
ObjectiveValue: 1.3582
GradientMagnitude: 0.0051
RelativeChangeInBeta: 5.3944e-05
FitTime: 1.1977
History: []
HyperparameterOptimizationResults = BayesianOptimization with properties: ObjectiveFcn: @createObjFcn/inMemoryObjFcn VariableDescriptions: [5x1 optimizableVariable] Options: [1x1 struct] MinObjective: 2.7896 XAtMinObjective: [1x3 table] MinEstimatedObjective: 2.7968 XAtMinEstimatedObjective: [1x3 table] NumObjectiveEvaluations: 30 TotalElapsedTime: 66.8666 NextPoint: [1x3 table] XTrace: [30x3 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]
Для больших данных процедура оптимизации может занять много времени. Если набор данных слишком велик, чтобы запустить процедуру оптимизации, можно попытаться оптимизировать параметры, используя только частичные данные. Используйте datasample
и задайте 'Replace','false'
для выборочных данных без замены.
X
- Данные предиктораДанные предиктора, к которым подгоняется регрессионая модель, задаются как n -by p числовая матрица, где n - количество наблюдений, а p - количество переменных предиктора.
Длина Y
и количество наблюдений в X
должно быть равным.
Типы данных: 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>
элементы как отсутствующие значения и удаляет наблюдения с любой из этих характеристик:
Отсутствующее значение в переменной отклика
По крайней мере, одно отсутствующее значение в наблюдении предиктора (строка в X
или Tbl
)
NaN
значение или 0
вес ('Weights'
)
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
Mdl = fitrkernel(X,Y,'Learner','leastsquares','NumExpansionDimensions',2^15,'KernelScale','auto')
реализует регрессию методом наименьших квадратов после отображения данных предиктора в 2^15
размерное пространство с использованием расширения функций с параметром шкалы ядра, выбранным эвристической процедурой.Примечание
Вы не можете использовать какой-либо аргумент пары "имя-значение" перекрестной проверки наряду с 'OptimizeHyperparameters'
аргумент пары "имя-значение". Можно изменить перекрестную валидацию для 'OptimizeHyperparameters'
только при помощи 'HyperparameterOptimizationOptions'
аргумент пары "имя-значение".
'BoxConstraint'
- Прямоугольное ограничение1
(по умолчанию) | положительная скалярная величинаПрямоугольное ограничение, заданное как разделенная разделенными запятой парами, состоящая из 'BoxConstraint'
и положительная скалярная величина.
Этот аргумент действителен только при 'Learner'
является 'svm'
(по умолчанию), и вы не задаете значение для прочности срока регуляризации 'Lambda'
. Можно задать любой из 'BoxConstraint'
или 'Lambda'
потому что прямоугольное ограничение (C) и коэффициент регуляризации (λ) связаны между собой C = 1/( λ n), где n - количество наблюдений (строки в X
).
Пример: 'BoxConstraint',100
Типы данных: single
| double
'Epsilon'
- Половина ширины эпсилонно-нечувствительной полосы'auto'
(по умолчанию) | неотрицательное скалярное значениеПоловина ширины эпсилонно-нечувствительной полосы, заданная как разделенная разделенными запятой парами, состоящая из 'Epsilon'
и 'auto'
или неотрицательное скалярное значение.
Для 'auto'
, а fitrkernel
функция определяет значение Epsilon
как iqr(Y)/13.49
, которая является оценкой десятой части стандартного отклонения с использованием межквартильной области значений переменной отклика Y
. Если iqr(Y)
равно нулю, тогда fitrkernel
устанавливает значение Epsilon
до 0,1.
'Epsilon'
действительно только тогда, когда Learner
является svm
.
Пример: 'Epsilon',0.3
Типы данных: single
| double
'NumExpansionDimensions'
- Количество размерностей расширенного пространства'auto'
(по умолчанию) | положительное целое числоКоличество размерностей расширенного пространства, заданное как разделенная разделенными запятой парами, состоящая из 'NumExpansionDimensions'
и 'auto'
или положительное целое число. Для 'auto'
, а fitrkernel
функция выбирает количество размерностей, используя 2.^ceil(min(log2(p)+5,15))
, где p
- количество предикторов.
Пример: 'NumExpansionDimensions',2^15
Типы данных: char
| string
| single
| double
'KernelScale'
- параметр шкалы ядра1
(по умолчанию) | 'auto'
| положительная скалярная величинаПараметр шкалы ядра, заданный как разделенная разделенными запятой парами, состоящая из 'KernelScale'
и 'auto'
или положительная скалярная величина. MATLAB получает случайный базис для расширения случайных функций с помощью параметра шкалы ядра. Для получения дополнительной информации смотрите Расширение случайных функций.
Если вы задаете 'auto'
, затем MATLAB выбирает соответствующий параметр шкалы ядра с помощью эвристической процедуры. Эта эвристическая процедура использует субдискретизацию, поэтому оценки могут варьироваться от одного вызова к другому. Поэтому, чтобы воспроизвести результаты, установите начальное число случайных чисел при помощи rng
перед тренировкой.
Пример: 'KernelScale','auto'
Типы данных: char
| string
| single
| double
'Lambda'
- Прочность термина регуляризации'auto'
(по умолчанию) | неотрицательной скаляромСила термина регуляризации, заданная как разделенная разделенными запятой парами, состоящая из 'Lambda'
и 'auto'
или неотрицательный скаляр.
Для 'auto'
, значение 'Lambda'
равен 1/ n, где n - количество наблюдений (строки в X
).
Можно задать любой из 'BoxConstraint'
или 'Lambda'
поскольку прямоугольное ограничение (C) и коэффициент регуляризации (λ) связаны между собой C = 1/( λ n).
Пример: 'Lambda',0.01
Типы данных: char
| string
| single
| double
'Learner'
- Тип линейной регрессионной модели'svm'
(по умолчанию) | 'leastsquares'
Тип линейной регрессионой модели, заданный как разделенная разделенными запятой парами, состоящая из 'Learner'
и 'svm'
или 'leastsquares'
.
В следующей таблице:
x является наблюдением ( вектором-строкой) от p предиктора переменных.
является преобразованием наблюдения ( вектора-строки) для функции расширения. T (x) карты x в в высокомерное пространство ().
β является вектором m коэффициентов.
b - скалярное смещение.
Значение | Алгоритм | Область значений отклика | Функция потерь |
---|---|---|---|
'leastsquares' | Линейная регрессия через обыкновенные наименьшие квадраты | y ∊ (- ∞, ∞) | Средняя квадратичная невязка (MSE): |
'svm' | Машина опорных векторов регрессия | То же, что и 'leastsquares' | Эпсилон-нечувствительный: |
Пример: 'Learner','leastsquares'
'Verbose'
- Уровень подробностей0
(по умолчанию) | 1
Уровень подробностей, заданный как разделенная разделенными запятой парами, состоящая из 'Verbose'
и любой из них 0
или 1
. Verbose
управляет объемом диагностической информации fitrkernel
отображается в командной строке.
Значение | Описание |
---|---|
0 | fitrkernel не отображает диагностическую информацию. |
1 | fitrkernel Отображения и сохраняют значение целевой функции, градиентные величины и другую диагностическую информацию. FitInfo.History содержит диагностическую информацию. |
Пример: 'Verbose',1
Типы данных: single
| double
'BlockSize'
- Максимальный объем выделенной памяти4e^3
(4GB) (по умолчанию) | положительная скалярная величинаМаксимальный объем выделенной памяти (в мегабайтах), заданный как разделенная разделенными запятой парами, состоящая из 'BlockSize'
и положительная скалярная величина.
Если fitrkernel
требуется больше памяти, чем значение BlockSize
чтобы сохранить преобразованные данные предиктора, MATLAB использует блочную стратегию. Для получения дополнительной информации о блочной стратегии, см. Алгоритмы.
Пример: 'BlockSize',1e4
Типы данных: single
| double
'RandomStream'
- Поток случайных чиселПоток случайных чисел для воспроизводимости преобразования данных, заданный как разделенная разделенными запятой парами, состоящая из 'RandomStream'
и объект случайного потока. Для получения дополнительной информации смотрите Расширение случайных функций.
Использование 'RandomStream'
для воспроизведения случайных базисных функций, которые fitrkernel
используется для преобразования данных в X
в высокомерное пространство. Для получения дополнительной информации смотрите Управление Global Stream с использованием RandStream и Создание и Управление потоком случайных чисел.
Пример: 'RandomStream',RandStream('mlfg6331_64')
'CategoricalPredictors'
- Категориальный список предикторов'all'
Категориальный список предикторов, заданный как одно из значений в этой таблице.
Значение | Описание |
---|---|
Вектор положительных целых чисел |
Каждая запись в векторе является индексом значением, соответствующим столбцу данных предиктора, который содержит категориальную переменную. Значения индекса находятся между 1 и Если |
Логический вектор |
A |
Матрица символов | Каждая строка матрицы является именем переменной. Имена должны совпадать с записями в PredictorNames . Дополните имена дополнительными пробелами, чтобы каждая строка матрицы символов имела одинаковую длину. |
Строковые массивы или массив ячеек векторов символов | Каждый элемент массива является именем переменной. Имена должны совпадать с записями в PredictorNames . |
'all' | Все предикторы категоричны. |
По умолчанию, если данные предиктора находятся в таблице (Tbl
), fitrkernel
принимает, что переменная категориальна, если это логический вектор, категориальный вектор, символьный массив, строковые массивы или массив ячеек из векторов символов. Если данные предиктора являются матрицей (X
), fitrkernel
принимает, что все предикторы непрерывны. Чтобы идентифицировать любые другие предикторы как категориальные предикторы, задайте их с помощью 'CategoricalPredictors'
аргумент имя-значение.
Для идентифицированных категориальных предикторов, fitrkernel
создает фиктивные переменные с помощью двух различных схем, в зависимости от того, является ли категориальная переменная неупорядоченной или упорядоченной. Для неупорядоченной категориальной переменной, fitrkernel
создает одну фиктивную переменную для каждого уровня категориальной переменной. Для упорядоченной категориальной переменной, fitrkernel
создает одну переменную с меньшим количеством манекенов, чем количество категорий. Для получения дополнительной информации смотрите Автоматическое создание переменных манекена.
Пример: 'CategoricalPredictors','all'
Типы данных: single
| double
| logical
| char
| string
| cell
'PredictorNames'
- Имена переменных предиктораИмена переменных предиктора, заданные как строковые массивы уникальных имен или массив ячеек из уникальных векторов символов. Функциональность PredictorNames
зависит от способа предоставления обучающих данных.
Если вы поставляете X
и Y
, тогда можно использовать PredictorNames
для назначения имен переменным предиктора в X
.
Порядок имен в PredictorNames
должен соответствовать порядку столбцов X
. То есть PredictorNames{1}
- имя X(:,1)
, PredictorNames{2}
- имя X(:,2)
и так далее. Кроме того, size(X,2)
и numel(PredictorNames)
должно быть равным.
По умолчанию PredictorNames
является {'x1','x2',...}
.
Если вы поставляете Tbl
, тогда можно использовать PredictorNames
выбрать, какие переменные предиктора использовать в обучении. То есть, fitrkernel
использует только переменные предиктора в 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
.
fitrkernel
Нормализует веса в сумме до 1.
Типы данных: single
| double
| char
| string
'CrossVal'
- флаг перекрестной валидации'off'
(по умолчанию) | 'on'
Флаг перекрестной проверки, заданный как разделенная разделенными запятой парами, состоящая из 'Crossval'
и 'on'
или 'off'
.
Если вы задаете 'on'
затем программное обеспечение реализует 10-кратную перекрестную валидацию.
Вы можете переопределить этот параметр перекрестной проверки с помощью CVPartition
, Holdout
, KFold
, или Leaveout
аргумент пары "имя-значение". Для создания модели с перекрестной проверкой можно использовать только один аргумент пары "имя-значение" перекрестной проверки за раз.
Пример: 'Crossval','on'
'CVPartition'
- Раздел перекрестной проверки[]
(по умолчанию) | cvpartition
Объект разделаРаздел перекрестной проверки, заданный как cvpartition
объект раздела, созданный cvpartition
. Объект раздела задает тип перекрестной валидации и индексацию для наборов обучения и валидации.
Чтобы создать перекрестно проверенную модель, можно задать только один из следующих четырех аргументов в виде имя-значение: CVPartition
, Holdout
, KFold
, или Leaveout
.
Пример: Предположим, что вы создаете случайный разбиение для 5-кратной перекрестной валидации при 500 наблюдениях при помощи cvp = cvpartition(500,'KFold',5)
. Затем можно задать перекрестно проверенную модель при помощи 'CVPartition',cvp
.
'Holdout'
- Доля данных для валидации отключенияДоля данных, используемых для валидации удержания, заданная в виде скалярного значения в области значений (0,1). Если вы задаете 'Holdout',p
, затем программное обеспечение завершает следующие шаги:
Случайный выбор и резервирование p*100
% данных в качестве данных валидации и train модели с использованием остальных данных.
Сохраните компактную, обученную модель в Trained
свойство перекрестно проверенной модели.
Чтобы создать перекрестно проверенную модель, можно задать только один из следующих четырех аргументов в виде имя-значение: CVPartition
, Holdout
, KFold
, или Leaveout
.
Пример: 'Holdout',0.1
Типы данных: double
| single
'KFold'
- Количество складок10
(по умолчанию) | положительное целое значение, больше 1Количество складок для использования в перекрестно проверенной модели, заданное как положительное целое значение, больше 1. Если вы задаете 'KFold',k
, затем программное обеспечение завершает следующие шаги:
Случайным образом разделите данные на k
наборы.
Для каждого набора зарезервируйте набор как данные валидации и обучите модель, используя другой k
- 1 комплект.
Сохраните k
компактные, обученные модели в k
-by-1 вектор камеры в Trained
свойство перекрестно проверенной модели.
Чтобы создать перекрестно проверенную модель, можно задать только один из следующих четырех аргументов в виде имя-значение: CVPartition
, Holdout
, KFold
, или Leaveout
.
Пример: 'KFold',5
Типы данных: single
| double
'Leaveout'
- Оставьте один из флагов перекрестной проверки'off'
(по умолчанию) | 'on'
Выходной флаг перекрестной проверки, заданный как разделенная разделенными запятой парами, состоящая из 'Leaveout'
и 'on'
или 'off'
. Если вы задаете 'Leaveout','on'
затем для каждого из n наблюдений (где n количество наблюдений, исключающих недостающие наблюдения) программное обеспечение завершает следующие шаги:
Зарезервируйте наблюдение как данные валидации и обучите модель с помощью других n - 1 наблюдений.
Сохраните n компактные обученные модели в камерах вектора камеры n-на-1 в Trained
свойство перекрестно проверенной модели.
Чтобы создать перекрестно проверенную модель, можно использовать одно из следующих четырёх аргументов пары "имя-значение" только: CVPartition
, Holdout
, KFold
, или Leaveout
.
Пример: 'Leaveout','on'
'BetaTolerance'
- Относительная погрешность на линейные коэффициенты и термин смещения1e-5
(по умолчанию) | неотрицательной скаляромОтносительная погрешность на линейные коэффициенты и термин смещения ( точка пересечения), заданный как разделенная разделенными запятой парами, состоящая из 'BetaTolerance'
и неотрицательный скаляр.
Давайте , то есть вектор коэффициентов и член смещения при t итерации оптимизации. Если , затем оптимизация прекращается.
Если вы также задаете GradientTolerance
затем оптимизация прекращается, когда программное обеспечение удовлетворяет любому критерию остановки.
Пример: 'BetaTolerance',1e-6
Типы данных: single
| double
'GradientTolerance'
- Абсолютный допуск градиента1e-6
(по умолчанию) | неотрицательной скаляромАбсолютный допуск градиента, заданный как разделенная разделенными запятой парами, состоящая из 'GradientTolerance'
и неотрицательный скаляр.
Давайте быть вектором градиента целевой функции относительно коэффициентов и члена смещения при t итерации оптимизации. Если , затем оптимизация прекращается.
Если вы также задаете BetaTolerance
затем оптимизация прекращается, когда программное обеспечение удовлетворяет любому критерию остановки.
Пример: 'GradientTolerance',1e-5
Типы данных: single
| double
'HessianHistorySize'
- Размер буфера истории для гессианского приближения15
(по умолчанию) | положительное целое числоРазмер буфера истории для Hessian приближения, заданный как разделенная запятой пара, состоящий из 'HessianHistorySize'
и положительное целое число. При каждой итерации, fitrkernel
составляет Гессиан при помощи статистики последних HessianHistorySize
итераций.
Пример: 'HessianHistorySize',10
Типы данных: single
| double
'IterationLimit'
- Максимальное количество итераций оптимизацииМаксимальное количество итераций оптимизации, заданное как разделенная разделенными запятой парами, состоящая из 'IterationLimit'
и положительное целое число.
Значение по умолчанию является 1000, если преобразованные данные помещаются в памяти, как задано BlockSize
. В противном случае значение по умолчанию является 100.
Пример: 'IterationLimit',500
Типы данных: single
| double
'OptimizeHyperparameters'
- Параметры для оптимизации'none'
(по умолчанию) | 'auto'
| 'all'
| строковые массивы или массив ячеек из допустимых имен параметров | вектор optimizableVariable
объектыОптимизируемые параметры, заданные как разделенная разделенными запятой парами, состоящая из 'OptimizeHyperparameters'
и одно из следующих значений:
'none'
- Не оптимизировать.
'auto'
- Использовать {'KernelScale','Lambda','Epsilon'}
.
'all'
- Оптимизируйте все подходящие параметры.
Массив ячеек с допустимыми именами параметров.
Вектор optimizableVariable
объекты, как правило, выходные данные hyperparameters
.
Оптимизация пытается минимизировать потери перекрестной валидации (ошибка) для fitrkernel
путем изменения параметров. Чтобы контролировать тип перекрестной валидации и другие аспекты оптимизации, используйте HyperparameterOptimizationOptions
аргумент пары "имя-значение".
Примечание
'OptimizeHyperparameters'
значения переопределяют все значения, которые вы устанавливаете, используя другие аргументы пары "имя-значение". Для примера установка 'OptimizeHyperparameters'
на 'auto'
вызывает 'auto'
значения для применения.
Подходящие параметры для fitrkernel
являются:
Epsilon
— fitrkernel
поиск среди положительных значений, по умолчанию логарифмический в области значений [1e-3,1e2]*iqr(Y)/1.349
.
KernelScale
— fitrkernel
поиск среди положительных значений, по умолчанию логарифмический в области значений [1e-3,1e3]
.
Lambda
— fitrkernel
поиск среди положительных значений, по умолчанию логарифмический в области значений [1e-3,1e3]/n
, где n
количество наблюдений.
Learner
— fitrkernel
поиск среди 'svm'
и 'leastsquares'
.
NumExpansionDimensions
— fitrkernel
поиск среди положительных целых чисел, по умолчанию логарифмический в области значений [100,10000]
.
Установите параметры nondefault путем передачи вектора optimizableVariable
объекты, которые имеют значения nondefault. Для примера:
load carsmall params = hyperparameters('fitrkernel',[Horsepower,Weight],MPG); params(2).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
- Обученная регрессионая модель ядраRegressionKernel
объект модели | RegressionPartitionedKernel
перекрестно проверенный объект моделиОбученная регрессионая модель ядра, возвращенная как RegressionKernel
объект модели
перекрестно проверенный объект модели.
Если вы задаете любой из аргументов пары "имя-значение" CrossVal
, CVPartition
, Holdout
, KFold
, или Leaveout
, затем Mdl
является RegressionPartitionedKernel
перекрестно-проверенная модель. В противном случае Mdl
является RegressionKernel
модель.
Ссылка на свойства Mdl
, используйте запись через точку. Для примера введите Mdl.NumExpansionDimensions
в Командном окне, чтобы отобразить количество размерностей развернутого пространства.
Примечание
В отличие от других регрессионных моделей и для экономичного использования памяти, RegressionKernel
объект модели не хранит обучающие данные или детали процесса обучения (для примера, истории сходимости).
FitInfo
- Детали оптимизацииДетали оптимизации, возвращенные как массив структур, включая поля, описанные в этой таблице. Поля содержат окончательные значения или спецификации аргументов пары "имя-значение".
Область | Описание |
---|---|
Solver | Метод минимизации целевой функции: |
LossFunction | Функция потерь. Средняя квадратичная невязка (MSE) или нечувствительная к эпсилону, в зависимости от типа линейной регрессионой модели. См. Learner . |
Lambda | Сила термина регуляризации. См. Lambda . |
BetaTolerance | Относительная погрешность на линейные коэффициенты и термин смещения. См. BetaTolerance . |
GradientTolerance | Абсолютный допуск градиента. См. GradientTolerance . |
ObjectiveValue | Значение целевой функции, когда оптимизация прекращается. Регрессионные потери плюс термин регуляризации составляют целевую функцию. |
GradientMagnitude | Бесконечная норма вектора градиента целевой функции, когда оптимизация заканчивается. См. GradientTolerance . |
RelativeChangeInBeta | Относительные изменения линейных коэффициентов и члена смещения, когда оптимизация заканчивается. См. BetaTolerance . |
FitTime | Прошло время настенного времени (в секундах), необходимое для соответствия модели данным. |
History | История информации об оптимизации. Это поле также включает информацию оптимизации от обучения Mdl . Это поле пустое ([] ), если вы задаете 'Verbose',0 . Для получения дополнительной информации смотрите Verbose и Алгоритмы. |
Для доступа к полям используйте запись через точку. Для примера, чтобы получить доступ к вектору значений целевой функции для каждой итерации, введите FitInfo.ObjectiveValue
в Командном окне.
Исследуйте информацию, предоставленную FitInfo
оценить, является ли сходимость удовлетворительной.
HyperparameterOptimizationResults
- Оптимизация гиперпараметров перекрестной валидацииBayesianOptimization
объект | таблица гиперпараметров и связанных значенийОптимизация гиперпараметров с перекрестной валидацией, возвращенная как BayesianOptimization
объект или таблица гиперпараметров и связанных значений. Выход непуст, когда значение 'OptimizeHyperparameters'
не 'none'
. Выходное значение зависит от Optimizer
значение поля 'HyperparameterOptimizationOptions'
аргумент пары "имя-значение":
Значение Optimizer Область | Значение HyperparameterOptimizationResults |
---|---|
'bayesopt' (по умолчанию) | Объект BayesianOptimization классов |
'gridsearch' или 'randomsearch' | Таблица используемых гиперпараметров, наблюдаемых значений целевой функции (потери перекрестной валидации) и ранг наблюдений от самого низкого (лучшего) до самого высокого (худшего) |
fitrkernel
не принимает начальные условия для линейных коэффициентов бета (β) и термина смещения (b), используемых для определения функции принятия решения,
fitrkernel
не поддерживает стандартизацию.
Расширение случайных функций, такое как Random Kitchen Sinks [1] и Fastfood [2], является схемой для аппроксимации Гауссовых ядер алгоритма регрессии ядра для больших данных вычислительно эффективным способом. Расширение случайных функций более практично для приложений больших данных, которые имеют большие наборы обучающих данных, но могут также применяться к меньшим наборам данных, которые помещаются в памяти.
Алгоритм регрессии ядра ищет оптимальную функцию, которая отклоняется от каждой точки данных отклика (yi) на значения, не большие, чем запас эпсилона (ε), после отображения данных предиктора в высоко-размерное пространство.
Некоторые регрессионные задачи не могут быть описаны адекватно с помощью линейной модели. В таких случаях получите нелинейную регрессионую модель путем замены точечного произведения x 1 x 2 ′ на нелинейную функцию ядра , где xi - i-е наблюдение (вектор-строка) и φ (xi) - преобразование, которое преобразует xi в высокомерное пространство (называемое «трюком ядра»). Однако оценка G (x 1, x 2), матрицы Грамма, для каждой пары наблюдений является вычислительно дорогой для большого набора данных (больших n).
Схема расширения случайных функций находит случайное преобразование, так что ее точечный продукт аппроксимирует Гауссово ядро. То есть,
где T (x) карты x в в высокомерное пространство (). Схема Random Kitchen Sink [1] использует случайное преобразование
где является выборкой, нарисованной из и σ2 является шкалой ядра. Эта схема требует O (m p) расчета и хранения. Схема Фастфуда [2] вводит другой случайный базис V вместо того, чтобы Z с использованием матриц Адамара, объединенных с матрицами Гауссова масштабирования. Этот случайный базис снижает расчет затраты до O (m log
p) и сокращает объем памяти до O (m ).
Можно задать значения для m и σ2, с использованием NumExpansionDimensions
и KernelScale
Аргументы пары "имя-значение" из fitrkernel
, соответственно.
fitrkernel
функция использует схему Fastfood для случайного расширения признаков и использует линейную регрессию, чтобы обучить регрессионую модель Гауссова ядра. В отличие от решателей в fitrsvm
функция, которая требует расчета n -by n Gram матрицы, решателя вfitrkernel
нужно только сформировать матрицу размера n -by - m, причем m обычно намного меньше, чем n для больших данных.
Прямоугольное ограничение является параметром, который управляет максимальным штрафом, налагаемым на наблюдения, которые находятся вне поля эпсилона (ε), и помогает предотвратить избыточную подгонку (регуляризацию). Увеличение ограничения коробки может привести к увеличению времени обучения.
Прямоугольное ограничение (C) и коэффициент регуляризации (λ) связаны C = 1/( λ n), где n - количество наблюдений.
fitrkernel
минимизирует регуляризованную целевую функцию с помощью решателя с ограниченной памятью Broyden-Fletcher-Goldfarb-Shanno (LBFGS) с регуляризацией гребня (L 2). Чтобы найти тип решателя LBFGS, используемый для обучения, введите FitInfo.Solver
в Командном окне.
'LBFGS-fast'
- решатель LBFGS.
'LBFGS-blockwise'
- решатель LBFGS с блочной стратегией. Если fitrkernel
требуется больше памяти, чем значение BlockSize
чтобы сохранить преобразованные данные предиктора, он использует блочную стратегию.
'LBFGS-tall'
- решатель LBFGS с блочной стратегией для длинных массивов.
Когда fitrkernel
использует блочную стратегию, fitrkernel
реализует LBFGS путем распределения вычисления потерь и градиента между различными частями данных при каждой итерации. Также, fitrkernel
уточняет начальные оценки линейных коэффициентов и члена смещения путем локальной подгонки модели к частям данных и объединения коэффициентов путем усреднения. Если вы задаете 'Verbose',1
, затем fitrkernel
отображает диагностическую информацию для каждого прохода данных и хранит информацию в History
область FitInfo
.
Когда fitrkernel
не использует блочную стратегию, начальные оценки являются нулями. Если вы задаете 'Verbose',1
, затем fitrkernel
отображает диагностическую информацию для каждой итерации и хранит информацию в History
область FitInfo
.
[1] Рахими, А. и Б. Рехт. «Случайные функции для крупномасштабных машин-ядер». Усовершенствования в системах нейронной обработки информации. Том 20, 2008, стр. 1177-1184.
[2] Le, Q., T. Sarlós, and A. Smola. Fastfood - аппроксимация расширений ядра в логинейном времени. Материалы 30-й Международной конференции по машинному обучению. Том 28, № 3, 2013, с. 244-252.
[3] Хуан, П. С., Х. Аврон, Т. Н. Сайнатх, В. Синдхвани и Б. Рамабхадран. «Методы ядра соответствуют глубоким нейронным сетям на TIMIT». 2014 IEEE International Conference on Acoustics, Speech and Signal Processing. 2014, стр 205–209.
Указания и ограничения по применению:
fitrkernel
не поддерживает высокие table
данные.
Некоторые аргументы пары "имя-значение" имеют различные значения по умолчанию по сравнению со значениями по умолчанию для оперативной памяти fitrkernel
функция. Поддерживаемые аргументы пары "имя-значение" и любые различия:
'BoxConstraint'
'Epsilon'
'NumExpansionDimensions'
'KernelScale'
'Lambda'
'Learner'
'Verbose'
- Значение по умолчанию 1
.
'BlockSize'
'RandomStream'
'ResponseTransform'
'Weights'
- Значение должно быть длинный массив.
'BetaTolerance'
- Значение по умолчанию ослаблено до 1e–3
.
'GradientTolerance'
- Значение по умолчанию ослаблено до 1e–5
.
'HessianHistorySize'
'IterationLimit'
- Значение по умолчанию ослаблено до 20
.
'OptimizeHyperparameters'
'HyperparameterOptimizationOptions'
- Для перекрестной валидации tall optimization поддерживает только 'Holdout'
валидация. По умолчанию программное обеспечение выбирает и резервирует 20% данных в качестве данных валидации удержания и обучает модель, используя остальную часть данных. Вы можете задать другое значение для задержанной дроби с помощью этого аргумента. Для примера задайте 'HyperparameterOptimizationOptions',struct('Holdout',0.3)
зарезервировать 30% данных в качестве данных валидации.
Если 'KernelScale'
является 'auto'
, затем fitrkernel
использует случайный поток, управляемый tallrng
для субдискретизации. Для воспроизводимости необходимо задать начальное число случайных чисел как для глобального потока, так и для случайного потока, управляемого tallrng
.
Если 'Lambda'
является 'auto'
, затем fitrkernel
может пройти дополнительный проход через данные, чтобы вычислить количество наблюдений в X
.
fitrkernel
использует блочную стратегию. Для получения дополнительной информации смотрите Алгоритмы.
Для получения дополнительной информации см. Раздел «Длинные массивы»
Чтобы выполнить параллельную оптимизацию гипероптимизации параметров управления, используйте 'HyperparameterOptimizationOptions', struct('UseParallel',true)
аргумент имя-значение в вызове этой функции.
Для получения дополнительной информации об оптимизации параллельной гипероптимизации параметров управления смотрите Parallel Bayesian Optimization.
Общие сведения о параллельных вычислениях см. в разделе Запуск функций MATLAB с поддержкой автоматических параллелей (Parallel Computing Toolbox).
bayesopt
| bestPoint
| fitrlinear
| fitrsvm
| loss
| predict
| RegressionKernel
| RegressionPartitionedKernel
| resume
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.