fitrkernel

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

Описание

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

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

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

пример

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

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

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

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

пример

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

пример

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

пример

[Mdl,FitInfo,HyperparameterOptimizationResults] = fitrkernel(___) также возвращает результаты оптимизации гипероптимизации параметров управления, когда вы оптимизируете гиперпараметры с помощью 'OptimizeHyperparameters' аргумент пары "имя-значение".

Примеры

свернуть все

Обучите регрессионую модель ядра для длинный массив с помощью SVM.

При выполнении вычислений на длинные массивы MATLAB ® использует либо параллельный пул (по умолчанию, если у вас есть Parallel Computing Toolbox™), либо локальный сеанс работы с MATLAB. Чтобы запустить пример с использованием локального сеанса работы с MATLAB, когда у вас есть Parallel Computing Toolbox, измените глобальное окружение выполнения с помощью mapreducer функция.

mapreducer(0)

Создайте datastore, которое ссылается на расположение папки с данными. Данные могут содержаться в одном файле, наборе файлов или целой папке. Лечите 'NA' значения как отсутствующие данные, так что datastore заменяет их на NaN значения. Выберите подмножество переменных для использования. Составьте длинная таблица в верхней части datastore.

varnames = {'ArrTime','DepTime','ActualElapsedTime'};
ds = datastore('airlinesmall.csv','TreatAsMissing','NA',...
    'SelectedVariableNames',varnames);
t = tall(ds);

Задайте DepTime и ArrTime как переменные предиктора (X) и ActualElapsedTime как переменная отклика (Y). Выберите наблюдения, для которых ArrTime позже DepTime.

daytime = t.ArrTime>t.DepTime;
Y = t.ActualElapsedTime(daytime);     % Response data
X = t{daytime,{'DepTime' 'ArrTime'}}; % Predictor data

Стандартизируйте переменные предиктора.

Z = zscore(X); % Standardize the data

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

[Mdl,FitInfo] = fitrkernel(Z,Y)
Found 6 chunks.
|=========================================================================
| Solver | Iteration  /  |   Objective   |   Gradient    | Beta relative |
|        | Data Pass     |               |   magnitude   |    change     |
|=========================================================================
|   INIT |     0 /     1 |  4.307833e+01 |  4.345788e-02 |           NaN |
|  LBFGS |     0 /     2 |  3.705713e+01 |  1.577301e-02 |  9.988252e-01 |
|  LBFGS |     1 /     3 |  3.704022e+01 |  3.082836e-02 |  1.338410e-03 |
|  LBFGS |     2 /     4 |  3.701398e+01 |  3.006488e-02 |  1.116070e-03 |
|  LBFGS |     2 /     5 |  3.698797e+01 |  2.870642e-02 |  2.234599e-03 |
|  LBFGS |     2 /     6 |  3.693687e+01 |  2.625581e-02 |  4.479069e-03 |
|  LBFGS |     2 /     7 |  3.683757e+01 |  2.239620e-02 |  8.997877e-03 |
|  LBFGS |     2 /     8 |  3.665038e+01 |  1.782358e-02 |  1.815682e-02 |
|  LBFGS |     3 /     9 |  3.473411e+01 |  4.074480e-02 |  1.778166e-01 |
|  LBFGS |     4 /    10 |  3.684246e+01 |  1.608942e-01 |  3.294968e-01 |
|  LBFGS |     4 /    11 |  3.441595e+01 |  8.587703e-02 |  1.420892e-01 |
|  LBFGS |     5 /    12 |  3.377755e+01 |  3.760006e-02 |  4.640134e-02 |
|  LBFGS |     6 /    13 |  3.357732e+01 |  1.912644e-02 |  3.842057e-02 |
|  LBFGS |     7 /    14 |  3.334081e+01 |  3.046709e-02 |  6.211243e-02 |
|  LBFGS |     8 /    15 |  3.309239e+01 |  3.858085e-02 |  6.411356e-02 |
|  LBFGS |     9 /    16 |  3.276577e+01 |  3.612292e-02 |  6.938579e-02 |
|  LBFGS |    10 /    17 |  3.234029e+01 |  2.734959e-02 |  1.144307e-01 |
|  LBFGS |    11 /    18 |  3.205763e+01 |  2.545990e-02 |  7.323180e-02 |
|  LBFGS |    12 /    19 |  3.183341e+01 |  2.472411e-02 |  3.689625e-02 |
|  LBFGS |    13 /    20 |  3.169307e+01 |  2.064613e-02 |  2.998555e-02 |
|=========================================================================
| Solver | Iteration  /  |   Objective   |   Gradient    | Beta relative |
|        | Data Pass     |               |   magnitude   |    change     |
|=========================================================================
|  LBFGS |    14 /    21 |  3.146896e+01 |  1.788395e-02 |  5.967293e-02 |
|  LBFGS |    15 /    22 |  3.118171e+01 |  1.660696e-02 |  1.124062e-01 |
|  LBFGS |    16 /    23 |  3.106224e+01 |  1.506147e-02 |  7.947037e-02 |
|  LBFGS |    17 /    24 |  3.098395e+01 |  1.564561e-02 |  2.678370e-02 |
|  LBFGS |    18 /    25 |  3.096029e+01 |  4.464104e-02 |  4.547148e-02 |
|  LBFGS |    19 /    26 |  3.085475e+01 |  1.442800e-02 |  1.677268e-02 |
|  LBFGS |    20 /    27 |  3.078140e+01 |  1.906548e-02 |  2.275185e-02 |
|========================================================================|
Mdl = 
  RegressionKernel
            PredictorNames: {'x1'  'x2'}
              ResponseName: 'Y'
                   Learner: 'svm'
    NumExpansionDimensions: 64
               KernelScale: 1
                    Lambda: 8.5385e-06
             BoxConstraint: 1
                   Epsilon: 5.9303


  Properties, Methods

