fitrsvm

Подбирайте модель регрессии машины опорных векторов

Описание

fitrsvm обучает или перекрестный подтверждает модель регрессии машины опорных векторов (SVM) на минимуме - через умеренно-размерный набор данных предиктора. fitrsvm поддержки, сопоставляющие данные о предикторе с помощью функций ядра и поддержек SMO, ISDA или L 1 мягко-граничная минимизация через квадратичное программирование для минимизации целевой функции.

Чтобы обучить линейную модель регрессии SVM на высоко-размерном наборе данных, то есть, наборы данных, которые включают много переменных предикторов, используют fitrlinear вместо этого.

Чтобы обучить модель SVM бинарной классификации, смотрите fitcsvm для низкого - через умеренно-размерные наборы данных предиктора или fitclinear для высоко-размерных наборов данных.

пример

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

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

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

Mdl = fitrsvm(X,Y) возвращается полная, обученная модель регрессии SVM обучила использование значений предикторов в матричном X и значения ответа в векторном Y.

пример

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

Примеры

свернуть все

Обучите модель регрессии машины опорных векторов (SVM) использование выборочных данных, сохраненных в матрицах.

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

load carsmall
rng 'default'  % For reproducibility

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

X = [Horsepower,Weight];
Y = MPG;

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

Mdl = fitrsvm(X,Y)
Mdl = 
  RegressionSVM
             ResponseName: 'Y'
    CategoricalPredictors: []
        ResponseTransform: 'none'
                    Alpha: [76x1 double]
                     Bias: 43.1920
         KernelParameters: [1x1 struct]
          NumObservations: 93
           BoxConstraints: [93x1 double]
          ConvergenceInfo: [1x1 struct]
          IsSupportVector: [93x1 logical]
                   Solver: 'SMO'


  Properties, Methods

Mdl обученный RegressionSVM модель.

Проверяйте модель на сходимость.

Mdl.ConvergenceInfo.Converged
ans = logical
   0

0 указывает, что модель не сходилась.

Переобучите модель с помощью стандартизированных данных.

MdlStd = fitrsvm(X,Y,'Standardize',true)
MdlStd = 
  RegressionSVM
             ResponseName: 'Y'
    CategoricalPredictors: []
        ResponseTransform: 'none'
                    Alpha: [77x1 double]
                     Bias: 22.9131
         KernelParameters: [1x1 struct]
                       Mu: [109.3441 2.9625e+03]
                    Sigma: [45.3545 805.9668]
          NumObservations: 93
           BoxConstraints: [93x1 double]
          ConvergenceInfo: [1x1 struct]
          IsSupportVector: [93x1 logical]
                   Solver: 'SMO'


  Properties, Methods

Проверяйте модель на сходимость.

MdlStd.ConvergenceInfo.Converged
ans = logical
   1

1 указывает, что модель действительно сходилась.

Вычислите перезамену среднеквадратическая ошибка (в выборке) для новой модели.

lStd = resubLoss(MdlStd)
lStd = 17.0256

Обучите модель регрессии машины опорных векторов использование данных о морском ушке из Репозитория Машинного обучения UCI.

Загрузите данные и сохраните их в вашей текущей папке с именем 'abalone.csv'.

url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/abalone/abalone.data';
websave('abalone.csv',url);

Считайте данные в таблицу. Задайте имена переменных.

varnames = {'Sex'; 'Length'; 'Diameter'; 'Height'; 'Whole_weight';...
    'Shucked_weight'; 'Viscera_weight'; 'Shell_weight'; 'Rings'};
Tbl = readtable('abalone.csv','Filetype','text','ReadVariableNames',false);
Tbl.Properties.VariableNames = varnames;

Выборочные данные содержат 4 177 наблюдений. Все переменные предикторы непрерывны за исключением Sex, который является категориальной переменной с возможными значениями 'M' (для штекеров), 'F' (для розеток), и 'I' (для младенцев). Цель состоит в том, чтобы предсказать количество звонков (сохраненный в Rings) на морском ушке и определяют его возраст с помощью физических измерений.

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

rng default  % For reproducibility
Mdl = fitrsvm(Tbl,'Rings','KernelFunction','gaussian','KernelScale','auto',...
    'Standardize',true)
