exponenta event banner

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.

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

mapreducer(0)

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

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);

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

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

Проверьте потерю перекрестной проверки (средняя квадратичная ошибка) для каждого раза.

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' аргументы пары имя-значение. Для воспроизводимости задайте случайное начальное число и используйте '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-за-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' поскольку ограничение (С) и сила члена регуляризации (λ) связаны С = 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 [y f (x)] 2
'svm'Поддержка векторной машинной регрессииТо же, что и 'leastsquares'Эпсилон-нечувствительный: ℓ[y,f (x)] = max [0, | y f (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 в многомерное пространство. Дополнительные сведения см. в разделах Управление глобальным потоком с помощью RandStream и Создание и управление потоком случайных чисел.

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

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

свернуть все

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

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

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

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

Пример: Предположим, что вы создаете случайный раздел для пятикратной перекрестной проверки 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

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

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

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

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

свернуть все

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

Если задать какой-либо из аргументов пары имя-значение 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) на значения, не превышающие эпсилонный запас (start) после отображения данных предиктора в высокомерное пространство.

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

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

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

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

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

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

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

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

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

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

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

Алгоритмы

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

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

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

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