fitrsvm

Соответствуйте модели регрессии машины вектора поддержки

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

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

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

Синтаксис

Mdl = fitrsvm(Tbl,ResponseVarName)
Mdl = fitrsvm(Tbl,formula)
Mdl = fitrsvm(Tbl,Y)
Mdl = fitrsvm(X,Y)
Mdl = fitrsvm(___,Name,Value)

Описание

пример

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 = 5x1 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.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   | BoxConstrain-|  KernelScale |      Epsilon |
|      | result |             | runtime     | (observed)  | (estim.)    | t            |              |              |
|====================================================================================================================|
|    1 | Best   |      6.1124 |      10.779 |      6.1124 |      6.1124 |      0.35664 |     0.043031 |      0.30396 |
|    2 | Best   |      2.9114 |    0.092593 |      2.9114 |       3.088 |        70.67 |       710.65 |       1.6369 |
|    3 | Accept |      4.1884 |    0.051436 |      2.9114 |       3.078 |       14.367 |    0.0059144 |       442.64 |
|    4 | Accept |       4.159 |    0.048154 |      2.9114 |      3.0457 |    0.0030879 |       715.31 |       2.6045 |
|    5 | Best   |      2.9044 |     0.19816 |      2.9044 |      2.9042 |       906.95 |       761.46 |       1.3274 |
|    6 | Best   |      2.8666 |     0.50618 |      2.8666 |      2.8668 |        997.3 |       317.41 |       3.7696 |
|    7 | Accept |      4.1881 |    0.043931 |      2.8666 |      2.8669 |       759.56 |       987.74 |       15.074 |
|    8 | Accept |      2.8992 |      2.5317 |      2.8666 |      2.8669 |       819.07 |       152.11 |       1.5192 |
|    9 | Accept |      2.8916 |     0.16756 |      2.8666 |      2.8672 |       921.52 |       627.48 |       2.3029 |
|   10 | Accept |      2.9001 |     0.28733 |      2.8666 |      2.8676 |       382.91 |       343.04 |       1.5448 |
|   11 | Accept |      3.6573 |      10.023 |      2.8666 |      2.8784 |        945.1 |        8.885 |       3.9207 |
|   12 | Accept |      2.9381 |      0.1064 |      2.8666 |       2.871 |       935.49 |       979.29 |       0.1384 |
|   13 | Accept |      2.9341 |    0.043784 |      2.8666 |      2.8719 |        1.992 |       999.49 |      0.21557 |
|   14 | Accept |      2.9227 |    0.062812 |      2.8666 |      2.8742 |        2.351 |       977.85 |     0.026124 |
|   15 | Accept |      2.9483 |     0.13059 |      2.8666 |      2.8751 |       826.92 |       713.57 |    0.0096305 |
|   16 | Accept |      2.9502 |      1.1689 |      2.8666 |      2.8813 |       345.64 |        129.6 |     0.027832 |
|   17 | Accept |      2.9329 |      0.1059 |      2.8666 |      2.8799 |       836.96 |       970.73 |     0.034398 |
|   18 | Accept |      2.9177 |    0.047944 |      2.8666 |      2.8771 |      0.10167 |       129.91 |    0.0092675 |
|   19 | Accept |        2.95 |       2.513 |      2.8666 |      2.8749 |       199.85 |        68.93 |    0.0092982 |
|   20 | Accept |      4.1964 |     0.06516 |      2.8666 |      2.8685 |    0.0012054 |       940.94 |    0.0097673 |
|====================================================================================================================|
| Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   | BoxConstrain-|  KernelScale |      Epsilon |
|      | result |             | runtime     | (observed)  | (estim.)    | t            |              |              |
|====================================================================================================================|
|   21 | Accept |       2.905 |    0.051353 |      2.8666 |      2.8675 |       5.9475 |       199.82 |     0.013585 |
|   22 | Accept |      2.9329 |     0.10874 |      2.8666 |      2.8747 |      0.33221 |       21.509 |    0.0094248 |
|   23 | Accept |      2.9017 |    0.076283 |      2.8666 |      2.8689 |       13.341 |       554.39 |     0.069216 |
|   24 | Accept |      2.9067 |    0.067107 |      2.8666 |      2.8694 |      0.21467 |       73.415 |     0.028231 |
|   25 | Accept |      2.9046 |    0.052452 |      2.8666 |      2.8731 |      0.68546 |       61.287 |    0.0099165 |
|   26 | Accept |      2.9138 |    0.057869 |      2.8666 |      2.8676 |    0.0012185 |       8.8743 |    0.0093263 |
|   27 | Accept |      2.9193 |    0.059383 |      2.8666 |      2.8731 |    0.0099434 |       30.484 |    0.0093546 |
|   28 | Accept |      8.5384 |      10.335 |      2.8666 |      2.8683 |       992.36 |       1.4043 |    0.0093129 |
|   29 | Accept |      3.2254 |    0.048242 |      2.8666 |      2.8682 |    0.0010092 |       16.917 |       7.3665 |
|   30 | Accept |      4.1884 |     0.06625 |      2.8666 |      2.8683 |       983.95 |       42.654 |       287.19 |

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

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.50618

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.4589
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 представляет переменную отклика, и X1, X2, и X3 представляет переменные прогноза. Переменные должны быть именами переменных в Tbl (Tbl.Properties.VariableNames).

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