FitInfo = struct with fields:
                  Solver: 'LBFGS-tall'
            LossFunction: 'epsiloninsensitive'
                  Lambda: 8.5385e-06
           BetaTolerance: 1.0000e-03
       GradientTolerance: 1.0000e-05
          ObjectiveValue: 30.7814
       GradientMagnitude: 0.0191
    RelativeChangeInBeta: 0.0228
                 FitTime: 56.8110
                 History: [1x1 struct]

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

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

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

Загрузите carbig набор данных.

load carbig

Задайте переменные предиктора (X) и переменной отклика (Y).

X = [Acceleration,Cylinders,Displacement,Horsepower,Weight];
Y = MPG;

Удалите строки X и Y где любой массив имеет NaN значения. Удаление строк с NaN значения перед передачей данных в fitrkernel может ускорить обучение и уменьшить использование памяти.

R = rmmissing([X Y]); % Data with missing entries removed
X = R(:,1:5); 
Y = R(:,end); 

Стандартизируйте переменные предиктора.

Z = zscore(X);

Перекрестная валидация регрессионной модели ядра с помощью 5-кратной перекрестной валидации.

Mdl = fitrkernel(Z,Y,'Kfold',5)
Mdl = 
  RegressionPartitionedKernel
    CrossValidatedModel: 'Kernel'
           ResponseName: 'Y'
        NumObservations: 392
                  KFold: 5
              Partition: [1x1 cvpartition]
      ResponseTransform: 'none'


  Properties, Methods

numel(Mdl.Trained)
ans = 5

Mdl является RegressionPartitionedKernel модель. Потому что fitrkernel реализует пятикратную перекрестную валидацию, Mdl содержит пять RegressionKernel модели, которые программное обеспечение обучает по обучающим-складным (in-fold) наблюдениям.

Исследуйте потери перекрестной валидации (средняя квадратичная невязка) для каждой складки.

kfoldLoss(Mdl,'mode','individual')
ans = 5×1

   13.0610
   14.0975
   24.0104
   21.1223
   24.3979

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

