fitckernel

Подбирайте Гауссову модель классификации ядер использование случайного расширения функции

Описание

fitckernel обучает или перекрестный подтверждает бинарную Гауссову модель классификации ядер для нелинейной классификации. fitckernel более практично для больших применений данных, которые имеют большие наборы обучающих данных, но могут также быть применены к меньшим наборам данных, которые умещаются в памяти.

fitckernel данные о картах в низком мерном пространстве в высокое мерное пространство, затем подбирает линейную модель в высоком мерном пространстве путем минимизации упорядоченной целевой функции. Получение линейной модели в высоком мерном пространстве эквивалентно применению Гауссова ядра к модели в низком мерном пространстве. Доступные линейные модели классификации включают упорядоченную машину опорных векторов (SVM) и модели логистической регрессии.

Чтобы обучить нелинейную модель SVM бинарной классификации данных в оперативной памяти, смотрите fitcsvm.

пример

Mdl = fitckernel(X,Y) возвращается бинарная Гауссова модель классификации ядер обучила использование данных о предикторе в X и соответствующий класс помечает в Y. fitckernel функционируйте сопоставляет предикторы в низком мерном пространстве в высокое мерное пространство, затем подбирает бинарную модель SVM к преобразованным предикторам и меткам класса. Эта линейная модель эквивалентна Гауссовой модели классификации ядер в низком мерном пространстве.

пример

Mdl = fitckernel(X,Y,Name,Value) возвращает модель классификации ядер с дополнительными опциями, заданными одним или несколькими аргументами пары "имя-значение". Например, можно реализовать логистическую регрессию, задать количество размерностей расширенного пробела или задать, чтобы перекрестный подтвердить.

пример

[Mdl,FitInfo] = fitckernel(___) также возвращает подходящую информацию в массиве структур FitInfo использование любого из входных параметров в предыдущих синтаксисах. Вы не можете запросить FitInfo для перекрестных подтвержденных моделей.

пример

