exponenta event banner

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

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

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

Оценка кросс-проверенной ошибки классификации.

kfoldLoss(CVMdl)
ans = 0.0940

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

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

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

load ionosphere

Найдите гиперпараметры, которые минимизируют пятикратные потери при перекрестной проверке, используя автоматическую оптимизацию гиперпараметров. Определить 'OptimizeHyperparameters' как 'auto' чтобы fitckernel находит оптимальные значения 'KernelScale' и 'Lambda' аргументы пары имя-значение. Для воспроизводимости задайте случайное начальное число и используйте '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-за-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'Опорная векторная машинаy ∊ {-1,1}; 1 для положительного класса и -1 в противном случаеШарнир: ℓ[y,f (x)] = max [0,1 yf (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' поскольку ограничение (С) и сила члена регуляризации (λ) связаны С = 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.

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

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

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

  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-by-1 в Trained свойства перекрестной проверенной модели.

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

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

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

свернуть все

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

Пусть Bt = [βt bt], то есть вектор коэффициентов и член смещения при итерации оптимизации т. Если Bt−Bt−1Bt‖2<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 используется для преобразования данных предиктора в многомерное пространство. Дополнительные сведения см. в разделах Управление глобальным потоком с помощью RandStream и Создание и управление потоком случайных чисел.

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

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

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

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

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

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

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

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

Другие варианты классификации

свернуть все

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

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

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

Если fitckernel использует подмножество входных переменных в качестве предикторов, затем функция индексирует предикторы, используя только подмножество. '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 если его истинный класс i. То есть строки соответствуют истинному классу, а столбцы - прогнозируемому классу. Определение порядка классов для соответствующих строк и столбцов cost, используйте ClassNames аргумент пары имя-значение.

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

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

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

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

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

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

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

Имена переменных предиктора, заданные как строковый массив уникальных имен или массив ячеек уникальных векторов символов. Функциональные возможности 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'log (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

Веса наблюдения, указанные как неотрицательный числовой вектор или имя переменной в 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 поиск среди положительных целых чисел, по умолчанию log-scaled в диапазоне [100,10000].

Установка параметров, не используемых по умолчанию, путем передачи вектора optimizableVariable объекты, не имеющие значений по умолчанию. Например:

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

Проход params как значение 'OptimizeHyperparameters'.

По умолчанию итеративное отображение отображается в командной строке, а графики отображаются в соответствии с количеством гиперпараметров в оптимизации. Для оптимизации и графиков целевой функцией является log ( 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Логическое значение, указывающее, выполнять ли байесовскую оптимизацию параллельно, что требует Toolbox™ параллельных вычислений. Из-за непродуктивности параллельной синхронизации параллельная байесовская оптимизация не обязательно дает воспроизводимые результаты. Дополнительные сведения см. в разделе Параллельная байесовская оптимизация.false
Repartition

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

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

false
Используйте не более одного из следующих трех имен полей.
CVPartitionA cvpartition объект, созданный 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 не поддерживает стандартизацию.

Подробнее

свернуть все

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

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

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

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

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

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

T (x) = m 1/2exp (iZx ')',

где Z∈ℝm×p - выборка, взятая из N (0, λ − 2), а start2 - шкала ядра. Эта схема требует O (mp) вычислений и хранения. Схема Фастфуда вводит другой случайный базис V вместо Z с использованием матриц Адамара, объединенных с гауссовыми матрицами масштабирования. Этот случайный базис уменьшает вычислительные затраты до O (mlogр) и уменьшает объем хранения до O (м ).

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

Ограничение рамки

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

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

Алгоритмы

fitckernel минимизирует регуляризованную целевую функцию, используя решатель с ограниченной памятью Бройдена-Флетчера-Гольдфарба-Шанно (LBFGS) с регуляризацией гребня (L2). Чтобы найти тип решателя 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] Ле, К., Т. Сарлос и А. Смола. «Fastfood - аппроксимация расширений ядра в логлинеарное время». Материалы 30-й Международной конференции по машинному обучению. т. 28, № 3, 2013, стр. 244-252.

[3] Хуан, П. С., Х. Аврон, Т. Н. Сайнатх, В. Синдхвани и Б. Рамабхадран. «Kernel methods match Deep Neural Networks on TIMIT». Международная конференция IEEE 2014 по акустике, речи и обработке сигналов. 2014, стр 205–209.

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

Представлен в R2017b