Загрузите carbig набор данных.

load carbig

Задайте переменные предиктора (X) и переменной отклика (Y).

X = [Acceleration,Cylinders,Displacement,Horsepower,Weight];
Y = MPG;

Удалите строки X и Y где любой массив имеет NaN значения. Удаление строк с NaN значения перед передачей данных в fitrkernel может ускорить обучение и уменьшить использование памяти.

R = rmmissing([X Y]); % Data with missing entries removed
X = R(:,1:5); 
Y = R(:,end); 

Стандартизируйте переменные предиктора.

Z = zscore(X);

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

rng('default')
[Mdl,FitInfo,HyperparameterOptimizationResults] = fitrkernel(Z,Y,'OptimizeHyperparameters','auto',...
    'HyperparameterOptimizationOptions',struct('AcquisitionFunctionName','expected-improvement-plus'))
|====================================================================================================================|
| Iter | Eval   | Objective:  | Objective   | BestSoFar   | BestSoFar   |  KernelScale |       Lambda |      Epsilon |
|      | result | log(1+loss) | runtime     | (observed)  | (estim.)    |              |              |              |
|====================================================================================================================|
|    1 | Best   |      4.8295 |      6.7644 |      4.8295 |      4.8295 |     0.011518 |   6.8068e-05 |      0.95918 |
|    2 | Best   |      4.1488 |     0.41379 |      4.1488 |      4.1855 |       477.57 |     0.066115 |     0.091828 |
|    3 | Accept |      4.1521 |     0.22316 |      4.1488 |      4.1747 |    0.0080478 |    0.0052867 |       520.84 |
|    4 | Accept |      4.1506 |     0.24382 |      4.1488 |      4.1488 |      0.10935 |      0.35931 |     0.013372 |
|    5 | Best   |      4.1446 |     0.57425 |      4.1446 |      4.1446 |       326.29 |       2.5457 |      0.22475 |
|    6 | Accept |      4.1521 |     0.24056 |      4.1446 |      4.1447 |       719.11 |      0.19478 |       881.84 |
|    7 | Accept |      4.1501 |     0.36784 |      4.1446 |      4.1461 |     0.052426 |       2.5402 |     0.051319 |
|    8 | Accept |      4.1521 |     0.22448 |      4.1446 |      4.1447 |       990.71 |     0.014203 |       702.34 |
|    9 | Accept |      4.1521 |     0.23926 |      4.1446 |      4.1465 |       415.85 |     0.054602 |       81.005 |
|   10 | Accept |      4.1454 |     0.25366 |      4.1446 |      4.1455 |       972.49 |       1.1601 |       1.8715 |
|   11 | Accept |      4.1495 |     0.29478 |      4.1446 |      4.1473 |       121.79 |       1.4077 |     0.061055 |
|   12 | Accept |      4.1521 |     0.16042 |      4.1446 |      4.1474 |       985.81 |      0.83297 |       213.45 |
|   13 | Best   |      4.1374 |     0.30021 |      4.1374 |      4.1441 |       167.34 |       2.5497 |       4.8997 |
|   14 | Accept |      4.1434 |     0.24781 |      4.1374 |      4.1437 |       74.527 |         2.55 |       6.1044 |
|   15 | Accept |      4.1402 |     0.28729 |      4.1374 |      4.1407 |       877.17 |       2.5391 |       2.2888 |
|   16 | Accept |      4.1436 |     0.93646 |      4.1374 |      4.1412 |    0.0010354 |     0.017613 |      0.11811 |
|   17 | Best   |      4.1346 |      1.0133 |      4.1346 |      4.1375 |    0.0010362 |     0.010401 |       8.9719 |
|   18 | Accept |      4.1521 |     0.22251 |      4.1346 |      4.1422 |    0.0010467 |    0.0094817 |       563.96 |
|   19 | Accept |      4.1508 |     0.29329 |      4.1346 |      4.1367 |       760.12 |    0.0079557 |     0.009087 |
|   20 | Accept |      4.1435 |      1.0817 |      4.1346 |       4.143 |     0.020647 |    0.0089063 |       2.3699 |
|====================================================================================================================|
| Iter | Eval   | Objective:  | Objective   | BestSoFar   | BestSoFar   |  KernelScale |       Lambda |      Epsilon |
|      | result | log(1+loss) | runtime     | (observed)  | (estim.)    |              |              |              |
|====================================================================================================================|
|   21 | Best   |      3.7172 |     0.57616 |      3.7172 |      3.7174 |       818.08 |   2.5529e-06 |       2.1058 |
|   22 | Accept |      4.1521 |     0.22403 |      3.7172 |      3.7177 |     0.006272 |   2.5598e-06 |       93.063 |
|   23 | Accept |      4.0567 |     0.31628 |      3.7172 |      3.7176 |       940.43 |   2.6941e-06 |      0.12016 |
|   24 | Best   |      2.8979 |      2.6062 |      2.8979 |      2.8979 |       37.141 |   2.5677e-06 |         2.71 |
|   25 | Accept |      4.1521 |     0.19873 |      2.8979 |       2.898 |       13.817 |   2.5755e-06 |       863.91 |
|   26 | Best   |       2.795 |      5.1108 |       2.795 |      2.7953 |       20.022 |   2.6098e-06 |       1.6561 |
|   27 | Accept |      2.8284 |      3.3885 |       2.795 |      2.7956 |       17.252 |   2.7719e-06 |      0.82777 |
|   28 | Best   |      2.7896 |      2.2461 |      2.7896 |      2.7898 |       11.432 |    7.621e-06 |        2.094 |
|   29 | Accept |      2.8191 |      7.4885 |      2.7896 |      2.7899 |       8.5133 |   2.5872e-06 |       2.0567 |
|   30 | Accept |      2.8061 |      3.7809 |      2.7896 |      2.7968 |       15.823 |   6.1956e-06 |       2.0085 |

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.

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