Mdl = 

  RegressionSVM
           PredictorNames: {1×8 cell}
             ResponseName: 'Rings'
    CategoricalPredictors: 1
        ResponseTransform: 'none'
                    Alpha: [3635×1 double]
                     Bias: 10.8144
         KernelParameters: [1×1 struct]
                       Mu: [1×10 double]
                    Sigma: [1×10 double]
          NumObservations: 4177
           BoxConstraints: [4177×1 double]
          ConvergenceInfo: [1×1 struct]
          IsSupportVector: [4177×1 logical]
                   Solver: 'SMO'


Командное окно показывает тот Mdl обученный RegressionSVM модель и отображения список свойств.

Отобразите свойства Mdl использование записи через точку. Например, проверяйте, чтобы подтвердить, сходилась ли модель и сколько итераций она завершилась.

conv = Mdl.ConvergenceInfo.Converged
iter = Mdl.NumIterations
conv =

  logical

   1


iter =

        2759

Возвращенные результаты показывают, что модель сходилась после 2 759 итераций.

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

load carsmall
rng 'default'  % For reproducibility

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

X = [Horsepower Weight];
Y = MPG;

Перекрестный подтвердите две модели регрессии SVM с помощью 5-кратной перекрестной проверки. Для обеих моделей задайте, чтобы стандартизировать предикторы. Для одной из моделей задайте, чтобы обучить использование линейного ядра по умолчанию и Гауссова ядра для другой модели.

MdlLin = fitrsvm(X,Y,'Standardize',true,'KFold',5)
MdlLin = 
  classreg.learning.partition.RegressionPartitionedSVM
    CrossValidatedModel: 'SVM'
         PredictorNames: {'x1'  'x2'}
           ResponseName: 'Y'
        NumObservations: 94
                  KFold: 5
              Partition: [1x1 cvpartition]
      ResponseTransform: 'none'


  Properties, Methods

MdlGau = fitrsvm(X,Y,'Standardize',true,'KFold',5,'KernelFunction','gaussian')
MdlGau = 
  classreg.learning.partition.RegressionPartitionedSVM
    CrossValidatedModel: 'SVM'
         PredictorNames: {'x1'  'x2'}
           ResponseName: 'Y'
        NumObservations: 94
                  KFold: 5
              Partition: [1x1 cvpartition]
      ResponseTransform: 'none'


  Properties, Methods

MdlLin.Trained
ans=5×1 cell
    {1x1 classreg.learning.regr.CompactRegressionSVM}
    {1x1 classreg.learning.regr.CompactRegressionSVM}
    {1x1 classreg.learning.regr.CompactRegressionSVM}
    {1x1 classreg.learning.regr.CompactRegressionSVM}
    {1x1 classreg.learning.regr.CompactRegressionSVM}

MdlLin и MdlGau RegressionPartitionedSVM перекрестные подтвержденные модели. Trained свойство каждой модели является массивом ячеек 5 на 1 CompactRegressionSVM модели. Модели в ячейке хранят результаты обучения на 4 сгибах наблюдений и пропуска одного сгиба наблюдений.

Сравните ошибку обобщения моделей. В этом случае ошибка обобщения является среднеквадратической ошибкой из выборки.

mseLin = kfoldLoss(MdlLin)
mseLin = 17.4417
mseGau = kfoldLoss(MdlGau)
mseGau = 16.7397

Модель регрессии SVM использование Гауссова ядра выполняет лучше, чем то с помощью линейного ядра.

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

MdlGau = fitrsvm(X,Y,'Standardize',true,'KernelFunction','gaussian');

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

В этом примере показано, как оптимизировать гиперпараметры автоматически с помощью fitrsvm. Пример использует carsmall данные.

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

load carsmall

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

X = [Horsepower Weight];
Y = MPG;

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

Для воспроизводимости, набор случайный seed и использование 'expected-improvement-plus' функция приобретения.

rng default
Mdl = fitrsvm(X,Y,'OptimizeHyperparameters','auto',...
    'HyperparameterOptimizationOptions',struct('AcquisitionFunctionName',...
    'expected-improvement-plus'))

