fitrsvm

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

Описание

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

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

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

пример

Mdl = fitrsvm(Tbl,ResponseVarName) возвращает полную обученную регрессионую модель машины опорных векторов (SVM) Mdl обучен с использованием значений предикторов в таблице 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.3958
         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

Обучите модель регрессии машины опорных векторов, используя данные abalone из репозитория машинного обучения 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;

В выборочные данные содержится 4177 наблюдений. Все переменные предиктора непрерывны, кроме 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

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

Загрузите 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 перекрестно проверенные модели. The Trained свойство каждой модели является массивом ячеек 5 на 1 CompactRegressionSVM модели. Модели в камере хранят результаты обучения на 4 складках наблюдений и оставляют одну складку наблюдений.

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

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

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

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

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

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

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

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

load carsmall

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

X = [Horsepower Weight];
Y = MPG;

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

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

rng default
Mdl = fitrsvm(X,Y,'OptimizeHyperparameters','auto',...
    'HyperparameterOptimizationOptions',struct('AcquisitionFunctionName',...
    'expected-improvement-plus'))
|====================================================================================================================|
| Iter | Eval   | Objective:  | Objective   | BestSoFar   | BestSoFar   | BoxConstraint|  KernelScale |      Epsilon |
|      | result | log(1+loss) | runtime     | (observed)  | (estim.)    |              |              |              |
|====================================================================================================================|
|    1 | Best   |      6.8077 |      10.471 |      6.8077 |      6.8077 |      0.35664 |     0.043031 |      0.30396 |
|    2 | Best   |      2.9108 |    0.083136 |      2.9108 |      3.1259 |        70.67 |       710.65 |       1.6369 |
|    3 | Accept |      4.1884 |    0.083016 |      2.9108 |      3.1211 |       14.367 |    0.0059144 |       442.64 |
|    4 | Accept |       4.159 |    0.069749 |      2.9108 |      3.0773 |    0.0030879 |       715.31 |       2.6045 |
|    5 | Best   |       2.902 |     0.22042 |       2.902 |      2.9015 |       969.07 |        703.1 |      0.88614 |
|    6 | Accept |      4.1884 |    0.057606 |       2.902 |      2.9017 |       993.93 |       919.26 |        22.16 |
|    7 | Accept |      2.9307 |    0.084949 |       2.902 |      2.9018 |       219.88 |       613.28 |     0.015526 |
|    8 | Accept |      2.9537 |     0.33784 |       2.902 |      2.9017 |       905.17 |       395.74 |     0.021914 |
|    9 | Accept |      2.9073 |    0.061718 |       2.902 |      2.9017 |       24.242 |        647.2 |      0.17855 |
|   10 | Accept |      2.9044 |      0.2384 |       2.902 |      2.9017 |       117.27 |       173.98 |      0.73387 |
|   11 | Accept |      2.9035 |    0.062417 |       2.902 |      2.9016 |       1.3516 |       131.19 |    0.0093404 |
|   12 | Accept |      4.0917 |    0.054662 |       2.902 |       2.902 |     0.012201 |       962.58 |    0.0092777 |
|   13 | Accept |      2.9525 |     0.95828 |       2.902 |       2.902 |        77.38 |       65.508 |    0.0093299 |
|   14 | Accept |      2.9352 |    0.085972 |       2.902 |      2.9019 |       21.591 |       166.43 |     0.035214 |
|   15 | Accept |      2.9341 |     0.10187 |       2.902 |      2.9019 |       45.286 |       207.56 |     0.009379 |
|   16 | Accept |      2.9104 |    0.069236 |       2.902 |      2.9018 |     0.064315 |       23.313 |    0.0093341 |
|   17 | Accept |      2.9056 |     0.07306 |       2.902 |      2.9018 |      0.33909 |       40.311 |     0.053394 |
|   18 | Accept |      2.9335 |     0.12493 |       2.902 |      2.8999 |       0.9904 |       41.169 |    0.0099688 |
|   19 | Accept |      2.9885 |    0.062909 |       2.902 |      2.8994 |    0.0010647 |         32.9 |     0.013178 |
|   20 | Accept |      4.1884 |     0.06077 |       2.902 |         2.9 |    0.0014524 |       1.9514 |       856.49 |
|====================================================================================================================|
| Iter | Eval   | Objective:  | Objective   | BestSoFar   | BestSoFar   | BoxConstraint|  KernelScale |      Epsilon |
|      | result | log(1+loss) | runtime     | (observed)  | (estim.)    |              |              |              |
|====================================================================================================================|
|   21 | Accept |       2.904 |    0.083477 |       2.902 |      2.8835 |       88.487 |       405.92 |      0.44372 |
|   22 | Accept |      2.9107 |    0.075228 |       2.902 |      2.8848 |       344.34 |          992 |      0.28418 |
|   23 | Accept |       2.904 |    0.065833 |       2.902 |      2.8848 |      0.92028 |       70.985 |      0.52233 |
|   24 | Accept |      2.9145 |    0.058443 |       2.902 |      2.8822 |    0.0011412 |       18.159 |      0.16652 |
|   25 | Best   |      2.8909 |     0.17477 |      2.8909 |      2.8848 |       0.7614 |         17.3 |       1.9075 |
|   26 | Accept |      2.9188 |     0.10147 |      2.8909 |      2.8816 |      0.31049 |       18.301 |      0.35285 |
|   27 | Accept |      2.9327 |    0.074353 |      2.8909 |      2.8811 |     0.015362 |       20.395 |       1.6596 |
|   28 | Accept |       2.897 |     0.12567 |      2.8909 |      2.8811 |       3.3454 |       46.537 |        2.224 |
|   29 | Accept |      4.1884 |    0.064233 |      2.8909 |       2.881 |        983.2 |      0.52308 |       910.91 |
|   30 | Accept |      2.9167 |    0.085177 |      2.8909 |      2.8821 |    0.0011533 |       10.597 |     0.029731 |

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

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