Типы данных: 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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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 не может содержать NaN s.

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

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

idx = ~isnan(Y);
Y = Y(idx);
X = X(idx,:);
alpha = alpha(idx);
Затем передача Y, X и 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'.

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

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

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

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

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

Примечание

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

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

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

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

  • \epsilon fitrsvm ищет среди положительных значений, по умолчанию масштабируемых журналом в области значений [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.

'gridsearch' ищет в произвольном порядке, с помощью универсальной выборки без замены от сетки. После оптимизации можно получить таблицу в порядке сетки при помощи команды sortrows(Mdl.HyperparameterOptimizationResults).

'bayesopt'
AcquisitionFunctionName

  • 'expected-improvement-per-second-plus'

  • 'expected-improvement'

  • 'expected-improvement-plus'

  • 'expected-improvement-per-second'

  • 'lower-confidence-bound'

  • 'probability-of-improvement'

Приобретение функционирует, чьи имена включают per-second, не приводят к восстанавливаемым результатам, потому что оптимизация зависит от времени выполнения целевой функции. Приобретение функционирует, чьи имена включают plus, изменяют их поведение, когда они сверхиспользуют область. Для получения дополнительной информации смотрите Типы Функции Приобретения.

'expected-improvement-per-second-plus'
MaxObjectiveEvaluationsМаксимальное количество оценок целевой функции.30 для 'bayesopt' или 'randomsearch' и целой сетки для 'gridsearch'
MaxTime

Ограничение по времени, заданное как положительное действительное. Ограничение по времени находится в секундах, как измерено tic и toc. Время выполнения может превысить MaxTime, потому что MaxTime не делает оценок функции обработки прерываний.

Inf
NumGridDivisionsДля 'gridsearch', количества значений в каждой размерности. Значение может быть вектором положительных целых чисел, дающих количество значений для каждой размерности или скаляр, который применяется ко всем размерностям. Это поле проигнорировано для категориальных переменных.10
ShowPlotsЛогическое значение, указывающее, показать ли графики. Если true, это поле строит лучшее значение целевой функции против номера итерации. Если существуют один или два параметра оптимизации, и если Optimizer является 'bayesopt', то ShowPlots также строит модель целевой функции против параметров.true
SaveIntermediateResultsЛогическое значение, указывающее, сохранить ли результаты, когда Optimizer является 'bayesopt'. Если true, это поле перезаписывает переменную рабочей области под названием 'BayesoptResults' в каждой итерации. Переменная является объектом BayesianOptimization.false
Verbose

Отобразитесь к командной строке.

  • 0 — Никакое итеративное отображение

  • 1 — Итеративное отображение

  • 2 — Итеративное отображение с дополнительной информацией

Для получения дополнительной информации смотрите аргумент пары "имя-значение" bayesopt Verbose.

1
UseParallelЛогическое значение, указывающее, запустить ли Байесовую оптимизацию параллельно, которая требует Parallel Computing Toolbox™. Для получения дополнительной информации смотрите Параллельную Байесовую Оптимизацию.false
Repartition

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

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

false
Используйте не больше, чем одни из следующих трех имен полей.
CVPartitionОбъект cvpartition, как создано cvpartition.'Kfold',5, если вы не задаете поля перекрестной проверки
HoldoutСкаляр в области значений (0,1), представляющий часть затяжки.
KfoldЦелое число, больше, чем 1.

Пример: 'HyperparameterOptimizationOptions',struct('MaxObjectiveEvaluations',60)

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

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

свернуть все

Обученная модель регрессии 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