|====================================================================================================================|
| Iter | Eval   | Objective:  | Objective   | BestSoFar   | BestSoFar   | BoxConstraint|  KernelScale |      Epsilon |
|      | result | log(1+loss) | runtime     | (observed)  | (estim.)    |              |              |              |
|====================================================================================================================|
|    1 | Best   |      6.1124 |      10.727 |      6.1124 |      6.1124 |      0.35664 |     0.043031 |      0.30396 |
|    2 | Best   |      2.9114 |    0.081241 |      2.9114 |       3.088 |        70.67 |       710.65 |       1.6369 |
|    3 | Accept |      4.1884 |    0.062996 |      2.9114 |       3.078 |       14.367 |    0.0059144 |       442.64 |
|    4 | Accept |       4.159 |    0.059691 |      2.9114 |      3.0457 |    0.0030879 |       715.31 |       2.6045 |
|    5 | Best   |      2.9044 |     0.21473 |      2.9044 |      2.9042 |       906.95 |       761.46 |       1.3274 |
|    6 | Best   |      2.8666 |       0.494 |      2.8666 |      2.8668 |        997.3 |       317.41 |       3.7696 |
|    7 | Accept |      4.1881 |    0.046231 |      2.8666 |      2.8669 |       759.56 |       987.74 |       15.074 |
|    8 | Accept |      2.8992 |      2.5175 |      2.8666 |      2.8669 |       819.07 |       152.11 |       1.5192 |
|    9 | Accept |      2.8916 |     0.15154 |      2.8666 |      2.8672 |       921.52 |       627.48 |       2.3029 |
|   10 | Accept |      2.9001 |     0.28924 |      2.8666 |      2.8676 |       382.91 |       343.04 |       1.5448 |
|   11 | Accept |      3.6573 |      9.8445 |      2.8666 |      2.8784 |        945.1 |        8.885 |       3.9207 |
|   12 | Accept |      2.9381 |     0.13287 |      2.8666 |       2.871 |       935.49 |       979.29 |       0.1384 |
|   13 | Accept |      2.9341 |    0.048236 |      2.8666 |      2.8719 |        1.992 |       999.49 |      0.21557 |
|   14 | Accept |      2.9227 |    0.061377 |      2.8666 |      2.8742 |        2.351 |       977.85 |     0.026124 |
|   15 | Accept |      2.9483 |     0.13459 |      2.8666 |      2.8751 |       826.92 |       713.57 |    0.0096305 |
|   16 | Accept |      2.9502 |      1.1896 |      2.8666 |      2.8813 |       345.64 |        129.6 |     0.027832 |
|   17 | Accept |      2.9329 |     0.10496 |      2.8666 |      2.8799 |       836.96 |       970.73 |     0.034398 |
|   18 | Accept |      2.9177 |    0.068845 |      2.8666 |      2.8771 |      0.10167 |       129.91 |    0.0092675 |
|   19 | Accept |        2.95 |      2.5322 |      2.8666 |      2.8749 |       199.85 |        68.93 |    0.0092982 |
|   20 | Accept |      4.1964 |    0.070247 |      2.8666 |      2.8685 |    0.0012054 |       940.94 |    0.0097673 |
|====================================================================================================================|
| Iter | Eval   | Objective:  | Objective   | BestSoFar   | BestSoFar   | BoxConstraint|  KernelScale |      Epsilon |
|      | result | log(1+loss) | runtime     | (observed)  | (estim.)    |              |              |              |
|====================================================================================================================|
|   21 | Accept |       2.905 |    0.079709 |      2.8666 |      2.8675 |       5.9475 |       199.82 |     0.013585 |
|   22 | Accept |      2.9329 |    0.096708 |      2.8666 |      2.8747 |      0.33221 |       21.509 |    0.0094248 |
|   23 | Accept |      2.9017 |    0.049333 |      2.8666 |      2.8689 |       13.341 |       554.39 |     0.069216 |
|   24 | Accept |      2.9067 |    0.049191 |      2.8666 |      2.8694 |      0.21467 |       73.415 |     0.028231 |
|   25 | Accept |      2.9046 |    0.056755 |      2.8666 |      2.8731 |      0.68546 |       61.287 |    0.0099165 |
|   26 | Accept |      2.9138 |     0.04743 |      2.8666 |      2.8676 |    0.0012185 |       8.8743 |    0.0093263 |
|   27 | Accept |      2.9193 |    0.048818 |      2.8666 |      2.8731 |    0.0099434 |       30.484 |    0.0093546 |
|   28 | Accept |      8.5384 |      10.252 |      2.8666 |      2.8683 |       992.36 |       1.4043 |    0.0093129 |
|   29 | Accept |      3.2254 |    0.046193 |      2.8666 |      2.8682 |    0.0010092 |       16.917 |       7.3665 |
|   30 | Accept |      4.1884 |    0.046135 |      2.8666 |      2.8683 |       983.95 |       42.654 |       287.19 |

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