Best observed feasible point:
    BoxConstraint    KernelScale    Epsilon
    _____________    ___________    _______

       0.7614           17.3        1.9075 

Observed objective function value = 2.8909
Estimated objective function value = 2.8957
Function evaluation time = 0.17477

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

       88.487          405.92       0.44372

Estimated objective function value = 2.8821
Estimated function evaluation time = 0.10546
Mdl = 
  RegressionSVM
                         ResponseName: 'Y'
                CategoricalPredictors: []
                    ResponseTransform: 'none'
                                Alpha: [86x1 double]
                                 Bias: 46.2480
                     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 представляет переменную отклика, и x1, x2, и x3 представляют переменные предиктора.

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

Имена переменных в формуле должны быть обоими именами переменных в Tbl (Tbl.Properties.VariableNames) и действительный MATLAB® идентификаторы. Можно проверить имена переменных в Tbl при помощи isvarname функция. Если имена переменных недопустимы, можно преобразовать их, используя matlab.lang.makeValidName функция.

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

свернуть все

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

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

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

Пример: BoxConstraint,10

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

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

  • Если вы задаете 'auto'затем программа выбирает соответствующий масштабный коэффициент с помощью эвристической процедуры. Эта эвристическая процедура использует субдискретизацию, поэтому оценки могут варьироваться от одного вызова к другому. Поэтому, чтобы воспроизвести результаты, установите начальное число случайных чисел используя 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

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

Стандартная программа оптимизации, заданная как разделенная разделенными запятой парами, состоящая из '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 не может содержать никаких NaNс.

  • Если вы задаете 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 Gram.

Если 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

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

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

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

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

В этой таблице представлены доступные опции уровня подробностей.

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

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

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

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

свернуть все

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

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

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

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

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

A 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. Объект раздела задает тип перекрестной валидации и индексацию для наборов обучения и валидации.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

свернуть все

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

свернуть все

Оптимизируемые параметры, заданные как разделенная разделенными запятой парами, состоящая из 'OptimizeHyperparameters' и одно из следующих:

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

  • 'auto' - Использовать {'BoxConstraint','KernelScale','Epsilon'}.

  • 'all' - Оптимизируйте все подходящие параметры.

  • Строковые массивы или массив ячеек с допустимыми именами параметров.

  • Вектор optimizableVariable объекты, как правило, выходные данные hyperparameters.

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

Примечание

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

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

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

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

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

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

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

  • Standardizefitrsvm поиск среди 'true' и 'false'.

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

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

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

По умолчанию итеративное отображение появляется в командной строке, и графики появляются согласно количеству гиперпараметров в оптимизации. Для оптимизации и графиков целевой функцией является журнал ( 1 + потери перекрестной валидации) для регрессии и коэффициент неправильной классификации для классификации. Чтобы управлять итеративным отображением, установите 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
Используйте не более одного из следующих трех имен полей.
CVPartitionA 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.

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

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

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

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

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

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

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

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

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

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

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

Ссылки

[1] Кларк, Д., З. Шретер, А. Адамс. «A Quantitative Comparison of Dystal and Backpropagation». представлено на Австралийской конференции по нейронным сетям, 1996.

[2] Вентилятор, R.-E., P.-H. Чен и К.-Ж. Lin. «Работа набора с использованием информации второго порядка для обучения машин опорных векторов». Journal of Машинного обучения Research, Vol 6, 2005, pp. 1889-1918.

[3] Кечман В., Т. -М. Хуан и М. Фогт. Итерационный алгоритм единичных данных для обучения машин ядра из огромных наборов данных: теория и эффективность. В машинах опорных векторов: теория и приложения. Под редакцией Липо Ван, 255-274. Берлин: Springer-Verlag, 2005.

[4] Лихман, M. UCI Machine Learning Repository, [http://archive.ics.uci.edu/ml]. Ирвин, Калифорнийский университет, Школа информации и компьютерных наук.

[5] Nash, W.J., T. L. Sellers, S. R. Talbot, A. J. Cawthorn, and W. B. Ford. "Популяционная биология Абалоне (виды Haliotis) в Тасмании. I. Blacklip Abalone (H. rubra) с Северного побережья и островов пролива Басс ". Деление морского рыболовства, технический доклад № 48, 1994 год.

[6] Waugh, S. «Extending and Benchmarking Cascade-Correlation: Extensions to the Cascade-Correlation Architecture and Benchmarking of Feed-Forward Supervied Neural Networds». Тасманийский университет, кафедра компьютерных наук, 1995 год.

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

Введенный в R2015b