fitrkernel

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

Описание

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

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

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

пример

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

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

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

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

пример

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

пример

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

пример

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

Примеры

свернуть все

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

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

mapreducer(0)

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

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

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

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

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

Z = zscore(X); % Standardize the data

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

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


  Properties, Methods

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

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

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

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

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

load carbig

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

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

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

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

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

Z = zscore(X);

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

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


  Properties, Methods

numel(Mdl.Trained)
ans = 5

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

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

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

   13.0610
   14.0975
   24.0104
   21.1223
   24.3979

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

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

load carbig

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

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

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

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

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

Z = zscore(X);

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

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

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

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

Best observed feasible point:
    KernelScale     Lambda      Epsilon
    ___________    _________    _______

      11.432       7.621e-06     2.094 

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

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

      15.823       6.1956e-06    2.0085 

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


  Properties, Methods

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

HyperparameterOptimizationResults = 
  BayesianOptimization with properties:

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

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

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

свернуть все

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

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

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

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

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

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

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

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

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

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

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

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

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

Объяснительная модель переменной отклика и подмножество переменных предикторов в виде вектора символов или строкового скаляра в форме 'Y~x1+x2+x3'. В этой форме, Y представляет переменную отклика и x1x2 , и 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 выбирает соответствующий масштабный коэффициент ядра с помощью эвристической процедуры. Эта эвристическая процедура использует подвыборку, таким образом, оценки могут варьироваться от одного вызова до другого. Поэтому, чтобы воспроизвести результаты, установите 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 Используя RandStream и Создание и Управление Потоком Случайных чисел.

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

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

свернуть все

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    • По умолчанию, PredictorNames {'x1','x2',...}.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

свернуть все

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  3. Сохраните k компактные, обученные модели в k- 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'}.

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

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

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

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

Примечание

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

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

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

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

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

  • Learnerfitrkernel поисковые запросы среди 'svm' и 'leastsquares'.

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

Установите параметры не по умолчанию путем передачи вектора из 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 'points'.

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

Больше о

свернуть все

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

Случайное расширение функции, такое как Случайные Раковины [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 logp), и уменьшает устройство хранения данных до 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