Соответствуйте Гауссовой модели классификации ядер использование случайного расширения функции
fitckernel
обучает или перекрестный подтверждает бинарную Гауссову модель классификации ядер для нелинейной классификации. fitckernel
более практичен для больших применений данных, которые имеют большие наборы обучающих данных, но могут также быть применены к меньшим наборам данных, которые умещаются в памяти.
fitckernel
сопоставляет данные в низком мерном пространстве в высокое мерное пространство, затем приспосабливает линейную модель в высоком мерном пространстве путем минимизации упорядоченной целевой функции. Получение линейной модели в высоком мерном пространстве эквивалентно применению Гауссова ядра к модели в низком мерном пространстве. Доступные линейные модели классификации включают упорядоченную машину вектора поддержки (SVM) и модели логистической регрессии.
Чтобы обучить нелинейную модель SVM бинарной классификации данных в оперативной памяти, смотрите fitcsvm
.
Mdl = fitckernel(X,Y)
Mdl = fitckernel(X,Y,Name,Value)
[Mdl,FitInfo] = fitckernel(___)
[Mdl,FitInfo,HyperparameterOptimizationResults] = fitckernel(___)
возвращается бинарная Гауссова модель классификации ядер обучила использование данных о предикторе в Mdl
= fitckernel(X
,Y
)X
и соответствующих меток класса в Y
. Функция fitckernel
сопоставляет предикторы в низком мерном пространстве в высокое мерное пространство, затем соответствует бинарной модели SVM к преобразованным предикторам и меткам класса. Эта линейная модель эквивалентна Гауссовой модели классификации ядер в низком мерном пространстве.
возвращает модель классификации ядер с дополнительными опциями, заданными одним или несколькими аргументами пары "имя-значение". Например, можно реализовать логистическую регрессию, задать количество размерностей расширенного пробела или задать, чтобы перекрестный подтвердить.Mdl
= fitckernel(X
,Y
,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 array
{'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: 0.5085
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 = classreg.learning.partition.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
, что train программного обеспечения на учебном сгибе (окутывает) наблюдения.
Оцените перекрестную подтвержденную ошибку классификации.
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 | 1.4369 | 0.35897 | 0.35897 | 64.836 | 4.4811e-06 | | 2 | Accept | 0.35897 | 1.568 | 0.35897 | 0.35897 | 0.036335 | 0.015885 | | 3 | Accept | 0.39601 | 1.1493 | 0.35897 | 0.36053 | 0.0022147 | 6.8254e-06 | | 4 | Accept | 0.35897 | 0.7387 | 0.35897 | 0.35898 | 5.1259 | 0.28097 | | 5 | Accept | 0.35897 | 1.4993 | 0.35897 | 0.35897 | 0.24853 | 0.10828 | | 6 | Accept | 0.35897 | 0.41811 | 0.35897 | 0.35897 | 885.09 | 0.00057316 | | 7 | Best | 0.10826 | 1.7148 | 0.10826 | 0.10833 | 8.0346 | 0.0048286 | | 8 | Best | 0.076923 | 1.6369 | 0.076923 | 0.076999 | 7.0902 | 0.0034068 | | 9 | Accept | 0.091168 | 3.7532 | 0.076923 | 0.077059 | 9.1504 | 0.0020604 | | 10 | Best | 0.062678 | 4.2301 | 0.062678 | 0.062723 | 3.5487 | 0.0025912 | | 11 | Accept | 0.062678 | 1.5281 | 0.062678 | 0.062741 | 2.3869 | 0.003321 | | 12 | Accept | 0.41026 | 1.1002 | 0.062678 | 0.062536 | 0.14075 | 0.0022499 | | 13 | Accept | 0.062678 | 0.96496 | 0.062678 | 0.062532 | 3.4215 | 0.0036803 | | 14 | Accept | 0.062678 | 1.1108 | 0.062678 | 0.061956 | 3.2928 | 0.0030533 | | 15 | Best | 0.05698 | 1.5253 | 0.05698 | 0.057204 | 5.0598 | 0.0025499 | | 16 | Accept | 0.062678 | 1.2065 | 0.05698 | 0.057186 | 5.3401 | 0.0015096 | | 17 | Accept | 0.05698 | 0.95633 | 0.05698 | 0.057118 | 1.813 | 0.0069209 | | 18 | Accept | 0.059829 | 1.1697 | 0.05698 | 0.057092 | 1.5122 | 0.0046637 | | 19 | Accept | 0.059829 | 1.3326 | 0.05698 | 0.05718 | 1.9277 | 0.0056364 | | 20 | Accept | 0.065527 | 1.0334 | 0.05698 | 0.057189 | 1.4064 | 0.0094306 | |=====================================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | KernelScale | Lambda | | | result | | runtime | (observed) | (estim.) | | | |=====================================================================================================| | 21 | Accept | 0.05698 | 1.7321 | 0.05698 | 0.057033 | 5.1719 | 0.0023614 | | 22 | Best | 0.054131 | 2.7112 | 0.054131 | 0.054176 | 1.9618 | 6.5704e-05 | | 23 | Best | 0.042735 | 1.8593 | 0.042735 | 0.042763 | 1.9463 | 1.0169e-05 | | 24 | Accept | 0.082621 | 1.1035 | 0.042735 | 0.042775 | 1.0661 | 1.3245e-05 | | 25 | Accept | 0.054131 | 2.9085 | 0.042735 | 0.042789 | 3.288 | 2.0035e-05 | | 26 | Accept | 0.062678 | 2.8917 | 0.042735 | 0.042769 | 2.657 | 3.0334e-06 | | 27 | Accept | 0.059829 | 3.2064 | 0.042735 | 0.043054 | 2.0381 | 1.9791e-05 | | 28 | Accept | 0.042735 | 3.4226 | 0.042735 | 0.042764 | 3.5043 | 0.0001237 | | 29 | Accept | 0.054131 | 0.9743 | 0.042735 | 0.042764 | 1.3897 | 3.2288e-06 | | 30 | Accept | 0.062678 | 1.7519 | 0.042735 | 0.042792 | 2.2414 | 0.0002259 | __________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 82.9728 seconds. Total objective function evaluation time: 52.6346 Best observed feasible point: KernelScale Lambda ___________ __________ 1.9463 1.0169e-05 Observed objective function value = 0.042735 Estimated objective function value = 0.042792 Function evaluation time = 1.8593 Best estimated feasible point (according to models): KernelScale Lambda ___________ _________ 3.5043 0.0001237 Estimated objective function value = 0.042792 Estimated function evaluation time = 2.555
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: 0.3668
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: 82.9728 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
должны быть равными.
Хорошая практика должна задать порядок класса при помощи аргумента пары "имя-значение" ClassNames
.
Типы данных: categorical
| char
| string
| logical
| single
| double
| cell
fitckernel
удаляет недостающие наблюдения, то есть, наблюдения с любой из этих характеристик:
NaN
, пустой символьный вектор (''
), пустая строка (""
), <missing>
и элементы <undefined>
в ответе (Y
)
По крайней мере одно значение NaN
в наблюдении предиктора (строка в X
)
Значение NaN
или вес 0
('Weights'
)
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (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' | Поддержите векторную машину | y ∊ {-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'
, то программное обеспечение выбирает соответствующий масштабный коэффициент ядра с помощью эвристической процедуры. Эта эвристическая процедура использует подвыборку, таким образом, оценки могут отличаться от одного вызова до другого. Поэтому, чтобы воспроизвести результаты, установите seed случайных чисел при помощи 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
. Объект раздела задает тип перекрестной проверки и индексации для наборов обучения и валидации.
Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition
, Holdout
, KFold
или Leaveout
.
Пример: Предположим, что вы создаете случайный раздел для 5-кратной перекрестной проверки на 500 наблюдениях при помощи cvp = cvpartition(500,'KFold',5)
. Затем можно задать перекрестную подтвержденную модель при помощи 'CVPartition',cvp
.
'Holdout'
— Часть данных для валидации затяжкиЧасть данных используется для валидации затяжки, заданной как пара, разделенная запятой, состоящая из 'Holdout'
и скалярного значения в области значений (0,1). Если вы задаете 'Holdout',p
, то программное обеспечение завершает эти шаги:
Случайным образом выберите и зарезервируйте % p*100
данных как данные о валидации и обучите модель с помощью остальной части данных.
Сохраните компактную, обученную модель в свойстве Trained
перекрестной подтвержденной модели.
Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition
, Holdout
, KFold
или Leaveout
.
Пример: 'Holdout',0.1
Типы данных: double | single
'KFold'
— Количество сгибов10
(значение по умолчанию) | положительное целочисленное значение, больше, чем 1Количество сгибов, чтобы использовать в перекрестной подтвержденной модели, заданной как пара, разделенная запятой, состоящая из 'KFold'
и положительного целочисленного значения, больше, чем 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-by-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
(4 ГБ) (значение по умолчанию) | положительная скалярная величинаМаксимальная сумма выделенной памяти (в мегабайтах), заданный как пара, разделенная запятой, состоящая из 'BlockSize'
и положительной скалярной величины.
Если fitckernel
требует, чтобы больше памяти, чем значение 'BlockSize'
содержало преобразованные данные о предикторе, то программное обеспечение использует мудрую блоком стратегию. Для получения дополнительной информации о мудрой блоком стратегии, см. Алгоритмы.
Пример: 'BlockSize',1e4
Типы данных: single | double
'RandomStream'
— Поток случайных чиселПоток случайных чисел для воспроизводимости преобразования данных, заданного как пара, разделенная запятой, состоящая из 'RandomStream'
и случайного потокового объекта. Для получения дополнительной информации смотрите Случайное Расширение Функции.
Используйте 'RandomStream'
, чтобы воспроизвести случайные основные функции что использование fitckernel
, чтобы преобразовать данные о предикторе к высокому мерному пространству. Для получения дополнительной информации смотрите Управление Global Stream (MATLAB) и Создание и Управление Потоком Случайных чисел (MATLAB).
Пример: 'RandomStream',RandStream('mlfg6331_64')
'HessianHistorySize'
— Размер буфера истории для приближения Гессиана15
(значение по умолчанию) | положительное целое числоРазмер буфера истории для приближения Гессиана, заданного как пара, разделенная запятой, состоящая из 'HessianHistorySize'
и положительного целого числа. В каждой итерации fitckernel
составляет приближение Гессиана при помощи статистики от последних итераций HessianHistorySize
.
Пример: 'HessianHistorySize',10
Типы данных: single | double
'Verbose'
— Уровень многословия0
(значение по умолчанию) | 1
Уровень многословия, заданный как пара, разделенная запятой, состоящая из 'Verbose'
и или 0
или 1
. Verbose
управляет отображением диагностической информации в командной строке.
Значение | Описание |
---|---|
0 | fitckernel не отображает диагностическую информацию. |
1 | fitckernel отображает и хранит значение целевой функции, величины градиента и другой диагностической информации. FitInfo.History содержит диагностическую информацию. |
Пример: 'Verbose',1
Типы данных: single | double
'ClassNames'
— Имена классов, чтобы использовать для обученияИмена классов, чтобы использовать для обучения, заданного как пара, разделенная запятой, состоящая из 'ClassNames'
и категориального, символа, или массива строк, логического или числового вектора или массива ячеек из символьных векторов. ClassNames
должен иметь совпадающий тип данных как Y
.
Если ClassNames
является символьным массивом, то каждый элемент должен соответствовать одной строке массива.
Используйте ClassNames
для:
Закажите классы во время обучения.
Задайте порядок любой размерности аргумента ввода или вывода, которая соответствует порядку класса. Например, используйте ClassNames
, чтобы задать порядок размерностей Cost
или порядка следования столбцов очков классификации, возвращенных predict
.
Выберите подмножество классов для обучения. Например, предположите, что набором всех отличных имен классов в Y
является {'a','b','c'}
. Чтобы обучить модель с помощью наблюдений от классов 'a'
и 'c'
только, задайте 'ClassNames',{'a','c'}
.
Значение по умолчанию для ClassNames
является набором всех отличных имен классов в Y
.
Пример: 'ClassNames',{'b','g'}
Типы данных: categorical
| char
| string
| logical
| single
| double
| cell
'Cost'
— Misclassification стоитсяMisclassification стоят, заданный как пара, разделенная запятой, состоящая из 'Cost'
и квадратной матрицы или структуры.
Если вы задаете квадратную матрицу cost
('Cost',cost
), то cost(i,j)
является стоимостью классификации точки в класс j
, если его истинным классом является i
. Таким образом, строки соответствуют истинному классу, и столбцы соответствуют предсказанному классу. Чтобы задать порядок класса для соответствующих строк и столбцов cost
, используйте аргумент пары "имя-значение" ClassNames
.
Если вы задаете структуру S
('Cost',S
), то это должно иметь два поля:
S.ClassNames
, который содержит имена классов как переменную совпадающего типа данных как Y
S.ClassificationCosts
, который содержит матрицу стоимости со строками и столбцами, упорядоченными как в S.ClassNames
Значением по умолчанию для Cost
является
, где ones(K) – eye(K)
K
является количеством отличных классов.
fitckernel
использует Cost
, чтобы настроить предшествующие вероятности класса, заданные в Prior
. Затем fitckernel
использует настроенные априорные вероятности для обучения и сбрасывает матрицу стоимости к ее значению по умолчанию.
Пример: 'Cost',[0 2; 1 0]
Типы данных: single
| double
| struct
'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
'ScoreTransform'
— Выиграйте преобразование'none'
(значение по умолчанию) | 'doublelogit'
| 'invlogit'
| 'ismax'
| 'logit'
| указатель на функцию |...Выиграйте преобразование, заданное как пара, разделенная запятой, состоящая из 'ScoreTransform'
и вектора символов, представьте в виде строки скаляр или указатель на функцию.
Эта таблица суммирует доступные векторы символов и скаляры строки.
Значение | Описание |
---|---|
'doublelogit' | 1/(1 + e –2x) |
'invlogit' | журнал (x / (1 – x)) |
'ismax' | Устанавливает счет к классу с самым большим счетом к 1 и устанавливает музыку ко всем другим классам к 0 |
'logit' | 1/(1 + e –x) |
'none' или 'identity' | x (никакое преобразование) |
'sign' | – 1 для x <0 0 для x = 0 1 для x> 0 |
'symmetric' | 2x – 1 |
'symmetricismax' | Устанавливает счет к классу с самым большим счетом к 1 и устанавливает музыку ко всем другим классам к –1 |
'symmetriclogit' | 2/(1 + e –x) – 1 |
Для функции MATLAB® или функции вы задаете, используете ее указатель на функцию для счета, преобразовывают. Указатель на функцию должен принять матрицу (исходные очки) и возвратить матрицу, одного размера (преобразованные очки).
Пример: 'ScoreTransform','logit'
Типы данных: char
| string
| function_handle
'Weights'
— Веса наблюденияВеса наблюдения, заданные как пара, разделенная запятой, состоящая из 'Weights'
и положительный числовой вектор длины n
, где n
является количеством наблюдений в X
. Функция fitckernel
взвешивает наблюдения в X
с соответствующими значениями в Weights
.
Значением по умолчанию является
.ones(n,1)
fitckernel
нормирует Weights
, чтобы суммировать до значения априорной вероятности в соответствующем классе.
Пример: 'Weights',w
Типы данных: single | double
'OptimizeHyperparameters'
— Параметры, чтобы оптимизировать'none'
(значение по умолчанию) | 'auto'
| 'all'
| массив строк или массив ячеек имеющих право названий параметра | вектор объектов optimizableVariable
Параметры, чтобы оптимизировать, заданный как пара, разделенная запятой, состоящая из 'OptimizeHyperparameters'
и одно из этих значений:
'none'
Не оптимизировать.
'auto'
Используйте {'KernelScale','Lambda'}
.
все
Оптимизируйте все имеющие право параметры.
Массив ячеек имеющих право названий параметра.
Вектор объектов 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]
.
Установите параметры не по умолчанию путем передачи вектора объектов optimizableVariable
, которые имеют значения не по умолчанию. Например:
load fisheriris params = hyperparameters('fitckernel',meas,species); params(2).Range = [1e-4,1e6];
Передайте params
как значение 'OptimizeHyperparameters'
.
По умолчанию итеративное отображение появляется в командной строке, и графики появляются согласно количеству гиперпараметров в оптимизации. Для оптимизации и графиков, целевая функция является журналом (1 + потеря перекрестной проверки) для регрессии и misclassification уровня для классификации. Чтобы управлять итеративным отображением, установите поле Verbose
аргумента пары "имя-значение" 'HyperparameterOptimizationOptions'
. Чтобы управлять графиками, установите поле ShowPlots
аргумента пары "имя-значение" 'HyperparameterOptimizationOptions'
.
Для примера смотрите, Оптимизируют Классификатор Ядра.
Пример: 'OptimizeHyperparameters','auto'
'HyperparameterOptimizationOptions'
— Опции для оптимизацииОпции для оптимизации, заданной как пара, разделенная запятой, состоящая из 'HyperparameterOptimizationOptions'
и структуры. Этот аргумент изменяет эффект аргумента пары "имя-значение" OptimizeHyperparameters
. Все поля в структуре являются дополнительными.
Имя поля | Значения | Значение по умолчанию |
---|---|---|
Optimizer |
| 'bayesopt' |
AcquisitionFunctionName |
Приобретение функционирует, чьи имена включают | 'expected-improvement-per-second-plus' |
MaxObjectiveEvaluations | Максимальное количество оценок целевой функции. | 30 для 'bayesopt' или 'randomsearch' и целой сетки для 'gridsearch' |
MaxTime | Ограничение по времени, заданное как положительное действительное. Ограничение по времени находится в секундах, как измерено | Inf |
NumGridDivisions | Для 'gridsearch' , количества значений в каждой размерности. Значение может быть вектором положительных целых чисел, дающих количество значений для каждой размерности или скаляр, который применяется ко всем размерностям. Это поле проигнорировано для категориальных переменных. | 10 |
ShowPlots | Логическое значение, указывающее, показать ли графики. Если true , это поле строит лучшее значение целевой функции против номера итерации. Если существуют один или два параметра оптимизации, и если Optimizer является 'bayesopt' , то ShowPlots также строит модель целевой функции против параметров. | true |
SaveIntermediateResults | Логическое значение, указывающее, сохранить ли результаты, когда Optimizer является 'bayesopt' . Если true , это поле перезаписывает переменную рабочей области под названием 'BayesoptResults' в каждой итерации. Переменная является объектом BayesianOptimization . | false |
Verbose | Отобразитесь к командной строке.
Для получения дополнительной информации смотрите
аргумент пары "имя-значение" | 1 |
UseParallel | Логическое значение, указывающее, запустить ли Байесовую оптимизацию параллельно, которая требует Parallel Computing Toolbox™. Для получения дополнительной информации смотрите Параллельную Байесовую Оптимизацию. | false |
Repartition | Логическое значение, указывающее, повторно разделить ли перекрестную проверку в каждой итерации. Если
| false |
Используйте не больше, чем одни из следующих трех имен полей. | ||
CVPartition | Объект cvpartition , как создано cvpartition . | 'Kfold',5 , если вы не задаете поля перекрестной проверки |
Holdout | Скаляр в области значений (0,1) , представляющий часть затяжки. | |
Kfold | Целое число, больше, чем 1. |
Пример: 'HyperparameterOptimizationOptions',struct('MaxObjectiveEvaluations',60)
Типы данных: struct
Mdl
— Обученная модель классификации ядерClassificationKernel
| ClassificationPartitionedKernel
перекрестный подтвержденный объект моделиОбученная модель классификации ядер, возвращенная как объект модели ClassificationKernel
или ClassificationPartitionedKernel
перекрестный подтвержденный объект модели.
Если вы устанавливаете какой-либо из аргументов пары "имя-значение" 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
не поддерживает опции стандартизации и перекрестной проверки.
fitckernel
не принимает табличные входные параметры.
Случайное расширение функции, такое как Случайные Раковины [1] и Быстрое питание [2], является схемой аппроксимировать Гауссовы ядра алгоритма классификации ядер, чтобы использовать для больших данных в вычислительном отношении эффективным способом. Случайное расширение функции более практично для больших применений данных, которые имеют большие наборы обучающих данных, но могут также быть применены к меньшим наборам данных, которые умещаются в памяти.
Алгоритм классификации ядер ищет оптимальную гиперплоскость, которая разделяет данные на два класса после отображения функций в высокое мерное пространство. Нелинейные функции, которые не линейно отделимы в низком мерном пространстве, могут быть отделимыми в расширенном высоком мерном пространстве. Все вычисления для классификации гиперплоскостей используют только скалярные произведения. Можно получить нелинейную модель классификации, заменив скалярное произведение x 1x2' с нелинейной функцией ядра , где xi является i th наблюдение (вектор - строка), и φ (xi) является преобразованием, которое сопоставляет xi с высоким мерным пространством (названный “приемом ядра”). Однако оценивание G (x 1, x 2) (Матрица грамма) для каждой пары наблюдений является в вычислительном отношении дорогим для большого набора данных (большой n).
Случайная схема расширения функции находит случайное преобразование так, чтобы его скалярное произведение аппроксимировало Гауссово ядро. Таким образом,
где T (x) сопоставляет x в к высокому мерному пространству (). Схема Random Kitchen Sink использует случайное преобразование
где выборка, чертившая от и σ 2 является шкалой ядра. Эта схема требует O (m p) вычисление и устройство хранения данных. Схема Fastfood вводит другое случайное основание V вместо Z с помощью матриц Адамара, объединенных с Гауссовыми матрицами масштабирования. Это случайное основание уменьшает стоимость вычисления для O (m log
p) и уменьшает устройство хранения данных до O (m).
Функция fitckernel
использует схему Fastfood случайного расширения функции и использует линейную классификацию, чтобы обучить Гауссову модель классификации ядер. В отличие от решателей в функции fitcsvm
, которые требуют вычисления n-by-n матрица Грамма, решатель в fitckernel
только должен сформировать матрицу размера n-by-m с m обычно намного меньше, чем n для больших данных.
Ограничение поля является параметром, который управляет максимальным наказанием, наложенным на нарушающие поле наблюдения, и помогает в предотвращении сверхподходящего (регуляризация). Увеличение ограничения поля может привести к более длительным учебным временам.
Ограничение поля (C) и сила срока регуляризации (λ) связано C = 1 / (λ n), где n является количеством наблюдений.
fitckernel
минимизирует упорядоченную целевую функцию с помощью решателя Лимитед-мемори Бройдена Флетчера Голдфарба Шэнно (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] Rahimi, A. и Б. Речт. “Случайные Функции Крупномасштабных Машин Ядра”. Усовершенствования в Нейронных Системах обработки информации. Издание 20, 2008, стр 1177–1184.
[2] Le, Q., Т. Сарлос и А. Смола. “Быстрое питание — Приближение Расширений Ядра в Логлинейное Время”. Продолжения 30-й Международной конференции по вопросам Машинного обучения. Издание 28, № 3, 2013, стр 244–252.
[3] Хуан, P. S. Х. Аврон, Т. Н. Сэйнэт, В. Синдхвани и Б. Рамабхэдрэн. “Методы ядра совпадают с Глубокими нейронными сетями на TIMIT”. 2 014 Международных конференций IEEE по вопросам Акустики, Речи и Обработки сигналов. 2014, стр 205–209.
Указания и ограничения по применению:
Некоторые аргументы пары "имя-значение" имеют различные значения по умолчанию по сравнению со значениями по умолчанию для функции 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'
— Для перекрестной проверки высокая оптимизация поддерживает только валидацию 'Holdout'
. Например, можно задать fitckernel(X,Y,'OptimizeHyperparameters','auto','HyperparameterOptimizationOptions',struct('Holdout',0.2))
.
Если 'KernelScale'
является 'auto'
, то fitckernel
использует случайный поток, которым управляет tallrng
для подвыборки. Для воспроизводимости необходимо установить seed случайных чисел и для глобального потока и для случайного потока, которым управляет tallrng
.
Если 'Lambda'
является 'auto'
, то fitckernel
может взять дополнительный проход через данные, чтобы вычислить количество наблюдений в X
.
fitckernel
использует мудрую блоком стратегию. Для получения дополнительной информации см. Алгоритмы.
Для получения дополнительной информации смотрите Длинные массивы (MATLAB).
Чтобы запуститься параллельно, установите опцию 'UseParallel'
на true
.
Чтобы выполнить параллельную гипероптимизацию параметров управления, используйте аргумент пары "имя-значение" 'HyperparameterOptions', struct('UseParallel',true)
в вызове этой функции.
Для получения дополнительной информации о параллельной гипероптимизации параметров управления смотрите Параллельную Байесовую Оптимизацию.
Для более общей информации о параллельных вычислениях смотрите функции MATLAB Выполнения с Автоматической Параллельной Поддержкой (Parallel Computing Toolbox).
ClassificationKernel
| ClassificationPartitionedKernel
| bayesopt
| bestPoint
| fitclinear
| fitcsvm
| predict
| resume
| templateKernel
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.