Подгонка Гауссовой модели классификации ядра с использованием расширения случайных функций
fitckernel
обучает или перекрестно проверяет двоичную Гауссову модель классификации ядра для нелинейной классификации. fitckernel
является более практичным для приложений больших данных, которые имеют большие наборы обучающих данных, но могут также применяться к меньшим наборам данных, которые помещаются в памяти.
fitckernel
преобразует данные в низкомерном пространстве в высокомерное пространство, затем подбирает линейную модель в высокомерном пространстве путем минимизации регуляризованной целевой функции. Получение линейной модели в высокомерном пространстве эквивалентно применению Гауссова ядра к модели в низкомерном пространстве. Доступные линейные классификационные модели включают регуляризованные машины опорных векторов (SVM) и логистические регрессионые модели.
Чтобы обучить нелинейную модель SVM для двоичной классификации данных в памяти, см. fitcsvm
.
возвращает двоичную Гауссову классификационную модель ядра, обученную с использованием данных предиктора в Mdl
= fitckernel(X
,Y
)X
и соответствующие метки классов в Y
. fitckernel
функция преобразует предикторы в низкомерном пространстве в высокомерное пространство, затем подгоняет двоичную модель SVM к преобразованным предикторам и меткам классов. Эта линейная модель эквивалентна Гауссовой модели классификации ядра в низкомерном пространстве.
возвращает модель классификации ядра Mdl
= fitckernel(Tbl
,ResponseVarName
)Mdl
обучен с использованием переменных предиктора, содержащихся в таблице Tbl
и метки классов в Tbl.ResponseVarName
.
задает опции, использующие один или несколько аргументы пары "имя-значение" в дополнение к любой комбинации входных аргументов в предыдущих синтаксисах. Для примера можно реализовать логистическую регрессию, задать количество размерностей расширенного пространства или задать для перекрестной проверки.Mdl
= fitckernel(___,Name,Value
)
[
также возвращает результаты оптимизации гипероптимизации параметров управления Mdl
,FitInfo
,HyperparameterOptimizationResults
] = fitckernel(___)HyperparameterOptimizationResults
когда вы оптимизируете гиперпараметры при помощи 'OptimizeHyperparameters'
аргумент пары "имя-значение".
Обучите модель классификации двоичных ядер с помощью SVM.
Загрузите ionosphere
набор данных. Этот набор данных имеет 34 предиктора и 351 двоичный ответ для радиолокационных возвратов, либо плохо ('b'
) или хорошо ('g'
).
load ionosphere
[n,p] = size(X)
n = 351
p = 34
resp = unique(Y)
resp = 2x1 cell
{'b'}
{'g'}
Обучите двоичную модель классификации ядра, которая определяет, является ли радарный возврат плохим ('b'
) или хорошо ('g'
). Извлеките сводные данные подгонки, чтобы определить, насколько хорошо алгоритм оптимизации подходит модели к данным.
rng('default') % For reproducibility [Mdl,FitInfo] = fitckernel(X,Y)
Mdl = ClassificationKernel ResponseName: 'Y' ClassNames: {'b' 'g'} Learner: 'svm' NumExpansionDimensions: 2048 KernelScale: 1 Lambda: 0.0028 BoxConstraint: 1 Properties, Methods
FitInfo = struct with fields:
Solver: 'LBFGS-fast'
LossFunction: 'hinge'
Lambda: 0.0028
BetaTolerance: 1.0000e-04
GradientTolerance: 1.0000e-06
ObjectiveValue: 0.2604
GradientMagnitude: 0.0028
RelativeChangeInBeta: 8.2512e-05
FitTime: 1.0377
History: []
Mdl
является ClassificationKernel
модель. Чтобы проверить ошибку классификации в выборке, можно пройти Mdl
и обучающих данных или новых данных для loss
функция. Или ты можешь пройти Mdl
и новые данные предиктора в predict
функция для предсказания меток классов для новых наблюдений. Можно также пройти Mdl
и обучающих данных к resume
функция для продолжения обучения.
FitInfo
- массив структур, содержащий информацию об оптимизации. Использование FitInfo
для определения, являются ли измерения оптимизации завершением удовлетворительными.
Для лучшей точности можно увеличить максимальное количество итераций оптимизации ('IterationLimit'
) и уменьшить значения допусков ('BetaTolerance'
и 'GradientTolerance'
) с помощью аргументов пары "имя-значение". Это может улучшить такие меры, как ObjectiveValue
и RelativeChangeInBeta
в FitInfo
. Можно также оптимизировать параметры модели при помощи 'OptimizeHyperparameters'
аргумент пары "имя-значение".
Загрузите ionosphere
набор данных. Этот набор данных имеет 34 предиктора и 351 двоичный ответ для радиолокационных возвратов, либо плохо ('b'
) или хорошо ('g'
).
load ionosphere rng('default') % For reproducibility
Перекрестная проверка модели классификации двоичных ядер. По умолчанию программа использует 10-кратную перекрестную валидацию.
CVMdl = fitckernel(X,Y,'CrossVal','on')
CVMdl = ClassificationPartitionedKernel CrossValidatedModel: 'Kernel' ResponseName: 'Y' NumObservations: 351 KFold: 10 Partition: [1x1 cvpartition] ClassNames: {'b' 'g'} ScoreTransform: 'none' Properties, Methods
numel(CVMdl.Trained)
ans = 10
CVMdl
является ClassificationPartitionedKernel
модель. Потому что fitckernel
реализует 10-кратную перекрестную валидацию, CVMdl
содержит 10 ClassificationKernel
модели, которые программное обеспечение обучает по обучающим-складным (in-fold) наблюдениям.
Оцените перекрестную ошибку классификации.
kfoldLoss(CVMdl)
ans = 0.0940
Вероятность классификационных ошибок составляет приблизительно 9%.
Оптимизируйте гиперпараметры автоматически с помощью 'OptimizeHyperparameters'
аргумент пары "имя-значение".
Загрузите ionosphere
набор данных. Этот набор данных имеет 34 предиктора и 351 двоичный ответ для радиолокационных возвратов, либо плохо ('b'
) или хорошо ('g'
).
load ionosphere
Найдите гиперпараметры, которые минимизируют пятикратные потери при перекрестной проверке с помощью автоматической оптимизации гипероптимизации параметров управления. Задайте 'OptimizeHyperparameters'
как 'auto'
так что fitckernel
находит оптимальные значения 'KernelScale'
и 'Lambda'
Аргументы пары "имя-значение". Для воспроизводимости установите случайный seed и используйте 'expected-improvement-plus'
функция сбора.
rng('default') [Mdl,FitInfo,HyperparameterOptimizationResults] = fitckernel(X,Y,'OptimizeHyperparameters','auto',... 'HyperparameterOptimizationOptions',struct('AcquisitionFunctionName','expected-improvement-plus'))
|=====================================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | KernelScale | Lambda | | | result | | runtime | (observed) | (estim.) | | | |=====================================================================================================| | 1 | Best | 0.35897 | 0.92665 | 0.35897 | 0.35897 | 64.836 | 4.4811e-06 | | 2 | Accept | 0.35897 | 4.6519 | 0.35897 | 0.35897 | 0.036335 | 0.015885 | | 3 | Accept | 0.39601 | 5.5965 | 0.35897 | 0.36053 | 0.0022147 | 6.8254e-06 | | 4 | Accept | 0.35897 | 1.0763 | 0.35897 | 0.35898 | 5.1259 | 0.28097 | | 5 | Accept | 0.35897 | 3.5904 | 0.35897 | 0.35897 | 0.24853 | 0.10828 | | 6 | Accept | 0.35897 | 0.74403 | 0.35897 | 0.35897 | 885.09 | 0.00057316 | | 7 | Best | 0.10826 | 3.5537 | 0.10826 | 0.10833 | 8.0346 | 0.0048286 | | 8 | Best | 0.076923 | 3.2422 | 0.076923 | 0.076999 | 7.0902 | 0.0034068 | | 9 | Accept | 0.091168 | 3.3186 | 0.076923 | 0.077059 | 9.1504 | 0.0020604 | | 10 | Best | 0.062678 | 3.9429 | 0.062678 | 0.062723 | 3.5487 | 0.0025912 | | 11 | Accept | 0.062678 | 3.2212 | 0.062678 | 0.062741 | 2.3869 | 0.003321 | | 12 | Accept | 0.41026 | 3.1638 | 0.062678 | 0.062536 | 0.14075 | 0.0022499 | | 13 | Accept | 0.062678 | 3.3683 | 0.062678 | 0.062532 | 3.4215 | 0.0036803 | | 14 | Accept | 0.062678 | 4.2194 | 0.062678 | 0.061956 | 3.2928 | 0.0030533 | | 15 | Best | 0.05698 | 2.6177 | 0.05698 | 0.057204 | 5.0598 | 0.0025499 | | 16 | Accept | 0.062678 | 5.4455 | 0.05698 | 0.057186 | 5.3401 | 0.0015096 | | 17 | Accept | 0.05698 | 4.4441 | 0.05698 | 0.057118 | 1.813 | 0.0069209 | | 18 | Accept | 0.059829 | 4.0439 | 0.05698 | 0.057092 | 1.5122 | 0.0046637 | | 19 | Accept | 0.059829 | 4.2654 | 0.05698 | 0.05718 | 1.9277 | 0.0056364 | | 20 | Accept | 0.065527 | 3.8732 | 0.05698 | 0.057189 | 1.4064 | 0.0094306 | |=====================================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | KernelScale | Lambda | | | result | | runtime | (observed) | (estim.) | | | |=====================================================================================================| | 21 | Accept | 0.05698 | 5.1486 | 0.05698 | 0.057033 | 5.1719 | 0.0023614 | | 22 | Best | 0.054131 | 12.263 | 0.054131 | 0.054176 | 1.9618 | 6.5704e-05 | | 23 | Best | 0.042735 | 5.0079 | 0.042735 | 0.042763 | 1.9463 | 1.0169e-05 | | 24 | Accept | 0.082621 | 5.1015 | 0.042735 | 0.042775 | 1.0661 | 1.3245e-05 | | 25 | Accept | 0.054131 | 10.538 | 0.042735 | 0.042789 | 3.288 | 2.0035e-05 | | 26 | Accept | 0.062678 | 5.7598 | 0.042735 | 0.042769 | 2.657 | 3.0334e-06 | | 27 | Accept | 0.059829 | 7.2348 | 0.042735 | 0.043054 | 2.0381 | 1.9791e-05 | | 28 | Accept | 0.042735 | 9.0399 | 0.042735 | 0.042764 | 3.5043 | 0.0001237 | | 29 | Accept | 0.054131 | 5.0304 | 0.042735 | 0.042764 | 1.3897 | 3.2288e-06 | | 30 | Accept | 0.062678 | 7.0101 | 0.042735 | 0.042792 | 2.2414 | 0.0002259 |
__________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 177.4022 seconds Total objective function evaluation time: 141.4395 Best observed feasible point: KernelScale Lambda ___________ __________ 1.9463 1.0169e-05 Observed objective function value = 0.042735 Estimated objective function value = 0.043106 Function evaluation time = 5.0079 Best estimated feasible point (according to models): KernelScale Lambda ___________ _________ 3.5043 0.0001237 Estimated objective function value = 0.042792 Estimated function evaluation time = 8.6972
Mdl = ClassificationKernel ResponseName: 'Y' ClassNames: {'b' 'g'} Learner: 'svm' NumExpansionDimensions: 2048 KernelScale: 3.5043 Lambda: 1.2370e-04 BoxConstraint: 23.0320 Properties, Methods
FitInfo = struct with fields:
Solver: 'LBFGS-fast'
LossFunction: 'hinge'
Lambda: 1.2370e-04
BetaTolerance: 1.0000e-04
GradientTolerance: 1.0000e-06
ObjectiveValue: 0.0426
GradientMagnitude: 0.0028
RelativeChangeInBeta: 8.9154e-05
FitTime: 2.0813
History: []
HyperparameterOptimizationResults = BayesianOptimization with properties: ObjectiveFcn: @createObjFcn/inMemoryObjFcn VariableDescriptions: [4x1 optimizableVariable] Options: [1x1 struct] MinObjective: 0.0427 XAtMinObjective: [1x2 table] MinEstimatedObjective: 0.0428 XAtMinEstimatedObjective: [1x2 table] NumObjectiveEvaluations: 30 TotalElapsedTime: 177.4022 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]
Для больших данных процедура оптимизации может занять много времени. Если набор данных слишком велик, чтобы запустить процедуру оптимизации, можно попытаться оптимизировать параметры, используя только частичные данные. Используйте datasample
и задайте 'Replace','false'
для выборочных данных без замены.
X
- Данные предиктораДанные предиктора, заданные как n -by p числовая матрица, где n - количество наблюдений, а p - количество предикторов.
Длина Y
и количество наблюдений в X
должно быть равным.
Типы данных: single
| double
Y
- Метки классовМетки класса, заданные как категориальные символьные или строковые массивы, логический или числовой вектор или массив ячеек из векторов символов.
fitckernel
поддерживает только двоичную классификацию. Либо Y
должен содержать ровно два различных класса, или необходимо задать два класса для обучения при помощи ClassNames
аргумент пары "имя-значение".
Если Y
является символьный массив, тогда каждый элемент должен соответствовать одной строке массива.
Длина Y
должно быть равно количеству наблюдений в X
или Tbl
.
Хорошей практикой является определение порядка классов при помощи ClassNames
аргумент пары "имя-значение".
Типы данных: categorical
| char
| string
| logical
| single
| double
| cell
Tbl
- Выборочные данныеВыборочные данные, используемых для обучения модели, заданная как таблица. Каждая строка Tbl
соответствует одному наблюдению, и каждый столбец соответствует одной переменной предиктора. Опционально Tbl
может содержать один дополнительный столбец для переменной отклика. Многополюсные переменные и массивы ячеек, отличные от массивов ячеек векторов символов, не разрешены.
Если Tbl
содержит переменную отклика, и необходимо использовать все оставшиеся переменные в Tbl
в качестве предикторов, затем задайте переменную отклика при помощи ResponseVarName
.
Если Tbl
содержит переменную отклика, и необходимо использовать только подмножество остальных переменных в Tbl
в качестве предикторов задайте формулу при помощи formula
.
Если Tbl
не содержит переменную отклика, затем задает переменную отклика при помощи Y
. Длина переменной отклика и количество строк в Tbl
должно быть равным.
Типы данных: table
ResponseVarName
- Имя переменной откликаTbl
Имя переменной отклика, заданное как имя переменной в Tbl
.
Вы должны задать ResponseVarName
как вектор символов или строковый скаляр. Для примера, если переменная отклика Y
хранится как Tbl.Y
, затем укажите его следующим 'Y'
. В противном случае программное обеспечение обрабатывает все столбцы Tbl
, включая Y
, как предикторы при обучении модели.
Переменная отклика должна быть категориальными символьными или строковыми массивами; логический или числовой вектор; или массив ячеек из векторов символов. Если Y
является символьным массивом, тогда каждый элемент переменной отклика должен соответствовать одной строке массива.
Хорошей практикой является определение порядка классов при помощи ClassNames
аргумент имя-значение.
Типы данных: char
| string
formula
- Объяснительная модель переменной отклика и подмножества переменных предиктораОбъяснительная модель переменной отклика и подмножества переменных предиктора, заданная в виде вектора символов или строкового скаляра в форме 'Y~x1+x2+x3'
. В этой форме Y
представляет переменную отклика, и x1
, x2
, и x3
представляют переменные предиктора.
Чтобы задать подмножество переменных в Tbl
в качестве предикторов для настройки модели используйте формулу. Если вы задаете формулу, то программное обеспечение не использует никаких переменных в Tbl
которые не появляются в formula
.
Имена переменных в формуле должны быть обоими именами переменных в Tbl
(Tbl.Properties.VariableNames
) и действительный MATLAB® идентификаторы. Можно проверить имена переменных в Tbl
при помощи isvarname
функция. Если имена переменных недопустимы, можно преобразовать их, используя matlab.lang.makeValidName
функция.
Типы данных: char
| string
Примечание
Программное обеспечение лечит NaN
, пустой символьный вектор (''
), пустая строка (""
), <missing>
, и <undefined>
элементы как отсутствующие значения и удаляет наблюдения с любой из этих характеристик:
Отсутствующее значение в переменной отклика
По крайней мере, одно отсутствующее значение в наблюдении предиктора (строка в X
или Tbl
)
NaN
значение или 0
вес ('Weights'
)
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
Mdl = fitckernel(X,Y,'Learner','logistic','NumExpansionDimensions',2^15,'KernelScale','auto')
реализует логистическую регрессию после отображения данных предиктора в 2^15
размерное пространство с использованием расширения функций с параметром шкалы ядра, выбранным эвристической процедурой.Примечание
Вы не можете использовать какой-либо аргумент пары "имя-значение" перекрестной проверки наряду с 'OptimizeHyperparameters'
аргумент пары "имя-значение". Можно изменить перекрестную валидацию для 'OptimizeHyperparameters'
только при помощи 'HyperparameterOptimizationOptions'
аргумент пары "имя-значение".
'Learner'
- Тип линейной классификационной модели'svm'
(по умолчанию) | 'logistic'
Тип модели линейной классификации, заданный как разделенная разделенными запятой парами, состоящая из 'Learner'
и 'svm'
или 'logistic'
.
В следующей таблице:
x является наблюдением ( вектором-строкой) от p предиктора переменных.
является преобразованием наблюдения ( вектора-строки) для функции расширения. T (x) карты x в в высокомерное пространство ().
β является вектором m коэффициентов.
b - скалярное смещение.
Значение | Алгоритм | Область значений отклика | Функция потерь |
---|---|---|---|
'svm' | Поддерживайте векторную машину | <reservedrangesplaceholder0> {-1,1}; 1 для положительного класса и -1 в противном случае | Шарнир: |
'logistic' | Логистическая регрессия | То же, что и 'svm' | Отклонение (логистическое): |
Пример: 'Learner','logistic'
'NumExpansionDimensions'
- Количество размерностей расширенного пространства'auto'
(по умолчанию) | положительное целое числоКоличество размерностей расширенного пространства, заданное как разделенная разделенными запятой парами, состоящая из 'NumExpansionDimensions'
и 'auto'
или положительное целое число. Для 'auto'
, fitckernel
функция выбирает количество размерностей, используя 2.^ceil(min(log2(p)+5,15))
, где p
- количество предикторов.
Для получения дополнительной информации смотрите Расширение случайных функций.
Пример: 'NumExpansionDimensions',2^15
Типы данных: char
| string
| single
| double
'KernelScale'
- параметр шкалы ядра1
(по умолчанию) | 'auto'
| положительная скалярная величинаПараметр шкалы ядра, заданный как разделенная разделенными запятой парами, состоящая из 'KernelScale'
и 'auto'
или положительная скалярная величина. Программа получает случайный базис для расширения случайных функций с помощью параметра шкалы ядра. Для получения дополнительной информации смотрите Расширение случайных функций.
Если вы задаете 'auto'
, затем программное обеспечение выбирает соответствующий параметр шкалы ядра с помощью эвристической процедуры. Эта эвристическая процедура использует субдискретизацию, поэтому оценки могут варьироваться от одного вызова к другому. Поэтому, чтобы воспроизвести результаты, установите начальное число случайных чисел при помощи rng
перед тренировкой.
Пример: 'KernelScale','auto'
Типы данных: char
| string
| single
| double
'BoxConstraint'
- Прямоугольное ограничениеПрямоугольное ограничение, заданное как разделенная разделенными запятой парами, состоящая из 'BoxConstraint'
и положительная скалярная величина.
Этот аргумент действителен только при 'Learner'
является 'svm'
(по умолчанию), и вы не задаете значение для прочности срока регуляризации 'Lambda'
. Можно задать любой из 'BoxConstraint'
или 'Lambda'
потому что прямоугольное ограничение (C) и коэффициент регуляризации (λ) связаны между собой C = 1/( λ n), где n - количество наблюдений.
Пример: 'BoxConstraint',100
Типы данных: single
| double
'Lambda'
- Прочность термина регуляризации'auto'
(по умолчанию) | неотрицательной скаляромСила термина регуляризации, заданная как разделенная разделенными запятой парами, состоящая из 'Lambda'
и 'auto'
или неотрицательный скаляр.
Для 'auto'
, значение 'Lambda'
равен 1/ n, где n - количество наблюдений.
Можно задать любой из 'BoxConstraint'
или 'Lambda'
поскольку прямоугольное ограничение (C) и коэффициент регуляризации (λ) связаны между собой C = 1/( λ n).
Пример: 'Lambda',0.01
Типы данных: char
| string
| single
| double
'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
'IterationLimit'
- Максимальное количество итераций оптимизацииМаксимальное количество итераций оптимизации, заданное как разделенная разделенными запятой парами, состоящая из 'IterationLimit'
и положительное целое число.
Значение по умолчанию является 1000, если преобразованные данные помещаются в памяти, как задано BlockSize
аргумент пары "имя-значение". В противном случае значение по умолчанию является 100.
Пример: 'IterationLimit',500
Типы данных: single
| double
'BlockSize'
- Максимальный объем выделенной памяти4e^3
(4GB) (по умолчанию) | положительная скалярная величинаМаксимальный объем выделенной памяти (в мегабайтах), заданный как разделенная разделенными запятой парами, состоящая из 'BlockSize'
и положительная скалярная величина.
Если fitckernel
требуется больше памяти, чем значение 'BlockSize'
чтобы сохранить преобразованные данные предиктора, программное обеспечение использует блочную стратегию. Для получения дополнительной информации о блочной стратегии, см. Алгоритмы.
Пример: 'BlockSize',1e4
Типы данных: single
| double
'RandomStream'
- Поток случайных чиселПоток случайных чисел для воспроизводимости преобразования данных, заданный как разделенная разделенными запятой парами, состоящая из 'RandomStream'
и объект случайного потока. Для получения дополнительной информации смотрите Расширение случайных функций.
Использование 'RandomStream'
для воспроизведения случайных базисных функций, которые fitckernel
использует, чтобы преобразовать данные предиктора в высокомерное пространство. Для получения дополнительной информации смотрите Управление Global Stream с использованием RandStream и Создание и Управление потоком случайных чисел.
Пример: 'RandomStream',RandStream('mlfg6331_64')
'HessianHistorySize'
- Размер буфера истории для гессианского приближения15
(по умолчанию) | положительное целое числоРазмер буфера истории для Hessian приближения, заданный как разделенная запятой пара, состоящий из 'HessianHistorySize'
и положительное целое число. При каждой итерации, fitckernel
составляет гессианское приближение при помощи статистики последних HessianHistorySize
итераций.
Пример: 'HessianHistorySize',10
Типы данных: single
| double
'Verbose'
- Уровень подробностей0
(по умолчанию) | 1
Уровень подробностей, заданный как разделенная разделенными запятой парами, состоящая из 'Verbose'
и любой из них 0
или 1
. Verbose
управляет отображением диагностической информации в командной строке.
Значение | Описание |
---|---|
0 | fitckernel не отображает диагностическую информацию. |
1 | fitckernel Отображения и сохраняют значение целевой функции, градиентные величины и другую диагностическую информацию. FitInfo.History содержит диагностическую информацию. |
Пример: 'Verbose',1
Типы данных: single
| double
'CategoricalPredictors'
- Категориальный список предикторов'all'
Категориальный список предикторов, заданный как одно из значений в этой таблице.
Значение | Описание |
---|---|
Вектор положительных целых чисел |
Каждая запись в векторе является индексом значением, соответствующим столбцу данных предиктора, который содержит категориальную переменную. Значения индекса находятся между 1 и Если |
Логический вектор |
A |
Матрица символов | Каждая строка матрицы является именем переменной. Имена должны совпадать с записями в PredictorNames . Дополните имена дополнительными пробелами, чтобы каждая строка матрицы символов имела одинаковую длину. |
Строковые массивы или массив ячеек векторов символов | Каждый элемент массива является именем переменной. Имена должны совпадать с записями в PredictorNames . |
'all' | Все предикторы категоричны. |
По умолчанию, если данные предиктора находятся в таблице (Tbl
), fitckernel
принимает, что переменная категориальна, если это логический вектор, категориальный вектор, символьный массив, строковые массивы или массив ячеек из векторов символов. Если данные предиктора являются матрицей (X
), fitckernel
принимает, что все предикторы непрерывны. Чтобы идентифицировать любые другие предикторы как категориальные предикторы, задайте их с помощью 'CategoricalPredictors'
аргумент имя-значение.
Для идентифицированных категориальных предикторов, fitckernel
создает фиктивные переменные с помощью двух различных схем, в зависимости от того, является ли категориальная переменная неупорядоченной или упорядоченной. Для неупорядоченной категориальной переменной, fitckernel
создает одну фиктивную переменную для каждого уровня категориальной переменной. Для упорядоченной категориальной переменной, fitckernel
создает одну переменную с меньшим количеством манекенов, чем количество категорий. Для получения дополнительной информации смотрите Автоматическое создание переменных манекена.
Пример: 'CategoricalPredictors','all'
Типы данных: single
| double
| logical
| char
| string
| cell
'ClassNames'
- Имена классов, используемых для обученияИмена классов, используемых для обучения, заданные как категориальные символьные или строковые массивы; логический или числовой вектор; или массив ячеек из векторов символов. ClassNames
должен иметь тот совпадающий тип данных, что и переменная отклика в Tbl
или Y
.
Если ClassNames
является символьный массив, тогда каждый элемент должен соответствовать одной строке массива.
Использование ClassNames
кому:
Задайте порядок классов во время обучения.
Задайте порядок любой размерности входного или выходного аргумента, которая соответствует порядку классов. Для примера используйте ClassNames
для определения порядка размерностей Cost
или порядок столбцов классификационных оценок, возвращаемых predict
.
Выберите подмножество классов для обучения. Например, предположим, что набор всех различных имен классов в Y
является {'a','b','c'}
. Чтобы обучить модель с помощью наблюдений из классов 'a'
и 'c'
только, задайте 'ClassNames',{'a','c'}
.
Значение по умолчанию для ClassNames
- набор всех различных имен классов в переменной отклика в Tbl
или Y
.
Пример: 'ClassNames',{'b','g'}
Типы данных: categorical
| char
| string
| logical
| single
| double
| cell
'Cost'
- Расходы на неправильную классификациюСтоимость неправильной классификации, заданная как разделенная разделенными запятой парами, состоящая из 'Cost'
и квадратную матрицу или структуру.
Если вы задаете квадратную матрицу cost
('Cost',cost
), затем cost(i,j)
- стоимость классификации точки в класс j
если его класс true i
. То есть строки соответствуют истинному классу, а столбцы соответствуют предсказанному классу. Чтобы задать порядок классов для соответствующих строк и столбцов cost
, используйте ClassNames
аргумент пары "имя-значение".
Если вы задаете структуру S
('Cost',S
), тогда оно должно иметь два поля:
S.ClassNames
, который содержит имена классов как переменный совпадающий тип данных as Y
S.ClassificationCosts
, которая содержит матрицу затрат со строками и столбцами, упорядоченными как в S.ClassNames
Значение по умолчанию для Cost
это таковые
, где (K
) - глаз (K
)K
- количество различных классов.
fitckernel
использует Cost
для корректировки вероятностей предыдущего класса, заданных в Prior
. Затем, fitckernel
использует скорректированные предыдущие вероятности для обучения и сбрасывает матрицу затрат в значение по умолчанию.
Пример: 'Cost',[0 2; 1 0]
Типы данных: single
| double
| struct
'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
выбрать, какие переменные предиктора использовать в обучении. То есть, fitckernel
использует только переменные предиктора в PredictorNames
и переменной отклика во время обучения.
PredictorNames
должен быть подмножеством Tbl.Properties.VariableNames
и не может включать имя переменной отклика.
По умолчанию PredictorNames
содержит имена всех переменных предиктора.
Хорошей практикой является определение предикторов для обучения с использованием любой из 'PredictorNames'
или formula
, но не то и другое.
Пример: 'PredictorNames',{'SepalLength','SepalWidth','PetalLength','PetalWidth'}
Типы данных: string
| cell
'Prior'
- Предыдущие вероятности'empirical'
(по умолчанию) | 'uniform'
| числовой вектор | массив структурПредыдущие вероятности для каждого класса, заданные как разделенная разделенными запятой парами, состоящая из 'Prior'
и 'empirical'
, 'uniform'
, числовой вектор или массив структур.
В этой таблице результирующие опции для настройки предыдущих вероятностей.
Значение | Описание |
---|---|
'empirical' | Предшествующие вероятности классов являются относительными частотами классов в Y . |
'uniform' | Все предшествующие вероятности классов равны 1/ K , где K количество классов. |
числовой вектор | Каждый элемент является классом предыдущей вероятности. Заказать элементы в соответствии с их порядком можно в Y . Если вы задаете порядок используя 'ClassNames' аргумент пары "имя-значение", затем упорядочивайте элементы соответственно. |
массив структур |
Структурный
|
fitckernel
нормализует предыдущие вероятности в Prior
в сумму до 1.
Пример: 'Prior',struct('ClassNames',{{'setosa','versicolor'}},'ClassProbs',1:2)
Типы данных: char
| string
| double
| single
| struct
'ResponseName'
- Имя переменной отклика'Y'
(по умолчанию) | символьный вектор | строковый скалярИмя переменной отклика, заданное как вектор символов или строковый скаляр.
Если вы поставляете Y
, тогда можно использовать 'ResponseName'
чтобы задать имя для переменной отклика.
Если вы поставляете ResponseVarName
или formula
, тогда вы не можете использовать 'ResponseName'
.
Пример: 'ResponseName','response'
Типы данных: char
| string
'ScoreTransform'
- Преобразование счета'none'
(по умолчанию) | 'doublelogit'
| 'invlogit'
| 'ismax'
| 'logit'
| указатель на функцию |...Преобразование счета, заданное как вектор символов, строковый скаляр или указатель на функцию.
В этой таблице результирующие векторы символов и строковые скаляры.
Значение | Описание |
---|---|
'doublelogit' | 1/(1 + e–2x) |
'invlogit' | журнал (x/( 1 - x)) |
'ismax' | Устанавливает счет для класса с самым большим счетом равным 1 и устанавливает счета для всех других классов равным 0 |
'logit' | 1/(1 + e–x) |
'none' или 'identity' | x (без преобразования) |
'sign' | -1 для x < 0 0 для x = 0 1 для x > 0 |
'symmetric' | 2 x – 1 |
'symmetricismax' | Устанавливает счет для класса с самым большим счетом равным 1 и устанавливает счета для всех других классов равной -1 |
'symmetriclogit' | 2/(1 + e–x) – 1 |
Для функции MATLAB или функции, которую вы задаете, используйте указатель на функцию для преобразования счета. Указатель на функцию должен принять матрицу (исходные счета) и вернуть матрицу того же размера (преобразованные счета).
Пример: 'ScoreTransform','logit'
Типы данных: char
| string
| function_handle
'Weights'
- Веса наблюденийTbl
Веса наблюдений, заданные как неотрицательный числовой вектор или имя переменной в Tbl
. Программа взвешивает каждое наблюдение в X
или Tbl
с соответствующим значением в Weights
. Длина Weights
должно равняться количеству наблюдений в X
или Tbl
.
Если вы задаете входные данные как таблицу Tbl
, затем Weights
может быть именем переменной в Tbl
который содержит числовой вектор. В этом случае необходимо задать Weights
как вектор символов или строковый скаляр. Для примера, если вектор весов W
хранится как Tbl.W
, затем укажите его следующим 'W'
. В противном случае программное обеспечение обрабатывает все столбцы Tbl
, включая W
, как предикторы или переменная отклика при обучении модели.
По умолчанию Weights
является ones(n,1)
, где n
количество наблюдений в X
или Tbl
.
Программное обеспечение нормализует Weights
суммировать к значению предшествующей вероятности в соответствующем классе.
Типы данных: single
| double
| char
| string
'OptimizeHyperparameters'
- Параметры для оптимизации'none'
(по умолчанию) | 'auto'
| 'all'
| строковые массивы или массив ячеек из допустимых имен параметров | вектор optimizableVariable
объектыОптимизируемые параметры, заданные как разделенная разделенными запятой парами, состоящая из 'OptimizeHyperparameters'
и одно из следующих значений:
'none'
- Не оптимизировать.
'auto'
- Использовать {'KernelScale','Lambda'}
.
'all'
- Оптимизируйте все подходящие параметры.
Массив ячеек с допустимыми именами параметров.
Вектор optimizableVariable
объекты, как правило, выходные данные hyperparameters
.
Оптимизация пытается минимизировать потери перекрестной валидации (ошибка) для fitckernel
путем изменения параметров. Чтобы контролировать тип перекрестной валидации и другие аспекты оптимизации, используйте HyperparameterOptimizationOptions
аргумент пары "имя-значение".
Примечание
'OptimizeHyperparameters'
значения переопределяют все значения, которые вы устанавливаете, используя другие аргументы пары "имя-значение". Для примера установка 'OptimizeHyperparameters'
на 'auto'
вызывает 'auto'
значения для применения.
Подходящие параметры для fitckernel
являются:
KernelScale
— fitckernel
поиск среди положительных значений, по умолчанию логарифмический в области значений [1e-3,1e3]
.
Lambda
— fitckernel
поиск среди положительных значений, по умолчанию логарифмический в области значений [1e-3,1e3]/n
, где n
количество наблюдений.
Learner
— fitckernel
поиск среди 'svm'
и 'logistic'
.
NumExpansionDimensions
— fitckernel
поиск среди положительных целых чисел, по умолчанию логарифмический в области значений [100,10000]
.
Установите параметры nondefault путем передачи вектора optimizableVariable
объекты, которые имеют значения nondefault. Для примера:
load fisheriris params = hyperparameters('fitckernel',meas,species); 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
- Обученная модель классификации ядерClassificationKernel
объект модели | ClassificationPartitionedKernel
перекрестно проверенный объект моделиОбученная модель классификации ядер, возвращенная как ClassificationKernel
объект модели
перекрестно проверенный объект модели.
Если вы задаете любой из аргументов пары "имя-значение" CrossVal
, CVPartition
, Holdout
, KFold
, или Leaveout
, затем Mdl
является ClassificationPartitionedKernel
перекрестно проверенный классификатор. В противном случае Mdl
является ClassificationKernel
классификатор.
Ссылка на свойства Mdl
, используйте запись через точку. Для примера введите Mdl.NumExpansionDimensions
в Командном окне, чтобы отобразить количество размерностей развернутого пространства.
Примечание
В отличие от других классификационных моделей и для экономичного использования памяти, ClassificationKernel
объект модели не хранит обучающие данные или детали процесса обучения (для примера, истории сходимости).
FitInfo
- Детали оптимизацииДетали оптимизации, возвращенные как массив структур, включая поля, описанные в этой таблице. Поля содержат окончательные значения или спецификации аргументов пары "имя-значение".
Область | Описание |
---|---|
Solver | Метод минимизации целевой функции: |
LossFunction | Функция потерь. Либо 'hinge' или 'logit' в зависимости от типа линейной классификационной модели. См. Learner . |
Lambda | Сила термина регуляризации. См. Lambda . |
BetaTolerance | Относительная погрешность на линейные коэффициенты и термин смещения. См. BetaTolerance . |
GradientTolerance | Абсолютный допуск градиента. См. GradientTolerance . |
ObjectiveValue | Значение целевой функции, когда оптимизация прекращается. Классификационные потери плюс термин регуляризации составляют целевую функцию. |
GradientMagnitude | Бесконечная норма вектора градиента целевой функции, когда оптимизация заканчивается. См. GradientTolerance . |
RelativeChangeInBeta | Относительные изменения линейных коэффициентов и члена смещения, когда оптимизация заканчивается. См. BetaTolerance . |
FitTime | Прошло время настенного времени (в секундах), необходимое для соответствия модели данным. |
History | История информации об оптимизации. Это поле пустое ([] ), если вы задаете 'Verbose',0 . Для получения дополнительной информации смотрите Verbose и Алгоритмы. |
Для доступа к полям используйте запись через точку. Для примера, чтобы получить доступ к вектору значений целевой функции для каждой итерации, введите FitInfo.ObjectiveValue
в Командном окне.
Хорошей практикой является изучение FitInfo
оценить, является ли сходимость удовлетворительной.
HyperparameterOptimizationResults
- Оптимизация гиперпараметров перекрестной валидацииBayesianOptimization
объект | таблица гиперпараметров и связанных значенийОптимизация гиперпараметров с перекрестной валидацией, возвращенная как BayesianOptimization
объект или таблица гиперпараметров и связанных значений. Выход непуст, когда значение 'OptimizeHyperparameters'
не 'none'
. Выходное значение зависит от Optimizer
значение поля 'HyperparameterOptimizationOptions'
аргумент пары "имя-значение":
Значение Optimizer Область | Значение HyperparameterOptimizationResults |
---|---|
'bayesopt' (по умолчанию) | Объект BayesianOptimization классов |
'gridsearch' или 'randomsearch' | Таблица используемых гиперпараметров, наблюдаемых значений целевой функции (потери перекрестной валидации) и ранг наблюдений от самого низкого (лучшего) до самого высокого (худшего) |
fitckernel
не принимает начальные условия для вектора бета-коэффициентов (β) и термина смещения (b), используемых для определения функции принятия решений,
fitckernel
не поддерживает стандартизацию.
Расширение случайных функций, такое как Random Kitchen Sinks [1] и Fastfood [2], является схемой для аппроксимации Гауссовых ядер алгоритма классификации ядра, используемой для больших данных вычислительно эффективным способом. Расширение случайных функций более практично для приложений с большими наборами обучающих данных, но может также применяться к меньшим наборам данных, которые подгонка в памяти.
Алгоритм классификации ядра ищет оптимальную гиперплоскость, которая разделяет данные на два класса после отображения функций в высоко-размерное пространство. Нелинейные функции, которые не являются линейно разделяемыми в низкомерном пространстве, могут быть разделяемыми в расширенном высокомерном пространстве. Во всех вычислениях для классификации гиперплоскостей используются только точечные продукты. Можно получить нелинейную модель классификации путем замены точечного произведения x 1 x 2 'на нелинейную функцию ядра, где xi - i-е наблюдение (вектор-строка) и φ (xi) - преобразование, которое преобразует xi в высокомерное пространство (называемое «трюком ядра»). Однако оценка G (x 1, x 2) (матрица Грамма) для каждой пары наблюдений является вычислительно дорогой для большого набора данных (большого n).
Схема расширения случайных функций находит случайное преобразование, так что ее точечный продукт аппроксимирует Гауссово ядро. То есть,
где T (x) карты x в в высокомерное пространство (). Схема Случайной Кухонной Раковины использует случайное преобразование
где является выборкой, нарисованной из и σ2 является шкалой ядра. Эта схема требует O (m p) расчета и хранения. Схема Фастфуда вводит другой случайный базис V вместо того, чтобы Z использовать матрицы Адамара, объединенные с матрицами Гауссова масштабирования. Этот случайный базис снижает стоимость расчета до O (m log
p) и сокращает объем памяти до O (m ).
fitckernel
функция использует схему Fastfood для случайного расширения признаков и использует линейную классификацию, чтобы обучить Гауссову модель классификации ядра. В отличие от решателей в fitcsvm
функция, которая требует расчета n -by n Gram матрицы, решателя вfitckernel
нужно только сформировать матрицу размера n -by - m, причем m обычно намного меньше, чем n для больших данных.
Прямоугольное ограничение является параметром, который управляет максимальным штрафом, налагаемым на наблюдения, нарушающие маржу, и помогает предотвратить избыточную подгонку (регуляризацию). Увеличение ограничения коробки может привести к увеличению времени обучения.
Прямоугольное ограничение (C) и коэффициент регуляризации (λ) связаны C = 1/( λ n), где n - количество наблюдений.
fitckernel
минимизирует регуляризованную целевую функцию с помощью решателя с ограниченной памятью Broyden-Fletcher-Goldfarb-Shanno (LBFGS) с регуляризацией гребня (L 2). Чтобы найти тип решателя LBFGS, используемый для обучения, введите FitInfo.Solver
в Командном окне.
'LBFGS-fast'
- решатель LBFGS.
'LBFGS-blockwise'
- решатель LBFGS с блочной стратегией. Если fitckernel
требуется больше памяти, чем значение BlockSize
чтобы сохранить преобразованные данные предиктора, он использует блочную стратегию.
'LBFGS-tall'
- решатель LBFGS с блочной стратегией для длинных массивов.
Когда fitckernel
использует блочную стратегию, fitckernel
реализует LBFGS путем распределения вычисления потерь и градиента между различными частями данных при каждой итерации. Также, fitckernel
уточняет начальные оценки линейных коэффициентов и члена смещения путем локальной подгонки модели к частям данных и объединения коэффициентов путем усреднения. Если вы задаете 'Verbose',1
, затем fitckernel
отображает диагностическую информацию для каждого прохода данных и хранит информацию в History
область FitInfo
.
Когда fitckernel
не использует блочную стратегию, начальные оценки являются нулями. Если вы задаете 'Verbose',1
, затем fitckernel
отображает диагностическую информацию для каждой итерации и хранит информацию в 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.
Указания и ограничения по применению:
fitckernel
не поддерживает высокие table
данные.
Некоторые аргументы пары "имя-значение" имеют различные значения по умолчанию по сравнению со значениями по умолчанию для оперативной памяти fitckernel
функция. Поддерживаемые аргументы пары "имя-значение" и любые различия:
'Learner'
'NumExpansionDimensions'
'KernelScale'
'BoxConstraint'
'Lambda'
'BetaTolerance'
- Значение по умолчанию ослаблено до 1e–3
.
'GradientTolerance'
- Значение по умолчанию ослаблено до 1e–5
.
'IterationLimit'
- Значение по умолчанию ослаблено до 20
.
'BlockSize'
'RandomStream'
'HessianHistorySize'
'Verbose'
- Значение по умолчанию 1
.
'ClassNames'
'Cost'
'Prior'
'ScoreTransform'
'Weights'
- Значение должно быть длинный массив.
'OptimizeHyperparameters'
'HyperparameterOptimizationOptions'
- Для перекрестной валидации tall optimization поддерживает только 'Holdout'
валидация. По умолчанию программное обеспечение выбирает и резервирует 20% данных в качестве данных валидации удержания и обучает модель, используя остальную часть данных. Вы можете задать другое значение для задержанной дроби с помощью этого аргумента. Для примера задайте 'HyperparameterOptimizationOptions',struct('Holdout',0.3)
зарезервировать 30% данных в качестве данных валидации.
Если 'KernelScale'
является 'auto'
, затем fitckernel
использует случайный поток, управляемый tallrng
для субдискретизации. Для воспроизводимости необходимо задать начальное число случайных чисел как для глобального потока, так и для случайного потока, управляемого tallrng
.
Если 'Lambda'
является 'auto'
, затем fitckernel
может пройти дополнительный проход через данные, чтобы вычислить количество наблюдений в X
.
fitckernel
использует блочную стратегию. Для получения дополнительной информации смотрите Алгоритмы.
Для получения дополнительной информации см. Раздел «Длинные массивы»
Чтобы выполнить параллельную оптимизацию гипероптимизации параметров управления, используйте 'HyperparameterOptimizationOptions', struct('UseParallel',true)
аргумент имя-значение в вызове этой функции.
Для получения дополнительной информации об оптимизации параллельной гипероптимизации параметров управления смотрите Parallel Bayesian Optimization.
Общие сведения о параллельных вычислениях см. в разделе Запуск функций MATLAB с поддержкой автоматических параллелей (Parallel Computing Toolbox).
bayesopt
| bestPoint
| ClassificationKernel
| ClassificationPartitionedKernel
| fitclinear
| fitcsvm
| predict
| resume
| templateKernel
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.