[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.4879
                 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 модели, которые программное обеспечение обучает на учебном сгибе (окутывают) наблюдения.

Оцените перекрестную подтвержденную ошибку классификации.

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.5005 |     0.35897 |     0.35897 |       64.836 |   4.4811e-06 |
|    2 | Accept |     0.35897 |      1.1713 |     0.35897 |     0.35897 |     0.036335 |     0.015885 |
|    3 | Accept |     0.39601 |      1.4322 |     0.35897 |     0.36053 |    0.0022147 |   6.8254e-06 |
|    4 | Accept |     0.35897 |      1.5358 |     0.35897 |     0.35898 |       5.1259 |      0.28097 |
|    5 | Accept |     0.35897 |     0.95094 |     0.35897 |     0.35897 |      0.24853 |      0.10828 |
|    6 | Accept |     0.35897 |     0.54768 |     0.35897 |     0.35897 |       885.09 |   0.00057316 |
|    7 | Best   |     0.10826 |     0.94957 |     0.10826 |     0.10833 |       8.0346 |    0.0048286 |
|    8 | Best   |    0.076923 |      1.0665 |    0.076923 |    0.076999 |       7.0902 |    0.0034068 |
|    9 | Accept |    0.091168 |      1.2873 |    0.076923 |    0.077059 |       9.1504 |    0.0020604 |
|   10 | Best   |    0.062678 |      2.6558 |    0.062678 |    0.062723 |       3.5487 |    0.0025912 |
|   11 | Accept |    0.062678 |      2.5312 |    0.062678 |    0.062741 |       2.3869 |     0.003321 |
|   12 | Accept |     0.41026 |      4.0185 |    0.062678 |    0.062536 |      0.14075 |    0.0022499 |
|   13 | Accept |    0.062678 |      3.3618 |    0.062678 |    0.062532 |       3.4215 |    0.0036803 |
|   14 | Accept |    0.062678 |      1.2251 |    0.062678 |    0.061956 |       3.2928 |    0.0030533 |
|   15 | Best   |     0.05698 |     0.98667 |     0.05698 |    0.057204 |       5.0598 |    0.0025499 |
|   16 | Accept |    0.062678 |      1.5231 |     0.05698 |    0.057186 |       5.3401 |    0.0015096 |
|   17 | Accept |     0.05698 |      4.8611 |     0.05698 |    0.057118 |        1.813 |    0.0069209 |
|   18 | Accept |    0.059829 |      4.0799 |     0.05698 |    0.057092 |       1.5122 |    0.0046637 |
|   19 | Accept |    0.059829 |      2.1805 |     0.05698 |     0.05718 |       1.9277 |    0.0056364 |
|   20 | Accept |    0.065527 |      1.1503 |     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.7106 |     0.05698 |    0.057033 |       5.1719 |    0.0023614 |
|   22 | Best   |    0.054131 |      7.8626 |    0.054131 |    0.054176 |       1.9618 |   6.5704e-05 |
|   23 | Best   |    0.042735 |       2.846 |    0.042735 |    0.042763 |       1.9463 |   1.0169e-05 |
|   24 | Accept |    0.082621 |       1.449 |    0.042735 |    0.042775 |       1.0661 |   1.3245e-05 |
|   25 | Accept |    0.054131 |      8.3784 |    0.042735 |    0.042789 |        3.288 |   2.0035e-05 |
|   26 | Accept |    0.062678 |      6.5258 |    0.042735 |    0.042769 |        2.657 |   3.0334e-06 |
|   27 | Accept |    0.059829 |       3.014 |    0.042735 |    0.043054 |       2.0381 |   1.9791e-05 |
|   28 | Accept |    0.042735 |      5.5184 |    0.042735 |    0.042764 |       3.5043 |    0.0001237 |
|   29 | Accept |    0.054131 |      1.8999 |    0.042735 |    0.042764 |       1.3897 |   3.2288e-06 |
|   30 | Accept |    0.062678 |      3.0083 |    0.042735 |    0.042792 |       2.2414 |    0.0002259 |

__________________________________________________________
Optimization completed.
MaxObjectiveEvaluations of 30 reached.
Total function evaluations: 30
Total elapsed time: 114.5637 seconds.
Total objective function evaluation time: 81.2289

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 = 2.846

Best estimated feasible point (according to models):
    KernelScale     Lambda  
    ___________    _________

      3.5043       0.0001237

Estimated objective function value = 0.042792
Estimated function evaluation time = 4.0703
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.9345
                 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: 114.5637
                         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' к выборочным данным без замены.

Входные параметры

свернуть все

Данные о предикторе, заданные как n-by-p числовая матрица, где n является количеством наблюдений и p, являются количеством предикторов.

Длина Y и количество наблюдений в X должно быть равным.

Типы данных: single | double

Метки класса, заданные как категориальное, символ, или массив строк, логический или числовой вектор или массив ячеек из символьных векторов.

  • 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 имя аргумента и 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'.

В следующей таблице, f(x)=T(x)β+b.

  • x является наблюдением (вектор-строка) от переменных предикторов p.

  • T(·) преобразование наблюдения (вектор-строка) для расширения функции. T (x) сопоставляет x в p к высокому мерному пространству (m).

  • β является вектором коэффициентов m.

  • b является скалярным смещением.

ЗначениеАлгоритмОбласть значений ответаФункция потерь
'svm'Машина опорных векторовy ∊ {-1,1}; 1 для положительного класса и –1 в противном случаеСтержень: [y,f(x)]=max [0,1yf(x)]
'logistic'Логистическая регрессияТо же самое как 'svm'(Логистическое) отклонение: [y,f(x)]=журнал{1+exp[yf(x)]}

Пример: 'Learner','logistic'

Количество размерностей расширенного пробела, заданного как разделенная запятой пара, состоящая из 'NumExpansionDimensions' и 'auto' или положительное целое число. Для 'auto', fitckernel функция выбирает количество размерностей с помощью 2.^ceil(min(log2(p)+5,15)), где p количество предикторов.

Для получения дополнительной информации смотрите Случайное Расширение Функции.

Пример: 'NumExpansionDimensions',2^15

Типы данных: char | string | single | double

Масштабный коэффициент ядра, заданный как разделенная запятой пара, состоящая из 'KernelScale' и 'auto' или положительная скалярная величина. Программное обеспечение получает случайное основание для случайного расширения функции при помощи масштабного коэффициента ядра. Для получения дополнительной информации смотрите Случайное Расширение Функции.

Если вы задаете 'auto', затем программное обеспечение выбирает соответствующий масштабный коэффициент ядра с помощью эвристической процедуры. Эта эвристическая процедура использует подвыборку, таким образом, оценки могут варьироваться от одного вызова до другого. Поэтому, чтобы воспроизвести результаты, установите seed случайных чисел при помощи rng перед обучением.

Пример: 'KernelScale','auto'

Типы данных: char | string | single | double

Ограничение поля, заданное как разделенная запятой пара, состоящая из 'BoxConstraint' и положительная скалярная величина.

Этот аргумент допустим только когда 'Learner' 'svm'(значение по умолчанию) и вы не задаете значение для силы срока регуляризации 'Lambda'. Можно задать любой 'BoxConstraint' или 'Lambda' потому что ограничение поля (C) и сила срока регуляризации (λ) связано C = 1 / (λ n), где n является количеством наблюдений.

Пример: 'BoxConstraint',100

Типы данных: single | double

Сила срока регуляризации, заданная как разделенная запятой пара, состоящая из 'Lambda' и 'auto' или неотрицательный скаляр.

Для 'auto', значение 'Lambda' 1/n, где n является количеством наблюдений.

Можно задать любой 'BoxConstraint' или 'Lambda' потому что ограничение поля (C) и сила срока регуляризации (λ) связано C = 1 / (λ n).

Пример: 'Lambda',0.01

Типы данных: char | string | single | double

Опции перекрестной проверки

свернуть все

Отметьте, чтобы обучить перекрестный подтвержденный классификатор, заданный как разделенная запятой пара, состоящая из 'Crossval' и 'on' или 'off'.

Если вы задаете 'on', затем программное обеспечение обучает перекрестный подтвержденный классификатор с 10 сгибами.

Можно заменить эту установку перекрестной проверки с помощью CVPartition, Holdout, KFold, или Leaveout аргумент пары "имя-значение". Можно использовать только один аргумент пары "имя-значение" перекрестной проверки за один раз, чтобы создать перекрестную подтвержденную модель.

Пример: 'Crossval','on'

Раздел перекрестной проверки, заданный как разделенная запятой пара, состоящая из 'CVPartition' и cvpartition объект раздела создается cvpartition. Объект раздела задает тип перекрестной проверки и индексации для наборов обучения и валидации.

Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition, Holdout, KFold, или Leaveout.

Пример: Предположим, что вы создаете случайный раздел для 5-кратной перекрестной проверки на 500 наблюдениях при помощи cvp = cvpartition(500,'KFold',5). Затем можно задать перекрестную подтвержденную модель при помощи 'CVPartition',cvp.

Часть данных используется в валидации затяжки, заданной как разделенная запятой пара, состоящая из 'Holdout' и скалярное значение в области значений (0,1). Если вы задаете 'Holdout',p, затем программное обеспечение завершает эти шаги:

  1. Случайным образом выберите и зарезервируйте p*100% из данных как данные о валидации, и обучают модель с помощью остальной части данных.

  2. Сохраните компактную, обученную модель в Trained свойство перекрестной подтвержденной модели.

Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition, Holdout, KFold, или Leaveout.

Пример: 'Holdout',0.1

Типы данных: double | single

Количество сгибов, чтобы использовать в перекрестной подтвержденной модели, заданной как разделенная запятой пара, состоящая из 'KFold' и положительное целочисленное значение, больше, чем 1. Если вы задаете 'KFold',k, затем программное обеспечение завершает эти шаги:

  1. Случайным образом разделите данные в k наборы.

  2. Для каждого набора зарезервируйте набор как данные о валидации и обучите модель с помощью другого k – 1 набор.

  3. Сохраните k компактные, обученные модели в ячейках k- 1 вектор ячейки в Trained свойство перекрестной подтвержденной модели.

Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition, Holdout, KFold, или Leaveout.

Пример: 'KFold',5

Типы данных: single | double

Флаг перекрестной проверки "Пропускает один", заданный как разделенная запятой пара, состоящая из 'Leaveout' и 'on' или 'off'. Если вы задаете 'Leaveout','on', затем, для каждого из наблюдений n (где n является количеством наблюдений, исключая недостающие наблюдения), программное обеспечение завершает эти шаги:

  1. Зарезервируйте наблюдение как данные о валидации и обучите модель с помощью другого n – 1 наблюдение.

  2. Сохраните n компактные, обученные модели в ячейках n-by-1 вектор ячейки в Trained свойство перекрестной подтвержденной модели.

Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition, Holdout, KFold, или Leaveout.

Пример: 'Leaveout','on'

Средства управления сходимостью

свернуть все

Относительный допуск на линейных коэффициентах и сроке смещения (прерывание), заданное как разделенная запятой пара, состоящая из 'BetaTolerance' и неотрицательный скаляр.

Пусть Bt=[βtbt], то есть, вектор коэффициентов и смещения называет в итерации оптимизации t. Если BtBt1Bt2<BetaTolerance, затем оптимизация завершает работу.

Если вы также задаете GradientTolerance, затем оптимизация завершает работу, когда программное обеспечение удовлетворяет любому критерию остановки.

Пример: 'BetaTolerance',1e–6

Типы данных: single | double

Абсолютный допуск градиента, заданный как разделенная запятой пара, состоящая из 'GradientTolerance' и неотрицательный скаляр.

Пусть t будьте вектором градиента целевой функции относительно коэффициентов, и смещение называют в итерации оптимизации t. Если t=max |t|<GradientTolerance, затем оптимизация завершает работу.

Если вы также задаете BetaTolerance, затем оптимизация завершает работу, когда программное обеспечение удовлетворяет любому критерию остановки.

Пример: 'GradientTolerance',1e–5

Типы данных: single | double

Максимальное количество итераций оптимизации, заданных как разделенная запятой пара, состоящая из 'IterationLimit' и положительное целое число.

Значение по умолчанию 1000 если преобразованные совпадения данных в памяти, как задано BlockSize аргумент пары "имя-значение". В противном случае значение по умолчанию равняется 100.

Пример: 'IterationLimit',500

Типы данных: single | double

Другие опции классификации ядер

свернуть все

Максимальная сумма выделенной памяти (в мегабайтах), заданный как разделенная запятой пара, состоящая из 'BlockSize' и положительная скалярная величина.

Если fitckernel требует большей памяти, чем значение 'BlockSize' чтобы содержать преобразованные данные о предикторе, затем программное обеспечение использует мудрую блоком стратегию. Для получения дополнительной информации о мудрой блоком стратегии, см. Алгоритмы.

Пример: 'BlockSize',1e4

Типы данных: single | double

Поток случайных чисел для воспроизводимости преобразования данных, заданного как разделенная запятой пара, состоящая из 'RandomStream' и случайный потоковый объект. Для получения дополнительной информации смотрите Случайное Расширение Функции.

Используйте 'RandomStream' воспроизвести случайные основные функции что fitckernel использование, чтобы преобразовать данные о предикторе к высокому мерному пространству. Для получения дополнительной информации смотрите Управление Global Stream (MATLAB) и Создание и Управление Потоком Случайных чисел (MATLAB).

Пример: 'RandomStream',RandStream('mlfg6331_64')

Размер буфера истории для приближения Гессиана, заданного как разделенная запятой пара, состоящая из 'HessianHistorySize' и положительное целое число. В каждой итерации, fitckernel составляет приближение Гессиана при помощи статистики от последнего HessianHistorySize итерации.

Пример: 'HessianHistorySize',10

Типы данных: single | double

Уровень многословия, заданный как разделенная запятой пара, состоящая из 'Verbose' и любой 0 или 1. Verbose управляет отображением диагностической информации в командной строке.

ЗначениеОписание
0fitckernel не отображает диагностическую информацию.
1fitckernel отображения и хранилища значение целевой функции, величины градиента и другой диагностической информации. FitInfo.History содержит диагностическую информацию.

Пример: 'Verbose',1

Типы данных: single | double

Другие опции классификации

свернуть все

Имена классов, чтобы использовать в обучении, заданном как разделенная запятой пара, состоящая из '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

Misclassification стоят, заданный как разделенная запятой пара, состоящая из 'Cost' и квадратная матрица или структура.

  • Если вы задаете квадратную матрицу cost ('Cost',cost), затем cost(i,j) стоимость классификации точки в класс j если его истинным классом является i. Таким образом, строки соответствуют истинному классу, и столбцы соответствуют предсказанному классу. Чтобы задать класс заказывают для соответствующих строк и столбцов cost, используйте ClassNames аргумент пары "имя-значение".

  • Если вы задаете структуру S ('Cost',S), затем это должно иметь два поля:

    • S.ClassNames, который содержит имена классов как переменную совпадающего типа данных как Y

    • S.ClassificationCosts, который содержит матрицу стоимости со строками и столбцами, упорядоченными как в S.ClassNames

Значение по умолчанию для Cost единицы (K) – глаз (K), где K количество отличных классов.

fitckernel использование Cost настраивать предшествующие вероятности класса, заданные в Prior. Затем fitckernel использует настроенные априорные вероятности в обучении и сбрасывает матрицу стоимости к ее значению по умолчанию.

Пример: 'Cost',[0 2; 1 0]

Типы данных: single | double | struct

Априорные вероятности для каждого класса, заданного как разделенная запятой пара, состоящая из 'Prior' и 'empirical', 'uniform', числовой вектор или массив структур.

Эта таблица суммирует доступные параметры для установки априорных вероятностей.

ЗначениеОписание
'empirical'Априорные вероятности класса являются частотами родственника класса в Y.
'uniform'Все априорные вероятности класса равны 1/K, где K количество классов.
числовой векторКаждый элемент является априорной вероятностью класса. Закажите элементы согласно их порядку в Y. Если вы задаете порядок с помощью 'ClassNames' аргумент пары "имя-значение", затем закажите элементы соответственно.
массив структур

Структура S с двумя полями:

  • S.ClassNames содержит имена классов как переменную того же типа как Y.

  • S.ClassProbs содержит вектор соответствующих априорных вероятностей.

fitckernel нормирует априорные вероятности в Prior суммировать к 1.

Пример: 'Prior',struct('ClassNames',{{'setosa','versicolor'}},'ClassProbs',1:2)

Типы данных: char | string | double | single | struct

Выиграйте преобразование, заданное как разделенная запятой пара, состоящая из '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' и положительный числовой вектор длины n, где n количество наблюдений в X. fitckernel функция взвешивает наблюдения в X с соответствующими значениями в Weights.

Значением по умолчанию являются единицы (n,1).

fitckernel нормирует Weights суммировать до значения априорной вероятности в соответствующем классе.

Пример: 'Weights',w

Типы данных: single | double

Опции гипероптимизации параметров управления

свернуть все

Параметры, чтобы оптимизировать, заданный как разделенная запятой пара, состоящая из 'OptimizeHyperparameters' и одно из этих значений:

  • 'none' — Не оптимизировать.

  • 'auto' — Используйте {'KernelScale','Lambda'}.

  • 'all' — Оптимизируйте все имеющие право параметры.

  • Массив ячеек имеющих право названий параметра.

  • Вектор optimizableVariable объекты, обычно выход hyperparameters.

Оптимизация пытается минимизировать потерю перекрестной проверки (ошибка) для fitckernel путем варьирования параметров. Чтобы управлять типом перекрестной проверки и другими аспектами оптимизации, используйте HyperparameterOptimizationOptions аргумент пары "имя-значение".

Примечание

'OptimizeHyperparameters' значения заменяют любые значения, вы устанавливаете использование других аргументов пары "имя-значение". Например, установка 'OptimizeHyperparameters' к 'auto' вызывает 'auto' значения, чтобы применяться.

Имеющие право параметры для fitckernel :

  • KernelScalefitckernel поисковые запросы среди положительных значений, по умолчанию масштабируемых журналом в области значений [1e-3,1e3].

  • Lambdafitckernel поисковые запросы среди положительных значений, по умолчанию масштабируемых журналом в области значений [1e-3,1e3]/n, где n количество наблюдений.

  • Learnerfitckernel поисковые запросы среди 'svm' и 'logistic'.

  • NumExpansionDimensionsfitckernel поисковые запросы среди положительных целых чисел, по умолчанию масштабируемых журналом в области значений [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' и структура. Этот аргумент изменяет эффект OptimizeHyperparameters аргумент пары "имя-значение". Все поля в структуре являются дополнительными.

Имя поляЗначенияЗначение по умолчанию
Optimizer
  • 'bayesopt' — Используйте Байесовую оптимизацию. Внутренне, эта установка вызывает bayesopt.

  • 'gridsearch' — Используйте поиск сетки с NumGridDivisions значения на размерность.

  • 'randomsearch' — Поиск наугад среди MaxObjectiveEvaluations 'points'.

'gridsearch' поисковые запросы в произвольном порядке, с помощью универсальной выборки без замены от сетки. После оптимизации можно получить таблицу в порядке сетки при помощи команды sortrows(Mdl.HyperparameterOptimizationResults).

'bayesopt'
AcquisitionFunctionName

  • 'expected-improvement-per-second-plus'

  • 'expected-improvement'

  • 'expected-improvement-plus'

  • 'expected-improvement-per-second'

  • 'lower-confidence-bound'

  • 'probability-of-improvement'

Приобретение функционирует, чьи имена включают per-second не давайте к восстанавливаемым результатам, потому что оптимизация зависит от времени выполнения целевой функции. Приобретение функционирует, чьи имена включают plus измените их поведение, когда они сверхиспользуют область. Для получения дополнительной информации смотрите Типы Функции Приобретения.

'expected-improvement-per-second-plus'
MaxObjectiveEvaluationsМаксимальное количество оценок целевой функции.30 для 'bayesopt' или 'randomsearch', и целая сетка для 'gridsearch'
MaxTime

Ограничение по времени, заданное как положительное действительное. Ограничение по времени находится в секундах, как измерено tic и toc. Время выполнения может превысить MaxTime потому что MaxTime не делает оценок функции обработки прерываний.

Inf
NumGridDivisionsДля 'gridsearch', количество значений в каждой размерности. Значение может быть вектором положительных целых чисел, дающих количество значений для каждой размерности или скаляр, который применяется ко всем размерностям. Это поле проигнорировано для категориальных переменных.10
ShowPlotsЛогическое значение, указывающее, показать ли графики. Если true, это поле строит лучшее значение целевой функции против номера итерации. Если существуют один или два параметра оптимизации, и если Optimizer 'bayesopt', затем ShowPlots также строит модель целевой функции против параметров.true
SaveIntermediateResultsЛогическое значение, указывающее, сохранить ли результаты когда Optimizer 'bayesopt'. Если true, это поле перезаписывает переменную рабочей области под названием 'BayesoptResults' в каждой итерации. Переменной является BayesianOptimization объект.false
Verbose

Отобразитесь к командной строке.

  • 0 — Никакое итеративное отображение

  • 1 Итеративное отображение

  • 2 — Итеративное отображение с дополнительной информацией

Для получения дополнительной информации смотрите bayesopt Verbose аргумент пары "имя-значение".

1
UseParallelЛогическое значение, указывающее, запустить ли Байесовую оптимизацию параллельно, которая требует Parallel Computing Toolbox™. Из-за невоспроизводимости синхронизации параллели, параллельная Байесова оптимизация не обязательно дает к восстанавливаемым результатам. Для получения дополнительной информации смотрите Параллельную Байесовую Оптимизацию.false
Repartition

Логическое значение, указывающее, повторно разделить ли перекрестную проверку в каждой итерации. Если false, оптимизатор использует один раздел в оптимизации.

true обычно дает большинство устойчивых результатов, потому что эта установка принимает шум разделения во внимание. Однако для хороших результатов, true требует, по крайней мере, вдвое большего количества функциональных оценок.

false
Используйте не больше, чем одни из следующих трех имен полей.
CVPartitioncvpartition объект, как создано cvpartition.'Kfold',5 если вы не задаете поля перекрестной проверки
HoldoutСкаляр в области значений (0,1) представление части затяжки.
KfoldЦелое число, больше, чем 1.

Пример: 'HyperparameterOptimizationOptions',struct('MaxObjectiveEvaluations',60)

Типы данных: struct

Выходные аргументы

свернуть все

Обученная модель классификации ядер, возвращенная как ClassificationKernel объект модели или ClassificationPartitionedKernel перекрестный подтвержденный объект модели.

Если вы устанавливаете какой-либо из аргументов пары "имя-значение" CrossVal, CVPartition, Holdout, KFold, или Leaveout, затем Mdl ClassificationPartitionedKernel перекрестный подтвержденный классификатор. В противном случае, Mdl ClassificationKernel классификатор.

К ссылочным свойствам Mdl, используйте запись через точку. Например, введите Mdl.NumExpansionDimensions в Командном окне, чтобы отобразить количество размерностей расширенного пробела.

Примечание

В отличие от других моделей классификации, и для экономичного использования памяти, ClassificationKernel объект модели не хранит обучающие данные или учебные детали процесса (например, история сходимости).

Детали оптимизации, возвращенные как массив структур включая поля, описаны в этой таблице. Поля содержат спецификации аргумента пары "имя-значение" или окончательные значения.

Поле Описание
Solver

Метод минимизации целевой функции: 'LBFGS-fast', 'LBFGS-blockwise', или 'LBFGS-tall'. Для получения дополнительной информации см. Алгоритмы.

LossFunctionФункция потерь. Любой 'hinge' или 'logit' в зависимости от типа линейной модели классификации. Смотрите Learner.
LambdaСила срока регуляризации. Смотрите Lambda.
BetaToleranceОтносительный допуск на линейных коэффициентах и сроке смещения. Смотрите BetaTolerance.
GradientToleranceАбсолютный допуск градиента. Смотрите GradientTolerance.
ObjectiveValueЗначение целевой функции, когда оптимизация завершает работу. Потеря классификации плюс срок регуляризации составляет целевую функцию.
GradientMagnitudeНорма Бога вектора градиента целевой функции, когда оптимизация завершает работу. Смотрите GradientTolerance.
RelativeChangeInBetaОтносительные изменения в линейных коэффициентах и смещении называют, когда оптимизация завершает работу. Смотрите BetaTolerance.
FitTimeПрошедшее, тактовое стеной время (в секундах) требуемый подбирать модель к данным.
HistoryИстория информации об оптимизации. Это поле пусто ([]) если вы задаете 'Verbose',0. Для получения дополнительной информации смотрите Verbose и Алгоритмы.

К полям доступа используйте запись через точку. Например, чтобы получить доступ к вектору значений целевой функции для каждой итерации, введите FitInfo.ObjectiveValue в Командном окне.

Хорошая практика должна исследовать FitInfo оценить, является ли сходимость удовлетворительной.

Оптимизация перекрестной проверки гиперпараметров, возвращенных как BayesianOptimization возразите или таблица гиперпараметров и присваиваемых значений. Выход непуст когда значение 'OptimizeHyperparameters' не 'none'. Выходное значение зависит от Optimizer значение поля 'HyperparameterOptimizationOptions' аргумент пары "имя-значение":

Значение Optimizer Поле Значение HyperparameterOptimizationResults
'bayesopt' (значение по умолчанию)Объект класса BayesianOptimization
'gridsearch' или 'randomsearch'Таблица гиперпараметров используемые, наблюдаемые значения целевой функции (потеря перекрестной проверки), и ранг наблюдений от самого низкого (лучше всего) к (худшему) самому высокому

Ограничения

  • fitckernel не принимает начальные условия для вектора содействующей беты (β) и смещает термин (b), используемый, чтобы определить решающую функцию, f(x)=T(x)β+b.

  • fitckernel не поддерживает опции стандартизации и перекрестной проверки.

  • fitckernel не принимает табличные входные параметры.

Больше о

свернуть все

Случайное расширение функции

Случайное расширение функции, такое как Случайные Раковины [1] и Быстрое питание [2], является схемой аппроксимировать Гауссовы ядра алгоритма классификации ядер, чтобы использовать в больших данных в вычислительном отношении эффективным способом. Случайное расширение функции более практично для больших применений данных, которые имеют большие наборы обучающих данных, но могут также быть применены к меньшим наборам данных, которые умещаются в памяти.

Алгоритм классификации ядер ищет оптимальную гиперплоскость, которая разделяет данные на два класса после отображения функций в высокое мерное пространство. Нелинейные функции, которые не линейно отделимы в низком мерном пространстве, могут быть отделимыми в расширенном высоком мерном пространстве. Все вычисления для классификации гиперплоскостей используют только скалярные произведения. Можно получить нелинейную модель классификации, заменив скалярное произведение x 1x2' с нелинейной функцией ядра G(x1,x2)=φ(x1),φ(x2), где xi является i th наблюдение (вектор-строка), и φ (xi) является преобразованием, которое сопоставляет xi с высоким мерным пространством (названный “приемом ядра”). Однако оценивание G (x 1, x 2) (Матрица грамма) для каждой пары наблюдений является в вычислительном отношении дорогим для большого набора данных (большой n).

Случайная схема расширения функции находит случайное преобразование так, чтобы его скалярное произведение аппроксимировало Гауссово ядро. Таким образом,

G(x1,x2)=φ(x1),φ(x2)T(x1)T(x2)',

где T (x) сопоставляет x в p к высокому мерному пространству (m). Схема Random Kitchen Sink использует случайное преобразование

T(x)=m1/2exp(iZx')',

где Zm×p выборка, чертившая от N(0,σ2) и σ 2 является шкалой ядра. Эта схема требует O (m p) расчет и устройство хранения данных. Схема Fastfood вводит другое случайное основание V вместо Z с помощью матриц Адамара, объединенных с Гауссовыми матрицами масштабирования. Это случайное основание уменьшает стоимость расчета для O (m logp), и уменьшает устройство хранения данных до 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.

Расширенные возможности

Введенный в R2017b