Best observed feasible point:
    BoxConstraint    KernelScale    Epsilon
    _____________    ___________    _______

        997.3          317.41       3.7696 

Observed objective function value = 2.8666
Estimated objective function value = 2.8683
Function evaluation time = 0.494

Best estimated feasible point (according to models):
    BoxConstraint    KernelScale    Epsilon
    _____________    ___________    _______

        997.3          317.41       3.7696 

Estimated objective function value = 2.8683
Estimated function evaluation time = 0.44767
Mdl = 
  RegressionSVM
                         ResponseName: 'Y'
                CategoricalPredictors: []
                    ResponseTransform: 'none'
                                Alpha: [35×1 double]
                                 Bias: 48.8155
                     KernelParameters: [1×1 struct]
                      NumObservations: 93
    HyperparameterOptimizationResults: [1×1 BayesianOptimization]
                       BoxConstraints: [93×1 double]
                      ConvergenceInfo: [1×1 struct]
                      IsSupportVector: [93×1 logical]
                               Solver: 'SMO'


  Properties, Methods

Оптимизация ищется по BoxConstraint, KernelScale, и Epsilon. Выход является регрессией с минимальной предполагаемой потерей перекрестной проверки.

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

свернуть все

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

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

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

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

Если строка Tbl или элемент Y содержит по крайней мере один NaN, затем fitrsvm удаляет те строки и элементы от обоих аргументов когда обучение модель.

Задавать имена предикторов в порядке их внешнего вида в Tbl, используйте PredictorNames аргумент пары "имя-значение".

Типы данных: 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 функция. Следующий код возвращает логический 1 TRUE) для каждой переменной, которая имеет допустимое имя переменной.

cellfun(@isvarname,Tbl.Properties.VariableNames)
Если имена переменных в Tbl не допустимы, затем преобразуют их при помощи matlab.lang.makeValidName функция.
Tbl.Properties.VariableNames = matlab.lang.makeValidName(Tbl.Properties.VariableNames);

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

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

Если строка Tbl или X, или элемент Y, содержит по крайней мере один NaN, затем fitrsvm удаляет те строки и элементы от обоих аргументов когда обучение модель.

Чтобы задать имя переменной отклика, используйте ResponseName аргумент пары "имя-значение".

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

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

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

Если строка X или элемент Y содержит по крайней мере один NaN, затем fitrsvm удаляет те строки и элементы от обоих аргументов.

Задавать имена предикторов в порядке их внешнего вида в X, используйте PredictorNames аргумент пары "имя-значение".

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

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

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'KernelFunction','gaussian','Standardize',true,'CrossVal','on' обучает 10-кратную перекрестную подтвержденную модель регрессии SVM использование Гауссова ядра и стандартизированных обучающих данных.

Примечание

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

Опции машины опорных векторов

свернуть все

Ограничение поля для альфа-коэффициентов, заданных как разделенная запятой пара, состоящая из 'BoxConstraint' и значение положительной скалярной величины.

Абсолютное значение Alpha коэффициенты не могут превысить значение BoxConstraint.

BoxConstraint по умолчанию значение для 'gaussian' или 'rbf' функцией ядра является iqr(Y)/1.349, где iqr(Y) межквартильный размах переменной отклика Y. Для всех других ядер, BoxConstraint по умолчанию значение равняется 1.

Пример: BoxConstraint,10

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

Функция ядра использовалась для расчета матрицы Грамма, заданной как разделенная запятой пара, состоящая из 'KernelFunction' и значение в этой таблице.

ЗначениеОписаниеФормула
'gaussian' или 'rbf'Ядро гауссовой или Радиальной основной функции (RBF)

G(xj,xk)=exp(xjxk2)

'linear'Линейное ядро

G(xj,xk)=xjxk

'polynomial'Полиномиальное ядро. Используйте 'PolynomialOrder', p задавать полиномиальное ядро порядка p.

G(xj,xk)=(1+xjxk)q

Можно установить собственную функцию ядра, например, kernel, установкой 'KernelFunction','kernel'. kernel должен иметь следующую форму:

