fitrkernel

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

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

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

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

Синтаксис

Mdl = fitrkernel(X,Y)
Mdl = fitrkernel(X,Y,Name,Value)
[Mdl,FitInfo] = fitrkernel(___)
[Mdl,FitInfo,HyperparameterOptimizationResults] = fitrkernel(___)

Описание

пример

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

пример

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

пример

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

пример

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

Примеры

свернуть все

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

Создайте 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.335200e+01 |  9.821993e-02 |           NaN |
|  LBFGS |     0 /     2 |  3.693870e+01 |  1.566041e-02 |  9.988238e-01 |
|  LBFGS |     1 /     3 |  3.692143e+01 |  3.030550e-02 |  1.352488e-03 |
|  LBFGS |     2 /     4 |  3.689521e+01 |  2.919252e-02 |  1.137336e-03 |
|  LBFGS |     2 /     5 |  3.686922e+01 |  2.801905e-02 |  2.277224e-03 |
|  LBFGS |     2 /     6 |  3.681793e+01 |  2.615365e-02 |  4.564688e-03 |
|  LBFGS |     2 /     7 |  3.671782e+01 |  2.276596e-02 |  9.170612e-03 |
|  LBFGS |     2 /     8 |  3.652813e+01 |  1.868733e-02 |  1.850839e-02 |
|  LBFGS |     3 /     9 |  3.442961e+01 |  3.260732e-02 |  2.030226e-01 |
|  LBFGS |     4 /    10 |  3.473328e+01 |  8.506865e-02 |  3.309396e-01 |
|  LBFGS |     4 /    11 |  3.378744e+01 |  5.473648e-02 |  1.428247e-01 |
|  LBFGS |     5 /    12 |  3.329728e+01 |  3.922448e-02 |  1.026073e-01 |
|  LBFGS |     6 /    13 |  3.309615e+01 |  1.551459e-02 |  6.118966e-02 |
|  LBFGS |     7 /    14 |  3.300400e+01 |  1.759430e-02 |  1.918912e-02 |
|  LBFGS |     8 /    15 |  3.277892e+01 |  3.155320e-02 |  4.781893e-02 |
|  LBFGS |     9 /    16 |  3.255352e+01 |  3.435953e-02 |  4.200697e-02 |
|  LBFGS |    10 /    17 |  3.207945e+01 |  6.192847e-02 |  2.161540e-01 |
|  LBFGS |    11 /    18 |  3.171391e+01 |  3.185452e-02 |  1.204747e-01 |
|  LBFGS |    12 /    19 |  3.155433e+01 |  1.183853e-02 |  5.837098e-02 |
|  LBFGS |    13 /    20 |  3.149625e+01 |  1.132499e-02 |  2.169556e-02 |
|=========================================================================
| Solver | Iteration  /  |   Objective   |   Gradient    | Beta relative |
|        | Data Pass     |               |   magnitude   |    change     |
|=========================================================================
|  LBFGS |    14 /    21 |  3.136724e+01 |  1.478355e-02 |  3.132871e-02 |
|  LBFGS |    15 /    22 |  3.115575e+01 |  1.461357e-02 |  7.221907e-02 |
|  LBFGS |    16 /    23 |  3.091292e+01 |  1.900119e-02 |  1.237602e-01 |
|  LBFGS |    17 /    24 |  3.076649e+01 |  3.469328e-02 |  1.664433e-01 |
|  LBFGS |    18 /    25 |  3.104221e+01 |  1.341798e-01 |  2.831585e-02 |
|  LBFGS |    18 /    26 |  3.076703e+01 |  4.929652e-02 |  1.414956e-02 |
|  LBFGS |    18 /    27 |  3.073332e+01 |  1.434614e-02 |  7.072158e-03 |
|  LBFGS |    19 /    28 |  3.067248e+01 |  9.931353e-03 |  2.438284e-02 |
|  LBFGS |    20 /    29 |  3.063153e+01 |  6.781994e-03 |  1.606731e-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.6315
       GradientMagnitude: 0.0068
    RelativeChangeInBeta: 0.0161
                 FitTime: 77.1910
                 History: [1×1 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 = 
  classreg.learning.partition.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, что train программного обеспечения на учебном сгибе (окутывает) наблюдения.

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

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 |             | runtime     | (observed)  | (estim.)    |              |              |              |
|====================================================================================================================|
|    1 | Best   |      4.8295 |      2.3442 |      4.8295 |      4.8295 |     0.011518 |   6.8068e-05 |      0.95918 |
|    2 | Best   |      4.1488 |     0.57185 |      4.1488 |      4.1855 |       477.57 |     0.066115 |     0.091828 |
|    3 | Accept |      4.1521 |      0.4081 |      4.1488 |      4.1747 |    0.0080478 |    0.0052867 |       520.84 |
|    4 | Accept |      4.1506 |     0.49121 |      4.1488 |      4.1488 |      0.10935 |      0.35931 |     0.013372 |
|    5 | Best   |      4.1446 |      0.4053 |      4.1446 |      4.1446 |       326.29 |       2.5457 |      0.22475 |
|    6 | Accept |      4.1521 |      0.1845 |      4.1446 |      4.1447 |       719.11 |      0.19478 |       881.84 |
|    7 | Accept |      4.1501 |     0.30776 |      4.1446 |      4.1461 |     0.052426 |       2.5402 |     0.051319 |
|    8 | Accept |      4.1521 |     0.23413 |      4.1446 |      4.1447 |       990.71 |     0.014203 |       702.34 |
|    9 | Accept |      4.1521 |     0.20633 |      4.1446 |      4.1465 |       415.85 |     0.054602 |       81.005 |
|   10 | Accept |      4.1454 |     0.56035 |      4.1446 |      4.1455 |       972.49 |       1.1601 |       1.8715 |
|   11 | Accept |      4.1495 |     0.22999 |      4.1446 |      4.1473 |       121.79 |       1.4077 |     0.061055 |
|   12 | Accept |      4.1521 |     0.22942 |      4.1446 |      4.1474 |       985.81 |      0.83297 |       213.45 |
|   13 | Best   |      4.1374 |     0.27198 |      4.1374 |      4.1441 |       167.34 |       2.5497 |       4.8997 |
|   14 | Accept |      4.1434 |     0.23137 |      4.1374 |      4.1437 |       74.527 |         2.55 |       6.1044 |
|   15 | Accept |      4.1402 |     0.24411 |      4.1374 |      4.1407 |       877.17 |       2.5391 |       2.2888 |
|   16 | Accept |      4.1436 |     0.34086 |      4.1374 |      4.1412 |    0.0010354 |     0.017613 |      0.11811 |
|   17 | Best   |      4.1346 |     0.27455 |      4.1346 |      4.1375 |    0.0010362 |     0.010401 |       8.9719 |
|   18 | Accept |      4.1521 |     0.20084 |      4.1346 |      4.1422 |    0.0010467 |    0.0094817 |       563.96 |
|   19 | Accept |      4.1508 |     0.19675 |      4.1346 |      4.1367 |       760.12 |    0.0079557 |     0.009087 |
|   20 | Accept |      4.1435 |     0.30499 |      4.1346 |       4.143 |     0.020647 |    0.0089063 |       2.3699 |
|====================================================================================================================|
| Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |  KernelScale |       Lambda |      Epsilon |
|      | result |             | runtime     | (observed)  | (estim.)    |              |              |              |
|====================================================================================================================|
|   21 | Best   |      3.7172 |      0.2729 |      3.7172 |      3.7174 |       818.08 |   2.5529e-06 |       2.1058 |
|   22 | Accept |      4.1521 |     0.19994 |      3.7172 |      3.7177 |     0.006272 |   2.5598e-06 |       93.063 |
|   23 | Accept |      4.0567 |      0.2359 |      3.7172 |      3.7176 |       940.43 |   2.6941e-06 |      0.12016 |
|   24 | Best   |      2.8979 |     0.60464 |      2.8979 |      2.8979 |       37.141 |   2.5677e-06 |         2.71 |
|   25 | Accept |      4.1521 |      0.1789 |      2.8979 |       2.898 |       13.817 |   2.5755e-06 |       863.91 |
|   26 | Best   |       2.795 |     0.55288 |       2.795 |      2.7953 |       20.022 |   2.6098e-06 |       1.6561 |
|   27 | Accept |      2.8284 |     0.79267 |       2.795 |      2.7956 |       17.252 |   2.7719e-06 |      0.82777 |
|   28 | Best   |      2.7896 |     0.77504 |      2.7896 |      2.7898 |       11.432 |    7.621e-06 |        2.094 |
|   29 | Accept |      2.8215 |      1.6247 |      2.7896 |      2.7899 |       8.5133 |   2.5872e-06 |       2.0567 |
|   30 | Accept |      2.8061 |     0.62049 |      2.7896 |      2.7966 |       15.823 |   6.1956e-06 |       2.0085 |

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

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.7966
Function evaluation time = 0.77504

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

      15.823       6.1956e-06    2.0085 

Estimated objective function value = 2.7966
Estimated function evaluation time = 0.73147
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: 0.0832
                 History: []

HyperparameterOptimizationResults = 
  BayesianOptimization with properties:

                      ObjectiveFcn: @createObjFcn/inMemoryObjFcn
              VariableDescriptions: [5x1 optimizableVariable]
                           Options: [1x1 struct]
                      MinObjective: 2.7896
                   XAtMinObjective: [1x3 table]
             MinEstimatedObjective: 2.7966
          XAtMinEstimatedObjective: [1x3 table]
           NumObjectiveEvaluations: 30
                  TotalElapsedTime: 44.2888
                         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 должны быть равными.

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

Примечание

fitrkernel удаляет недостающие наблюдения, то есть, наблюдения с любой из этих характеристик:

  • Элементы NaN в ответе (Y)

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

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

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (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 выбирает соответствующий масштабный коэффициент ядра с помощью эвристической процедуры. Эта эвристическая процедура использует подвыборку, таким образом, оценки могут отличаться от одного вызова до другого. Поэтому, чтобы воспроизвести результаты, установите seed случайных чисел при помощи 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 (MATLAB) и Создание и Управление Потоком Случайных чисел (MATLAB).

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

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

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

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

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

fitrkernel нормирует Weights, чтобы суммировать к 1.

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

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

свернуть все

Флаг перекрестной проверки, заданный как пара, разделенная запятой, состоящая из 'Crossval' и 'on' или 'off'.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  3. Сохраните k компактные, обученные модели в ячейках k-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=[βtbt], то есть, вектор коэффициентов и смещения называет в итерации оптимизации t. Если BtBt1Bt2<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'}.

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

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

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

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

Примечание

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

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

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

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

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

  • Learnerfitrkernel ищет среди 'svm' и 'leastsquares'.

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

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

load carsmall
params = hyperparameters('fitrkernel',[Horsepower,Weight],MPG);
params(2).Range = [1e-4,1e6];

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

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

Для примера смотрите, Оптимизируют Регрессию Ядра.

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

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

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

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

  • 'randomsearch' — Ищите наугад среди точек MaxObjectiveEvaluations.

'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
Используйте не больше, чем одни из следующих трех имен полей.
CVPartitionОбъект 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 не поддерживает опции стандартизации и перекрестной проверки.

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

Больше о

свернуть все

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

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

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

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

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

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

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

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

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

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

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

Ограничение поля

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

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

Алгоритмы

fitrkernel минимизирует упорядоченную целевую функцию с помощью решателя Лимитед-мемори Бройдена Флетчера Голдфарба Шэнно (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] Rahimi, A. и Б. Речт. “Случайные Функции Крупномасштабных Машин Ядра”. Усовершенствования в Нейронных Системах обработки информации. Издание 20, 2008, стр 1177–1184.

[2] Le, Q., Т. Сарлос и А. Смола. “Быстрое питание — Приближение Расширений Ядра в Логлинейное Время”. Продолжения 30-й Международной конференции по вопросам Машинного обучения. Издание 28, № 3, 2013, стр 244–252.

[3] Хуан, P. S. Х. Аврон, Т. Н. Сэйнэт, В. Синдхвани и Б. Рамабхэдрэн. “Методы ядра совпадают с Глубокими нейронными сетями на TIMIT”. 2 014 Международных конференций IEEE по вопросам Акустики, Речи и Обработки сигналов. 2014, стр 205–209.

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

Введенный в R2018a

Для просмотра документации необходимо авторизоваться на сайте