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: [75x1 double]
                     Bias: 57.3800
         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: {'Sex'  'Length'  'Diameter'  'Height'  'Whole_weight'  'Shucked_weight'  'Viscera_weight'  'Shell_weight'}
             ResponseName: 'Rings'
    CategoricalPredictors: 1
        ResponseTransform: 'none'
                    Alpha: [3635×1 double]
                     Bias: 10.8144
         KernelParameters: [1×1 struct]
                       Mu: [0 0 0 0.5240 0.4079 0.1395 0.8287 0.3594 0.1806 0.2388]
                    Sigma: [1 1 1 0.1201 0.0992 0.0418 0.4904 0.2220 0.1096 0.1392]
          NumObservations: 4177
           BoxConstraints: [4177×1 double]
          ConvergenceInfo: [1×1 struct]
          IsSupportVector: [4177×1 logical]
                   Solver: 'SMO'


  Properties, Methods

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

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

conv = Mdl.ConvergenceInfo.Converged
conv = logical
   1

iter = Mdl.NumIterations
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 = 
  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 = 
  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 array
    {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.7333

Модель регрессии 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   |      7.0963 |      9.9571 |      7.0963 |      7.0963 |      0.35664 |     0.043031 |      0.30396 |
|    2 | Best   |      2.9121 |    0.084207 |      2.9121 |       3.143 |        70.67 |       710.65 |       1.6369 |
|    3 | Accept |      4.1884 |    0.075243 |      2.9121 |      3.1342 |       14.367 |    0.0059144 |       442.64 |
|    4 | Accept |       4.159 |    0.066276 |      2.9121 |       3.094 |    0.0030879 |       715.31 |       2.6045 |
|    5 | Best   |      2.9027 |     0.17259 |      2.9027 |       2.902 |       969.07 |        703.1 |      0.88614 |
|    6 | Accept |      4.1884 |    0.062124 |      2.9027 |      2.9023 |       993.93 |       919.26 |        22.16 |
|    7 | Accept |      2.9321 |    0.085496 |      2.9027 |      2.9024 |       221.61 |       597.23 |      0.01544 |
|    8 | Best   |      2.8565 |     0.32951 |      2.8565 |      2.8567 |       940.66 |       350.46 |       5.2391 |
|    9 | Accept |      4.1884 |    0.058539 |      2.8565 |      2.8567 |       514.19 |       510.29 |        144.8 |
|   10 | Accept |      2.9223 |    0.098411 |      2.8565 |       2.857 |       59.312 |       292.15 |      0.23617 |
|   11 | Accept |      2.9033 |    0.084697 |      2.8565 |      2.8076 |       134.08 |       482.82 |      0.49579 |
|   12 | Accept |      2.8628 |      7.2644 |      2.8565 |      2.8571 |       999.43 |       74.813 |       3.6074 |
|   13 | Accept |      2.9711 |       9.225 |      2.8565 |      2.8571 |       852.78 |       61.881 |    0.0094102 |
|   14 | Accept |      3.0558 |     0.11132 |      2.8565 |      2.8571 |     0.015133 |       151.91 |    0.0093408 |
|   15 | Accept |      2.8967 |      2.2742 |      2.8565 |      2.8574 |       989.37 |        201.6 |       1.6303 |
|   16 | Accept |      4.1884 |    0.095343 |      2.8565 |      2.7627 |       964.51 |       33.063 |       62.075 |
|   17 | Accept |      2.9391 |      4.4476 |      2.8565 |      2.8572 |       993.07 |       109.86 |      0.15743 |
|   18 | Accept |      2.9392 |     0.13956 |      2.8565 |      2.8599 |       912.86 |       982.05 |     0.091154 |
|   19 | Accept |      2.9355 |     0.13414 |      2.8565 |      2.8583 |       1.1277 |       38.309 |      0.11837 |
|   20 | Accept |      2.9084 |     0.14014 |      2.8565 |      2.8167 |       3.9293 |       93.526 |       1.2654 |
|====================================================================================================================|
| Iter | Eval   | Objective:  | Objective   | BestSoFar   | BestSoFar   | BoxConstraint|  KernelScale |      Epsilon |
|      | result | log(1+loss) | runtime     | (observed)  | (estim.)    |              |              |              |
|====================================================================================================================|
|   21 | Accept |      2.9307 |    0.098149 |      2.8565 |      2.7894 |    0.0010707 |       22.011 |    0.0093013 |
|   22 | Accept |      4.5677 |      12.201 |      2.8565 |      2.8319 |       971.48 |       11.938 |    0.0095335 |
|   23 | Accept |      3.0589 |    0.062691 |      2.8565 |      2.8517 |    0.0012016 |       47.771 |    0.0098008 |
|   24 | Accept |      2.9353 |     0.18844 |      2.8565 |      2.8377 |       19.318 |       130.86 |    0.0095351 |
|   25 | Accept |      2.9386 |    0.095852 |      2.8565 |      2.8378 |    0.0010304 |       28.096 |      0.27674 |
|   26 | Accept |      4.1884 |    0.093678 |      2.8565 |      2.8411 |    0.0018407 |    0.0010115 |       755.91 |
|   27 | Accept |      2.9259 |      0.4583 |      2.8565 |      2.8572 |       992.81 |       462.69 |      0.49596 |
|   28 | Accept |      2.9209 |     0.11718 |      2.8565 |      2.8573 |       252.51 |       155.02 |       7.1346 |
|   29 | Accept |      3.6378 |    0.094272 |      2.8565 |      2.8573 |     0.073707 |       987.63 |    0.0096397 |
|   30 | Accept |      2.9167 |    0.094065 |      2.8565 |      2.8573 |    0.0010818 |       17.831 |     0.066532 |

Figure contains an axes object. The axes object 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: 63.1029 seconds
Total objective function evaluation time: 48.4094

Best observed feasible point:
    BoxConstraint    KernelScale    Epsilon
    _____________    ___________    _______

       940.66          350.46       5.2391 

Observed objective function value = 2.8565
Estimated objective function value = 2.8573
Function evaluation time = 0.32951

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

       940.66          350.46       5.2391 

Estimated objective function value = 2.8573
Estimated function evaluation time = 0.32966
Mdl = 
  RegressionSVM
                         ResponseName: 'Y'
                CategoricalPredictors: []
                    ResponseTransform: 'none'
                                Alpha: [19x1 double]
                                 Bias: 49.4606
                     KernelParameters: [1x1 struct]
                      NumObservations: 93
    HyperparameterOptimizationResults: [1x1 BayesianOptimization]
                       BoxConstraints: [93x1 double]
                      ConvergenceInfo: [1x1 struct]
                      IsSupportVector: [93x1 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 функция. Если имена переменных не допустимы, то можно преобразовать их при помощи matlab.lang.makeValidName функция.

Типы данных: 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 имя аргумента и 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', q задавать полиномиальное ядро порядка q.

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 (Optimization Toolbox), чтобы реализовать 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

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

свернуть все

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

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

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

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

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

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

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

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

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

Пример: '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 выбрать который переменные предикторы использовать в обучении. Таким образом, fitrsvm использование только переменные предикторы в 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' и вектор из числовых значений. Размер Weights должен равняться количеству строк в X. fitrsvm нормирует значения Weights суммировать к 1.

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

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

свернуть все

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Чтобы создать перекрестную подтвержденную модель, можно задать только одни из этих четырех аргументов name-value: 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' замените любые значения, вы задаете использование других аргументов name-value. Например, установка 'OptimizeHyperparameters' к 'auto' причины fitrsvm оптимизировать гиперпараметры, соответствующие '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 + потеря перекрестной проверки). Чтобы управлять итеративным отображением, установите Verbose поле 'HyperparameterOptimizationOptions' аргумент значения имени. Чтобы управлять графиками, установите ShowPlots поле 'HyperparameterOptimizationOptions' аргумент значения имени.

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

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

Опции для оптимизации в виде структуры. Этот аргумент изменяет эффект 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'), затем это поле также строит лучшее предполагаемое значение целевой функции. Лучшие наблюдаемые значения целевой функции и лучше всего оцененные значения целевой функции соответствуют значениям в BestSoFar (observed) и BestSoFar (estim.) столбцы итеративного отображения, соответственно. Можно найти эти значения в свойствах ObjectiveMinimumTrace и EstimatedObjectiveMinimumTrace из Mdl.HyperparameterOptimizationResults. Если проблема включает один или два параметра оптимизации для Байесовой оптимизации, то 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. "Расширяя и Тестируя Каскадной Корреляции в сравнении с эталоном: Расширения Архитектуры Каскадной Корреляции и Сравнительное тестирование Feedforward Контролируемые Искусственные Нейронные сети". Университет тезиса Факультета информатики Тасмании, 1995.

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

Введенный в R2015b