function G = kernel(U,V)
где:

  • U m-by-p матрица.

  • V n-by-p матрица.

  • G m-by-n матрица Грамма строк U и V.

И kernel.m должен быть на пути MATLAB.

Это - хорошая практика, чтобы избегать использования родовых названий для функций ядра. Например, вызовите сигмоидальную функцию ядра 'mysigmoid' вместо 'sigmoid'.

Пример: 'KernelFunction','gaussian'

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

Масштабный коэффициент ядра, заданный как разделенная запятой пара, состоящая из 'KernelScale' и 'auto' или положительная скалярная величина. Программное обеспечение делит все элементы матрицы предиктора X значением KernelScale. Затем программное обеспечение применяет соответствующую норму ядра, чтобы вычислить матрицу Грамма.

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

  • Если вы задаете KernelScale и ваша собственная функция ядра, например, 'KernelFunction','kernel', затем программное обеспечение выдает ошибку. Необходимо применить масштабирование в kernel.

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

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

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

Если вы устанавливаете 'PolynomialOrder' и KernelFunction не 'polynomial', затем программное обеспечение выдает ошибку.

Пример: 'PolynomialOrder',2

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

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

Программное обеспечение добавляет KernelOffset к каждому элементу матрицы Грамма.

Значения по умолчанию:

  • 0 если решатель является SMO (то есть, вы устанавливаете 'Solver','SMO')

  • 0.1 если решатель является ISDA (то есть, вы устанавливаете 'Solver','ISDA')

Пример: 'KernelOffset',0

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

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

Epsilon по умолчанию значением является iqr(Y)/13.49, который является оценкой одной десятой стандартного отклонения с помощью межквартильного размаха переменной отклика Y. Если iqr(Y) равен нулю, затем Epsilon по умолчанию значение 0.1.

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

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

Отметьте, чтобы стандартизировать данные о предикторе, заданные как разделенная запятой пара, состоящая из 'Standardize' и true(1 ) или false(0) .

Если вы устанавливаете 'Standardize',true:

  • Центры программного обеспечения и шкалы каждый столбец данных о предикторе (X) взвешенным столбцом среднее и стандартное отклонение, соответственно (для получения дополнительной информации о взвешенной стандартизации, см. Алгоритмы). MATLAB не стандартизирует данные, содержавшиеся в фиктивных переменных столбцах, сгенерированных для категориальных предикторов.

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

Пример: 'Standardize',true

Типы данных: логический

Стандартная программа оптимизации, заданная как разделенная запятой пара, состоящая из 'Solver' и значение в этой таблице.

ЗначениеОписание
'ISDA'Итеративный один алгоритм данных (см. [30]),
'L1QP'Использование quadprog реализовывать L 1 мягко-граничная минимизация квадратичным программированием. Эта опция требует лицензии Optimization Toolbox™. Для получения дополнительной информации см. Определение Квадратичного программирования (Optimization Toolbox).
'SMO'Последовательная минимальная оптимизация (см. [17]),

Значения по умолчанию:

  • 'ISDA' если вы устанавливаете 'OutlierFraction' к положительному значению

  • 'SMO' в противном случае

Пример: 'Solver','ISDA'

Первоначальные оценки альфа-коэффициентов, заданных как разделенная запятой пара, состоящая из 'Alpha' и числовой вектор. Длина Alpha должно быть равно количеству строк X.

  • Каждый элемент Alpha соответствует наблюдению в X.

  • Alpha не может содержать NaNs.

  • Если вы задаете Alpha и любой из аргументов пары "имя-значение" перекрестной проверки ('CrossVal', 'CVPartition', 'Holdout', 'KFold', или 'Leaveout'), затем программное обеспечение возвращает ошибку.

Если Y содержит любые отсутствующие значения, затем удалите все строки YX, и Alpha это соответствует отсутствующим значениям. Таким образом, войдите:

idx = ~isnan(Y);
Y = Y(idx);
X = X(idx,:);
alpha = alpha(idx);
Затем передача YX, и alpha как ответ, предикторы и начальные альфа-оценки, соответственно.

Значением по умолчанию является zeros(size(Y,1)).

Пример: 'Alpha',0.1*ones(size(X,1),1)

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

Размер кэша, заданный как разделенная запятой пара, состоящая из 'CacheSize' и 'maximal' или положительная скалярная величина.

Если CacheSize 'maximal', затем программное обеспечение резервирует достаточно памяти, чтобы содержать целый n-by-n матрица Грамма.

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

