fitckernel

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

Описание

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

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

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

пример

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

Mdl = fitckernel(Tbl,ResponseVarName) возвращает модель классификации ядра Mdl обучен с использованием переменных предиктора, содержащихся в таблице Tbl и метки классов в Tbl.ResponseVarName.

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

Mdl = fitckernel(Tbl,Y) возвращает модель классификации ядра, используя переменные предиктора в таблице Tbl и метки классов в векторных Y.

пример

Mdl = fitckernel(___,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
    {'b'}
    {'g'}

Обучите двоичную модель классификации ядра, которая определяет, является ли радарный возврат плохим ('b') или хорошо ('g'). Извлеките сводные данные подгонки, чтобы определить, насколько хорошо алгоритм оптимизации подходит модели к данным.

rng('default') % For reproducibility
[Mdl,FitInfo] = fitckernel(X,Y)
Mdl = 
  ClassificationKernel
              ResponseName: 'Y'
                ClassNames: {'b'  'g'}
                   Learner: 'svm'
    NumExpansionDimensions: 2048
               KernelScale: 1
                    Lambda: 0.0028
             BoxConstraint: 1


  Properties, Methods

FitInfo = struct with fields:
                  Solver: 'LBFGS-fast'
            LossFunction: 'hinge'
                  Lambda: 0.0028
           BetaTolerance: 1.0000e-04
       GradientTolerance: 1.0000e-06
          ObjectiveValue: 0.2604
       GradientMagnitude: 0.0028
    RelativeChangeInBeta: 8.2512e-05
                 FitTime: 1.0377
                 History: []

Mdl является ClassificationKernel модель. Чтобы проверить ошибку классификации в выборке, можно пройти Mdl и обучающих данных или новых данных для loss функция. Или ты можешь пройти Mdl и новые данные предиктора в predict функция для предсказания меток классов для новых наблюдений. Можно также пройти Mdl и обучающих данных к resume функция для продолжения обучения.

FitInfo - массив структур, содержащий информацию об оптимизации. Использование FitInfo для определения, являются ли измерения оптимизации завершением удовлетворительными.

Для лучшей точности можно увеличить максимальное количество итераций оптимизации ('IterationLimit') и уменьшить значения допусков ('BetaTolerance' и 'GradientTolerance') с помощью аргументов пары "имя-значение". Это может улучшить такие меры, как ObjectiveValue и RelativeChangeInBeta в FitInfo. Можно также оптимизировать параметры модели при помощи 'OptimizeHyperparameters' аргумент пары "имя-значение".

Загрузите ionosphere набор данных. Этот набор данных имеет 34 предиктора и 351 двоичный ответ для радиолокационных возвратов, либо плохо ('b') или хорошо ('g').

load ionosphere
rng('default') % For reproducibility

Перекрестная проверка модели классификации двоичных ядер. По умолчанию программа использует 10-кратную перекрестную валидацию.

CVMdl = fitckernel(X,Y,'CrossVal','on')
CVMdl = 
  ClassificationPartitionedKernel
    CrossValidatedModel: 'Kernel'
           ResponseName: 'Y'
        NumObservations: 351
                  KFold: 10
              Partition: [1x1 cvpartition]
             ClassNames: {'b'  'g'}
         ScoreTransform: 'none'


  Properties, Methods

numel(CVMdl.Trained)
ans = 10

CVMdl является ClassificationPartitionedKernel модель. Потому что fitckernel реализует 10-кратную перекрестную валидацию, CVMdl содержит 10 ClassificationKernel модели, которые программное обеспечение обучает по обучающим-складным (in-fold) наблюдениям.

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

kfoldLoss(CVMdl)
ans = 0.0940

Вероятность классификационных ошибок составляет приблизительно 9%.

Оптимизируйте гиперпараметры автоматически с помощью 'OptimizeHyperparameters' аргумент пары "имя-значение".

Загрузите ionosphere набор данных. Этот набор данных имеет 34 предиктора и 351 двоичный ответ для радиолокационных возвратов, либо плохо ('b') или хорошо ('g').

load ionosphere

Найдите гиперпараметры, которые минимизируют пятикратные потери при перекрестной проверке с помощью автоматической оптимизации гипероптимизации параметров управления. Задайте 'OptimizeHyperparameters' как 'auto' так что fitckernel находит оптимальные значения 'KernelScale' и 'Lambda' Аргументы пары "имя-значение". Для воспроизводимости установите случайный seed и используйте 'expected-improvement-plus' функция сбора.

rng('default')
[Mdl,FitInfo,HyperparameterOptimizationResults] = fitckernel(X,Y,'OptimizeHyperparameters','auto',...
    'HyperparameterOptimizationOptions',struct('AcquisitionFunctionName','expected-improvement-plus'))
|=====================================================================================================|
| Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |  KernelScale |       Lambda |
|      | result |             | runtime     | (observed)  | (estim.)    |              |              |
|=====================================================================================================|
|    1 | Best   |     0.35897 |     0.92665 |     0.35897 |     0.35897 |       64.836 |   4.4811e-06 |
|    2 | Accept |     0.35897 |      4.6519 |     0.35897 |     0.35897 |     0.036335 |     0.015885 |
|    3 | Accept |     0.39601 |      5.5965 |     0.35897 |     0.36053 |    0.0022147 |   6.8254e-06 |
|    4 | Accept |     0.35897 |      1.0763 |     0.35897 |     0.35898 |       5.1259 |      0.28097 |
|    5 | Accept |     0.35897 |      3.5904 |     0.35897 |     0.35897 |      0.24853 |      0.10828 |
|    6 | Accept |     0.35897 |     0.74403 |     0.35897 |     0.35897 |       885.09 |   0.00057316 |
|    7 | Best   |     0.10826 |      3.5537 |     0.10826 |     0.10833 |       8.0346 |    0.0048286 |
|    8 | Best   |    0.076923 |      3.2422 |    0.076923 |    0.076999 |       7.0902 |    0.0034068 |
|    9 | Accept |    0.091168 |      3.3186 |    0.076923 |    0.077059 |       9.1504 |    0.0020604 |
|   10 | Best   |    0.062678 |      3.9429 |    0.062678 |    0.062723 |       3.5487 |    0.0025912 |
|   11 | Accept |    0.062678 |      3.2212 |    0.062678 |    0.062741 |       2.3869 |     0.003321 |
|   12 | Accept |     0.41026 |      3.1638 |    0.062678 |    0.062536 |      0.14075 |    0.0022499 |
|   13 | Accept |    0.062678 |      3.3683 |    0.062678 |    0.062532 |       3.4215 |    0.0036803 |
|   14 | Accept |    0.062678 |      4.2194 |    0.062678 |    0.061956 |       3.2928 |    0.0030533 |
|   15 | Best   |     0.05698 |      2.6177 |     0.05698 |    0.057204 |       5.0598 |    0.0025499 |
|   16 | Accept |    0.062678 |      5.4455 |     0.05698 |    0.057186 |       5.3401 |    0.0015096 |
|   17 | Accept |     0.05698 |      4.4441 |     0.05698 |    0.057118 |        1.813 |    0.0069209 |
|   18 | Accept |    0.059829 |      4.0439 |     0.05698 |    0.057092 |       1.5122 |    0.0046637 |
|   19 | Accept |    0.059829 |      4.2654 |     0.05698 |     0.05718 |       1.9277 |    0.0056364 |
|   20 | Accept |    0.065527 |      3.8732 |     0.05698 |    0.057189 |       1.4064 |    0.0094306 |
|=====================================================================================================|
| Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |  KernelScale |       Lambda |
|      | result |             | runtime     | (observed)  | (estim.)    |              |              |
|=====================================================================================================|
|   21 | Accept |     0.05698 |      5.1486 |     0.05698 |    0.057033 |       5.1719 |    0.0023614 |
|   22 | Best   |    0.054131 |      12.263 |    0.054131 |    0.054176 |       1.9618 |   6.5704e-05 |
|   23 | Best   |    0.042735 |      5.0079 |    0.042735 |    0.042763 |       1.9463 |   1.0169e-05 |
|   24 | Accept |    0.082621 |      5.1015 |    0.042735 |    0.042775 |       1.0661 |   1.3245e-05 |
|   25 | Accept |    0.054131 |      10.538 |    0.042735 |    0.042789 |        3.288 |   2.0035e-05 |
|   26 | Accept |    0.062678 |      5.7598 |    0.042735 |    0.042769 |        2.657 |   3.0334e-06 |
|   27 | Accept |    0.059829 |      7.2348 |    0.042735 |    0.043054 |       2.0381 |   1.9791e-05 |
|   28 | Accept |    0.042735 |      9.0399 |    0.042735 |    0.042764 |       3.5043 |    0.0001237 |
|   29 | Accept |    0.054131 |      5.0304 |    0.042735 |    0.042764 |       1.3897 |   3.2288e-06 |
|   30 | Accept |    0.062678 |      7.0101 |    0.042735 |    0.042792 |       2.2414 |    0.0002259 |

Figure contains an axes. The axes with title Min objective vs. Number of function evaluations contains 2 objects of type line. These objects represent Min observed objective, Estimated min objective.

Figure contains an axes. The axes with title Objective function model contains 5 objects of type line, surface, contour. These objects represent Observed points, Model mean, Next point, Model minimum feasible.

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

Best observed feasible point:
    KernelScale      Lambda  
    ___________    __________

      1.9463       1.0169e-05

Observed objective function value = 0.042735
Estimated objective function value = 0.043106
Function evaluation time = 5.0079

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

      3.5043       0.0001237

Estimated objective function value = 0.042792
Estimated function evaluation time = 8.6972
Mdl = 
  ClassificationKernel
              ResponseName: 'Y'
                ClassNames: {'b'  'g'}
                   Learner: 'svm'
    NumExpansionDimensions: 2048
               KernelScale: 3.5043
                    Lambda: 1.2370e-04
             BoxConstraint: 23.0320


  Properties, Methods

FitInfo = struct with fields:
                  Solver: 'LBFGS-fast'
            LossFunction: 'hinge'
                  Lambda: 1.2370e-04
           BetaTolerance: 1.0000e-04
       GradientTolerance: 1.0000e-06
          ObjectiveValue: 0.0426
       GradientMagnitude: 0.0028
    RelativeChangeInBeta: 8.9154e-05
                 FitTime: 2.0813
                 History: []

HyperparameterOptimizationResults = 
  BayesianOptimization with properties:

                      ObjectiveFcn: @createObjFcn/inMemoryObjFcn
              VariableDescriptions: [4x1 optimizableVariable]
                           Options: [1x1 struct]
                      MinObjective: 0.0427
                   XAtMinObjective: [1x2 table]
             MinEstimatedObjective: 0.0428
          XAtMinEstimatedObjective: [1x2 table]
           NumObjectiveEvaluations: 30
                  TotalElapsedTime: 177.4022
                         NextPoint: [1x2 table]
                            XTrace: [30x2 table]
                    ObjectiveTrace: [30x1 double]
                  ConstraintsTrace: []
                     UserDataTrace: {30x1 cell}
      ObjectiveEvaluationTimeTrace: [30x1 double]
                IterationTimeTrace: [30x1 double]
                        ErrorTrace: [30x1 double]
                  FeasibilityTrace: [30x1 logical]
       FeasibilityProbabilityTrace: [30x1 double]
               IndexOfMinimumTrace: [30x1 double]
             ObjectiveMinimumTrace: [30x1 double]
    EstimatedObjectiveMinimumTrace: [30x1 double]

Для больших данных процедура оптимизации может занять много времени. Если набор данных слишком велик, чтобы запустить процедуру оптимизации, можно попытаться оптимизировать параметры, используя только частичные данные. Используйте datasample и задайте 'Replace','false' для выборочных данных без замены.

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

свернуть все

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

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

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

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

  • fitckernel поддерживает только двоичную классификацию. Либо Y должен содержать ровно два различных класса, или необходимо задать два класса для обучения при помощи ClassNames аргумент пары "имя-значение".

  • Если Y является символьный массив, тогда каждый элемент должен соответствовать одной строке массива.

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

  • Хорошей практикой является определение порядка классов при помощи ClassNames аргумент пары "имя-значение".

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

Выборочные данные, используемых для обучения модели, заданная как таблица. Каждая строка Tbl соответствует одному наблюдению, и каждый столбец соответствует одной переменной предиктора. Опционально Tbl может содержать один дополнительный столбец для переменной отклика. Многополюсные переменные и массивы ячеек, отличные от массивов ячеек векторов символов, не разрешены.

  • Если Tbl содержит переменную отклика, и необходимо использовать все оставшиеся переменные в Tbl в качестве предикторов, затем задайте переменную отклика при помощи ResponseVarName.

  • Если Tbl содержит переменную отклика, и необходимо использовать только подмножество остальных переменных в Tbl в качестве предикторов задайте формулу при помощи formula.

  • Если Tbl не содержит переменную отклика, затем задает переменную отклика при помощи Y. Длина переменной отклика и количество строк в Tbl должно быть равным.

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

Имя переменной отклика, заданное как имя переменной в Tbl.

Вы должны задать ResponseVarName как вектор символов или строковый скаляр. Для примера, если переменная отклика Y хранится как Tbl.Y, затем укажите его следующим 'Y'. В противном случае программное обеспечение обрабатывает все столбцы Tbl, включая Y, как предикторы при обучении модели.

Переменная отклика должна быть категориальными символьными или строковыми массивами; логический или числовой вектор; или массив ячеек из векторов символов. Если Y является символьным массивом, тогда каждый элемент переменной отклика должен соответствовать одной строке массива.

Хорошей практикой является определение порядка классов при помощи ClassNames аргумент имя-значение.

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

Объяснительная модель переменной отклика и подмножества переменных предиктора, заданная в виде вектора символов или строкового скаляра в форме 'Y~x1+x2+x3'. В этой форме Y представляет переменную отклика, и x1, x2, и x3 представляют переменные предиктора.

Чтобы задать подмножество переменных в Tbl в качестве предикторов для настройки модели используйте формулу. Если вы задаете формулу, то программное обеспечение не использует никаких переменных в Tbl которые не появляются в formula.

Имена переменных в формуле должны быть обоими именами переменных в Tbl (Tbl.Properties.VariableNames) и действительный MATLAB® идентификаторы. Можно проверить имена переменных в Tbl при помощи isvarname функция. Если имена переменных недопустимы, можно преобразовать их, используя matlab.lang.makeValidName функция.

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

Примечание

Программное обеспечение лечит NaN, пустой символьный вектор (''), пустая строка (""), <missing>, и <undefined> элементы как отсутствующие значения и удаляет наблюдения с любой из этих характеристик:

  • Отсутствующее значение в переменной отклика

  • По крайней мере, одно отсутствующее значение в наблюдении предиктора (строка в X или Tbl)

  • NaN значение или 0 вес ('Weights')

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: Mdl = fitckernel(X,Y,'Learner','logistic','NumExpansionDimensions',2^15,'KernelScale','auto') реализует логистическую регрессию после отображения данных предиктора в 2^15 размерное пространство с использованием расширения функций с параметром шкалы ядра, выбранным эвристической процедурой.

Примечание

Вы не можете использовать какой-либо аргумент пары "имя-значение" перекрестной проверки наряду с 'OptimizeHyperparameters' аргумент пары "имя-значение". Можно изменить перекрестную валидацию для 'OptimizeHyperparameters' только при помощи 'HyperparameterOptimizationOptions' аргумент пары "имя-значение".

Опции классификации ядра

свернуть все

Тип модели линейной классификации, заданный как разделенная разделенными запятой парами, состоящая из 'Learner' и 'svm' или 'logistic'.

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

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

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

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

  • b - скалярное смещение.

ЗначениеАлгоритмОбласть значений откликаФункция потерь
'svm'Поддерживайте векторную машину<reservedrangesplaceholder0>  {-1,1}; 1 для положительного класса и -1 в противном случаеШарнир: [y,f(x)]=max[0,1yf(x)]
'logistic'Логистическая регрессияТо же, что и 'svm'Отклонение (логистическое): [y,f(x)]=log{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', затем программное обеспечение выбирает соответствующий параметр шкалы ядра с помощью эвристической процедуры. Эта эвристическая процедура использует субдискретизацию, поэтому оценки могут варьироваться от одного вызова к другому. Поэтому, чтобы воспроизвести результаты, установите начальное число случайных чисел при помощи 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, Holdout, KFold, или Leaveout.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  2. Сохраните n компактные обученные модели в камерах вектора камеры n-на-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 с использованием RandStream и Создание и Управление потоком случайных чисел.

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

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

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

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

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

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

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

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

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

свернуть все

Категориальный список предикторов, заданный как одно из значений в этой таблице.

ЗначениеОписание
Вектор положительных целых чисел

Каждая запись в векторе является индексом значением, соответствующим столбцу данных предиктора, который содержит категориальную переменную. Значения индекса находятся между 1 и p, где p - количество предикторов, используемых для обучения модели.

Если fitckernel использует подмножество входа переменных в качестве предикторов, затем функция индексирует предикторы, используя только подмножество. The 'CategoricalPredictors' значения не подсчитывают переменную отклика, переменную веса наблюдения и любые другие переменные, которые функция не использует.

Логический вектор

A true запись означает, что соответствующий столбец данных предиктора является категориальной переменной. Длина вектора p.

Матрица символовКаждая строка матрицы является именем переменной. Имена должны совпадать с записями в PredictorNames. Дополните имена дополнительными пробелами, чтобы каждая строка матрицы символов имела одинаковую длину.
Строковые массивы или массив ячеек векторов символовКаждый элемент массива является именем переменной. Имена должны совпадать с записями в PredictorNames.
'all'Все предикторы категоричны.

По умолчанию, если данные предиктора находятся в таблице (Tbl), fitckernel принимает, что переменная категориальна, если это логический вектор, категориальный вектор, символьный массив, строковые массивы или массив ячеек из векторов символов. Если данные предиктора являются матрицей (X), fitckernel принимает, что все предикторы непрерывны. Чтобы идентифицировать любые другие предикторы как категориальные предикторы, задайте их с помощью 'CategoricalPredictors' аргумент имя-значение.

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

Пример: 'CategoricalPredictors','all'

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

Имена классов, используемых для обучения, заданные как категориальные символьные или строковые массивы; логический или числовой вектор; или массив ячеек из векторов символов. ClassNames должен иметь тот совпадающий тип данных, что и переменная отклика в Tbl или Y.

Если ClassNames является символьный массив, тогда каждый элемент должен соответствовать одной строке массива.

Использование ClassNames кому:

  • Задайте порядок классов во время обучения.

  • Задайте порядок любой размерности входного или выходного аргумента, которая соответствует порядку классов. Для примера используйте ClassNames для определения порядка размерностей Cost или порядок столбцов классификационных оценок, возвращаемых predict.

  • Выберите подмножество классов для обучения. Например, предположим, что набор всех различных имен классов в Y является {'a','b','c'}. Чтобы обучить модель с помощью наблюдений из классов 'a' и 'c' только, задайте 'ClassNames',{'a','c'}.

Значение по умолчанию для ClassNames - набор всех различных имен классов в переменной отклика в Tbl или Y.

Пример: 'ClassNames',{'b','g'}

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

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

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

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

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

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

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

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

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

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

Имена переменных предиктора, заданные как строковые массивы уникальных имен или массив ячеек из уникальных векторов символов. Функциональность PredictorNames зависит от способа предоставления обучающих данных.

  • Если вы поставляете X и Y, тогда можно использовать PredictorNames для назначения имен переменным предиктора в X.

    • Порядок имен в PredictorNames должен соответствовать порядку столбцов X. То есть PredictorNames{1} - имя X(:,1), PredictorNames{2} - имя X(:,2)и так далее. Кроме того, size(X,2) и numel(PredictorNames) должно быть равным.

    • По умолчанию PredictorNames является {'x1','x2',...}.

  • Если вы поставляете Tbl, тогда можно использовать PredictorNames выбрать, какие переменные предиктора использовать в обучении. То есть, fitckernel использует только переменные предиктора в PredictorNames и переменной отклика во время обучения.

    • PredictorNames должен быть подмножеством Tbl.Properties.VariableNames и не может включать имя переменной отклика.

    • По умолчанию PredictorNames содержит имена всех переменных предиктора.

    • Хорошей практикой является определение предикторов для обучения с использованием любой из 'PredictorNames' или formula, но не то и другое.

Пример: 'PredictorNames',{'SepalLength','SepalWidth','PetalLength','PetalWidth'}

Типы данных: string | cell

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

В этой таблице результирующие опции для настройки предыдущих вероятностей.

ЗначениеОписание
'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

Имя переменной отклика, заданное как вектор символов или строковый скаляр.

  • Если вы поставляете Y, тогда можно использовать 'ResponseName' чтобы задать имя для переменной отклика.

  • Если вы поставляете ResponseVarName или formula, тогда вы не можете использовать 'ResponseName'.

Пример: 'ResponseName','response'

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

Преобразование счета, заданное как вектор символов, строковый скаляр или указатель на функцию.

В этой таблице результирующие векторы символов и строковые скаляры.

ЗначениеОписание
'doublelogit'1/(1 + e–2x)
'invlogit'журнал (x/( 1 - x))
'ismax'Устанавливает счет для класса с самым большим счетом равным 1 и устанавливает счета для всех других классов равным 0
'logit'1/(1 + ex)
'none' или 'identity'x (без преобразования)
'sign'-1 для x < 0
0 для x = 0
1 для x > 0
'symmetric'2 x – 1
'symmetricismax'Устанавливает счет для класса с самым большим счетом равным 1 и устанавливает счета для всех других классов равной -1
'symmetriclogit'2/(1 + ex) – 1

Для функции MATLAB или функции, которую вы задаете, используйте указатель на функцию для преобразования счета. Указатель на функцию должен принять матрицу (исходные счета) и вернуть матрицу того же размера (преобразованные счета).

Пример: 'ScoreTransform','logit'

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

Веса наблюдений, заданные как неотрицательный числовой вектор или имя переменной в Tbl. Программа взвешивает каждое наблюдение в X или Tbl с соответствующим значением в Weights. Длина Weights должно равняться количеству наблюдений в X или Tbl.

Если вы задаете входные данные как таблицу Tbl, затем Weights может быть именем переменной в Tbl который содержит числовой вектор. В этом случае необходимо задать Weights как вектор символов или строковый скаляр. Для примера, если вектор весов W хранится как Tbl.W, затем укажите его следующим 'W'. В противном случае программное обеспечение обрабатывает все столбцы Tbl, включая W, как предикторы или переменная отклика при обучении модели.

По умолчанию Weights является ones(n,1), где n количество наблюдений в X или Tbl.

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

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

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

свернуть все

Оптимизируемые параметры, заданные как разделенная разделенными запятой парами, состоящая из 'OptimizeHyperparameters' и одно из следующих значений:

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

  • 'auto' - Использовать {'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].

Установите параметры nondefault путем передачи вектора optimizableVariable объекты, которые имеют значения nondefault. Для примера:

load fisheriris
params = hyperparameters('fitckernel',meas,species);
params(2).Range = [1e-4,1e6];

Передайте params как значение 'OptimizeHyperparameters'.

По умолчанию итеративное отображение появляется в командной строке, и графики появляются согласно количеству гиперпараметров в оптимизации. Для оптимизации и графиков целевой функцией является журнал ( 1 + потери перекрестной валидации) для регрессии и коэффициент неправильной классификации для классификации. Чтобы управлять итеративным отображением, установите Verbose поле 'HyperparameterOptimizationOptions' аргумент пары "имя-значение". Чтобы управлять графиками, установите ShowPlots поле 'HyperparameterOptimizationOptions' аргумент пары "имя-значение".

Для получения примера смотрите Оптимизацию Классификатора Ядра.

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

Опции оптимизации, заданные как разделенная разделенными запятой парами, состоящая из 'HyperparameterOptimizationOptions' и структуру. Этот аргумент изменяет эффект OptimizeHyperparameters аргумент пары "имя-значение". Все поля в структуре являются необязательными.

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

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

  • 'randomsearch' - Поиск наугад среди MaxObjectiveEvaluations точки.

'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
Используйте не более одного из следующих трех имен полей.
CVPartitionA cvpartition объект, созданный cvpartition.'Kfold',5 если вы не задаете какое-либо поле перекрестной проверки
HoldoutСкаляр в области значений (0,1) представляющий фракцию удержания.
KfoldЦелое число, больше 1.

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

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

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

свернуть все

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

Если вы задаете любой из аргументов пары "имя-значение" 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 не поддерживает стандартизацию.

Подробнее о

свернуть все

Расширение случайных функций

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

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

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

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

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

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

где Zm×p является выборкой, нарисованной из N(0,σ2) и σ2 является шкалой ядра. Эта схема требует O (m p) расчета и хранения. Схема Фастфуда вводит другой случайный базис V вместо того, чтобы Z использовать матрицы Адамара, объединенные с матрицами Гауссова масштабирования. Этот случайный базис снижает стоимость расчета до O (m logp) и сокращает объем памяти до O (m ).

fitckernel функция использует схему Fastfood для случайного расширения признаков и использует линейную классификацию, чтобы обучить Гауссову модель классификации ядра. В отличие от решателей в fitcsvm функция, которая требует расчета n -by n Gram матрицы, решателя вfitckernel нужно только сформировать матрицу размера n -by - m, причем m обычно намного меньше, чем n для больших данных.

Прямоугольное ограничение

Прямоугольное ограничение является параметром, который управляет максимальным штрафом, налагаемым на наблюдения, нарушающие маржу, и помогает предотвратить избыточную подгонку (регуляризацию). Увеличение ограничения коробки может привести к увеличению времени обучения.

Прямоугольное ограничение (C) и коэффициент регуляризации (λ) связаны C = 1/( λ n), где n - количество наблюдений.

Алгоритмы

fitckernel минимизирует регуляризованную целевую функцию с помощью решателя с ограниченной памятью Broyden-Fletcher-Goldfarb-Shanno (LBFGS) с регуляризацией гребня (L 2). Чтобы найти тип решателя LBFGS, используемый для обучения, введите FitInfo.Solver в Командном окне.

  • 'LBFGS-fast' - решатель LBFGS.

  • 'LBFGS-blockwise' - решатель LBFGS с блочной стратегией. Если fitckernel требуется больше памяти, чем значение BlockSize чтобы сохранить преобразованные данные предиктора, он использует блочную стратегию.

  • 'LBFGS-tall' - решатель LBFGS с блочной стратегией для длинных массивов.

Когда fitckernel использует блочную стратегию, fitckernel реализует LBFGS путем распределения вычисления потерь и градиента между различными частями данных при каждой итерации. Также, fitckernel уточняет начальные оценки линейных коэффициентов и члена смещения путем локальной подгонки модели к частям данных и объединения коэффициентов путем усреднения. Если вы задаете 'Verbose',1, затем fitckernel отображает диагностическую информацию для каждого прохода данных и хранит информацию в History область FitInfo.

Когда fitckernel не использует блочную стратегию, начальные оценки являются нулями. Если вы задаете 'Verbose',1, затем fitckernel отображает диагностическую информацию для каждой итерации и хранит информацию в History область FitInfo.

Ссылки

[1] Рахими, А. и Б. Рехт. «Случайные функции для крупномасштабных машин-ядер». Усовершенствования в системах нейронной обработки информации. Том 20, 2008, стр. 1177-1184.

[2] Le, Q., T. Sarlós, and A. Smola. Fastfood - аппроксимация расширений ядра в логинейном времени. Материалы 30-й Международной конференции по машинному обучению. Том 28, № 3, 2013, с. 244-252.

[3] Хуан, П. С., Х. Аврон, Т. Н. Сайнатх, В. Синдхвани и Б. Рамабхадран. «Методы ядра соответствуют глубоким нейронным сетям на TIMIT». 2014 IEEE International Conference on Acoustics, Speech and Signal Processing. 2014, стр 205–209.

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

Введенный в R2017b