Best observed feasible point:
    KernelScale     Lambda      Epsilon
    ___________    _________    _______

      11.432       7.621e-06     2.094 

Observed objective function value = 2.7896
Estimated objective function value = 2.7984
Function evaluation time = 2.2461

Best estimated feasible point (according to models):
    KernelScale      Lambda      Epsilon
    ___________    __________    _______

      15.823       6.1956e-06    2.0085 

Estimated objective function value = 2.7968
Estimated function evaluation time = 3.4579
Mdl = 
  RegressionKernel
              ResponseName: 'Y'
                   Learner: 'svm'
    NumExpansionDimensions: 256
               KernelScale: 15.8229
                    Lambda: 6.1956e-06
             BoxConstraint: 411.7488
                   Epsilon: 2.0085


  Properties, Methods

FitInfo = struct with fields:
                  Solver: 'LBFGS-fast'
            LossFunction: 'epsiloninsensitive'
                  Lambda: 6.1956e-06
           BetaTolerance: 1.0000e-04
       GradientTolerance: 1.0000e-06
          ObjectiveValue: 1.3582
       GradientMagnitude: 0.0051
    RelativeChangeInBeta: 5.3944e-05
                 FitTime: 1.1977
                 History: []

HyperparameterOptimizationResults = 
  BayesianOptimization with properties:

                      ObjectiveFcn: @createObjFcn/inMemoryObjFcn
              VariableDescriptions: [5x1 optimizableVariable]
                           Options: [1x1 struct]
                      MinObjective: 2.7896
                   XAtMinObjective: [1x3 table]
             MinEstimatedObjective: 2.7968
          XAtMinEstimatedObjective: [1x3 table]
           NumObjectiveEvaluations: 30
                  TotalElapsedTime: 66.8666
                         NextPoint: [1x3 table]
                            XTrace: [30x3 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

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

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

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

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

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

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

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

Имя переменной отклика, заданное как имя переменной в Tbl. Переменная отклика должна быть числовым вектором.

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

Типы данных: 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 = fitrkernel(X,Y,'Learner','leastsquares','NumExpansionDimensions',2^15,'KernelScale','auto') реализует регрессию методом наименьших квадратов после отображения данных предиктора в 2^15 размерное пространство с использованием расширения функций с параметром шкалы ядра, выбранным эвристической процедурой.

Примечание

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

Опции регрессии ядра

свернуть все

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

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

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

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

Половина ширины эпсилонно-нечувствительной полосы, заданная как разделенная разделенными запятой парами, состоящая из 'Epsilon' и 'auto' или неотрицательное скалярное значение.

Для 'auto', а fitrkernel функция определяет значение Epsilon как iqr(Y)/13.49, которая является оценкой десятой части стандартного отклонения с использованием межквартильной области значений переменной отклика Y. Если iqr(Y) равно нулю, тогда fitrkernel устанавливает значение Epsilon до 0,1.

'Epsilon' действительно только тогда, когда Learner является svm.

Пример: 'Epsilon',0.3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ЗначениеАлгоритмОбласть значений откликаФункция потерь
'leastsquares'Линейная регрессия через обыкновенные наименьшие квадратыy ∊ (- ∞, ∞)Средняя квадратичная невязка (MSE): [y,f(x)]=12[yf(x)]2
'svm'Машина опорных векторов регрессияТо же, что и 'leastsquares'Эпсилон-нечувствительный: [y,f(x)]=max[0,|yf(x)|ε]

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

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

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

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

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

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

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

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

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

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

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

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

Другие опции регрессии

свернуть все

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Пример: Предположим, что вы создаете указатель на функцию, который применяет экспоненциальное преобразование к вектору входа при помощи myfunction = @(y)exp(y). Затем можно задать преобразование отклика следующим 'ResponseTransform',myfunction.

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

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

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

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

fitrkernel Нормализует веса в сумме до 1.

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

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

свернуть все

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

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

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

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

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

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

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

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

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

свернуть все

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

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

  • 'auto' - Использовать {'KernelScale','Lambda','Epsilon'}.

  • 'all' - Оптимизируйте все подходящие параметры.

  • Массив ячеек с допустимыми именами параметров.

  • Вектор optimizableVariable объекты, как правило, выходные данные hyperparameters.

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

Примечание

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

Подходящие параметры для fitrkernel являются:

  • Epsilonfitrkernel поиск среди положительных значений, по умолчанию логарифмический в области значений [1e-3,1e2]*iqr(Y)/1.349.

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

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

  • Learnerfitrkernel поиск среди 'svm' и 'leastsquares'.

  • NumExpansionDimensionsfitrkernel поиск среди положительных целых чисел, по умолчанию логарифмический в области значений [100,10000].

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

load carsmall
params = hyperparameters('fitrkernel',[Horsepower,Weight],MPG);
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

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

свернуть все

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

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

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

Примечание

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

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

ОбластьОписание
Solver

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

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

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

Исследуйте информацию, предоставленную FitInfo оценить, является ли сходимость удовлетворительной.

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

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

Ограничения

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

  • fitrkernel не поддерживает стандартизацию.

Подробнее о

свернуть все

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

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

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

Некоторые регрессионные задачи не могут быть описаны адекватно с помощью линейной модели. В таких случаях получите нелинейную регрессионую модель путем замены точечного произведения 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). Схема Random Kitchen Sink [1] использует случайное преобразование

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

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

Можно задать значения для m и σ2, с использованием NumExpansionDimensions и KernelScale Аргументы пары "имя-значение" из fitrkernel, соответственно.

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

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

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

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

Алгоритмы

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

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

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

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

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

Когда fitrkernel не использует блочную стратегию, начальные оценки являются нулями. Если вы задаете 'Verbose',1, затем fitrkernel отображает диагностическую информацию для каждой итерации и хранит информацию в 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.

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

Введенный в R2018a