Пример: 'CacheSize','maximal'

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

Отметьте, чтобы отсечь альфа-коэффициенты, заданные как разделенная запятой пара, состоящая из 'ClipAlphas' и любой true или false.

Предположим, что альфа-коэффициентом для наблюдения, j является αj и ограничение поля наблюдения j, является Cj, j = 1..., n, где n является учебным объемом выборки.

ЗначениеОписание
trueВ каждой итерации, если αj близок 0 или около Cj, то MATLAB устанавливает αj на 0 или на Cj, соответственно.
falseMATLAB не изменяет альфа-коэффициенты во время оптимизации.

MATLAB хранит окончательные значения α в Alpha свойство обученного объекта модели SVM.

ClipAlphas может влиять на SMO и сходимость ISDA.

Пример: 'ClipAlphas',false

Типы данных: логический

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

Если вы задаете 'Verbose',1 и 'NumPrint',numprint, затем программное обеспечение отображает все сообщения диагностики оптимизации от SMO и ISDA каждый numprint итерации в Командном окне.

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

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

Ожидаемая пропорция выбросов в обучающих данных, заданных как разделенная запятой пара, состоящая из 'OutlierFraction' и числовой скаляр в интервале [0,1). fitrsvm удаляет наблюдения с большими градиентами, гарантируя тот fitrsvm удаляет часть наблюдений, заданных OutlierFraction ко времени достигнута сходимость. Эта пара "имя-значение" только допустима когда 'Solver' 'ISDA'.

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

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

Отметьте, чтобы заменить дублирующиеся наблюдения на одно наблюдения в обучающих данных, заданных как разделенная запятой пара, состоящая из 'RemoveDuplicates' и true или false.

Если RemoveDuplicates true, затем fitrsvm замены копируют наблюдения в обучающих данных с одним наблюдением за тем же значением. Вес одного наблюдения равен сумме весов соответствующих удаленных копий (см. Weights).

Совет

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

Типы данных: логический

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

Эта таблица суммирует доступные опции уровня многословия.

ЗначениеОписание
0Программное обеспечение не отображает или сохраняет информацию сходимости.
1Программное обеспечение отображает диагностические сообщения и сохраняет критерии сходимости каждый numprint итерации, где numprint значение аргумента пары "имя-значение" 'NumPrint'.
2Программное обеспечение отображает диагностические сообщения и сохраняет критерии сходимости в каждой итерации.

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

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

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

свернуть все

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

ЗначениеОписание
Вектор положительных целых чиселКаждая запись в векторе является значением индекса, соответствующим столбцу данных о предикторе (X или Tbl) это содержит категориальную переменную.
Логический векторtrue запись означает что соответствующий столбец данных о предикторе (X или Tbl) категориальная переменная.
Символьная матрицаКаждая строка матрицы является именем переменного предиктора. Имена должны совпадать с записями в PredictorNames. Заполните имена дополнительными пробелами, таким образом, каждая строка символьной матрицы имеет ту же длину.
Массив строк или массив ячеек из символьных векторовКаждый элемент в массиве является именем переменного предиктора. Имена должны совпадать с записями в PredictorNames.
всеВсе предикторы являются категориальными.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

свернуть все

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

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

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

В качестве альтернативы можно перекрестный подтвердить модель позже использование crossval метод.

Пример: '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- 1 вектор ячейки в Trained свойство перекрестной подтвержденной модели.

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

Пример: 'KFold',5

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

Флаг перекрестной проверки "Пропускает один", заданный как разделенная запятой пара, состоящая из 'Leaveout' и 'on' или 'off'. Если вы задаете 'Leaveout','on', затем, для каждого из наблюдений n (где n является количеством наблюдений, исключая недостающие наблюдения, заданные в NumObservations свойство модели), программное обеспечение завершает эти шаги:

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

  2. Сохраните n компактные, обученные модели в ячейках n-by-1 вектор ячейки в Trained свойство перекрестной подтвержденной модели.

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

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

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

свернуть все

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

Пример: 'DeltaGradientTolerance',1e-4

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

Допуск разрыва выполнимости получен SMO или ISDA, заданным как разделенная запятой пара, состоящая из 'GapTolerance' и неотрицательный скаляр.

Если GapTolerance 0, затем fitrsvm не использует этот параметр, чтобы проверять сходимость.

Пример: 'GapTolerance',1e-4

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

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

Программное обеспечение возвращает обученную модель независимо от того, сходится ли стандартная программа оптимизации успешно. Mdl.ConvergenceInfo содержит информацию о сходимости.

Пример: 'IterationLimit',1e8

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

Допуск к нарушению Karush-Kuhn-Tucker (KKT), заданному как разделенная запятой пара, состоящая из 'KKTTolerance' и неотрицательное скалярное значение.

Эта пара "имя-значение" применяется только если 'Solver' 'SMO' или 'ISDA'.

Если KKTTolerance 0, затем fitrsvm не использует этот параметр, чтобы проверять сходимость.

Пример: 'KKTTolerance',1e-4

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

Количество итераций между сокращениями активного набора, заданного как разделенная запятой пара, состоящая из 'ShrinkagePeriod' и неотрицательное целое число.

Если вы устанавливаете 'ShrinkagePeriod',0, затем программное обеспечение не уменьшает активный набор.

Пример: 'ShrinkagePeriod',1000

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

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

свернуть все

Параметры, чтобы оптимизировать, заданный как разделенная запятой пара, состоящая из 'OptimizeHyperparameters' и одно из следующего:

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

  • 'auto' — Используйте {'BoxConstraint','KernelScale','Epsilon'}.

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

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

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

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

Примечание

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

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

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

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

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

  • KernelFunctionfitrsvm поисковые запросы среди 'gaussian', 'linear', и 'polynomial'.

  • PolynomialOrderfitrsvm поисковые запросы среди целых чисел в области значений [2,4].

  • Standardizefitrsvm поисковые запросы среди 'true' и 'false'.

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

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

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

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

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

Пример: '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

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

свернуть все

Обученная модель регрессии SVM, возвращенная как RegressionSVM модель или RegressionPartitionedSVM перекрестная подтвержденная модель.

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

Ограничения

fitrsvm поддержки низко - через умеренно-размерные наборы данных. Для высоко-размерного набора данных используйте fitrlinear вместо этого.

Советы

  • Если ваш набор данных не является большим, всегда пытайтесь стандартизировать предикторы (см. Standardize). Стандартизация делает предикторы нечувствительными к шкалам, по которым они измеряются.

  • Это - хорошая практика, чтобы перекрестный подтвердить использование KFold аргумент пары "имя-значение". Результаты перекрестной проверки определяют, как хорошо модель SVM делает вывод.

  • Разреженность в векторах поддержки является желательным свойством модели SVM. Чтобы сократить число векторов поддержки, установите BoxConstraint аргумент пары "имя-значение" большому значению. Это действие также увеличивает учебное время.

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

  • Если вы ожидаете много меньше векторов поддержки, чем наблюдения в наборе обучающих данных, то можно значительно ускорить сходимость путем уменьшения активного набора с помощью аргумента пары "имя-значение" 'ShrinkagePeriod'. Это - хорошая практика, чтобы использовать 'ShrinkagePeriod',1000.

  • Дублирующиеся наблюдения, которые далеки от линии регрессии, не влияют на сходимость. Однако всего несколько дублирующихся наблюдений, которые происходят около линии регрессии, могут значительно замедлить сходимость. Чтобы ускорить сходимость, задайте 'RemoveDuplicates',true если:

    • Ваш набор данных содержит много дублирующихся наблюдений.

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

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

  • После обучения модель можно сгенерировать код C/C++, который предсказывает ответы для новых данных. Генерация кода C/C++ требует MATLAB Coder™. Для получения дополнительной информации смотрите Введение в Генерацию кода.

Алгоритмы

  • Для математической формулировки линейных и нелинейных проблем регрессии SVM и алгоритмов решателя, смотрите Регрессию Машины опорных векторов Понимания.

  • NaN, <undefined>, пустой символьный вектор (''), пустая строка (""), и <missing> значения указывают на недостающие значения данных. fitrsvm удаляет целые строки данных, соответствующих недостающему ответу. При нормализации весов, fitrsvm игнорирует любой вес, соответствующий наблюдению по крайней мере с одним недостающим предиктором. Следовательно, ограничения поля наблюдения не могут равняться BoxConstraint.

  • fitrsvm удаляет наблюдения, которые имеют нулевой вес.

  • Если вы устанавливаете 'Standardize',true и 'Weights', затем fitrsvm стандартизирует предикторы с помощью их соответствующих взвешенных средних и взвешенных стандартных отклонений. Таким образом, fitrsvm стандартизирует предиктор j (xj) использование

    xj=xjμjσj.

    • μj=1kwkkwkxjk.

    • xjk является наблюдением k (строка) предиктора j (столбец).

    • (σj)2=v1v12v2kwk(xjkμj)2.

    • v1=jwj.

    • v2=j(wj)2.

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

    • PredictorNames свойство хранит один элемент для каждого из исходных имен переменного предиктора. Например, примите, что существует три предиктора, один из которых является категориальной переменной с тремя уровнями. Затем PredictorNames 1 3 массив ячеек из символьных векторов, содержащий настоящие имена переменных предикторов.

    • ExpandedPredictorNames свойство хранит один элемент для каждого из переменных предикторов, включая фиктивные переменные. Например, примите, что существует три предиктора, один из которых является категориальной переменной с тремя уровнями. Затем ExpandedPredictorNames массив ячеек из символьных векторов 1 на 5, содержащий имена переменных предикторов и новых фиктивных переменных.

    • Точно так же Beta свойство хранит один бета коэффициент для каждого предиктора, включая фиктивные переменные.

    • SupportVectors свойство хранит значения предиктора для векторов поддержки, включая фиктивные переменные. Например, примите, что существуют векторы поддержки m и три предиктора, один из которых является категориальной переменной с тремя уровнями. Затем SupportVectors m-by-5 матрица.

    • X свойство хранит обучающие данные, как первоначально введено. Это не включает фиктивные переменные. Когда вход является таблицей, X содержит только столбцы, используемые в качестве предикторов.

  • Для предикторов, заданных в таблице, если какая-либо из переменных содержит упорядоченные (порядковые) категории, программное обеспечение использует порядковое кодирование в этих переменных.

    • Для переменной, заказывая k уровни, программное обеспечение создает k – 1 фиктивная переменная. j th фиктивная переменная-1 для уровней до j, и +1 для уровней j + 1 через k.

    • Имена фиктивных переменных сохранены в ExpandedPredictorNames свойство указывает на первый уровень со значением +1. Программное обеспечение хранит k – 1 дополнительное имя предиктора для фиктивных переменных, включая имена уровней 2, 3..., k.

  • Все решатели реализуют L 1 мягко-граничная минимизация.

  • Позвольте p будьте пропорцией выбросов, которые вы ожидаете в обучающих данных. Если вы устанавливаете 'OutlierFraction',p, затем программное обеспечение реализует robust learning. Другими словами, программное обеспечение пытается удалить 100p% из наблюдений, когда алгоритм оптимизации сходится. Удаленные наблюдения соответствуют градиентам, которые являются большими в величине.

Ссылки

[1] Кларк, D., З. Шретер, А. Адамс. Количественное Сравнение Dystal и Backpropagation, представленного австралийской Конференции по Нейронным сетям, 1996.

[2] Вентилятор, R.-E., P.-H. Чен и C.-J. Лин. “Выбор рабочего набора с помощью информации о втором порядке в учебных машинах опорных векторов”. Журнал Исследования Машинного обучения, Vol 6, 2005, стр 1889–1918.

[3] Кекмен V, T.-M. Хуан и М. Вогт. “Итеративный Один Алгоритм Данных для Учебных Машин Ядра от Огромных Наборов данных: Теория и Производительность”. В Машинах опорных векторов: Теория и Приложения. Отредактированный Липо Ваном, 255–274. Берлин: Springer-Verlag, 2005.

[4] Личмен, M. Репозиторий Машинного обучения UCI, [http://archive.ics.uci.edu/ml]. Ирвин, CA: Калифорнийский университет, Школа Информатики и вычислительной техники.

[5] Нэш, W.J., Т. Л. Селлерс, С. Р. Тэлбот, А. Дж. Которн и В. Б. Форд. Биология Населения Морского ушка (разновидности Haliotis) на Тасмании. I. Морское ушко Blacklip (H. rubra) от Северного Побережья и Островов Пролива Басса, Морского Деления Рыболовства, Технического отчета № 48, 1994.

[6] Во, S. Расширяя и Каскадная Корреляция сравнительного тестирования, кандидатская диссертация, Кафедра информатики, Университет Тасмании, 1995.

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

Введенный в R2015b