exponenta event banner

fitrlinear

Подгонка модели линейной регрессии к высокоразмерным данным

Описание

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

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

пример

Mdl = fitrlinear(X,Y) возвращает обучаемый объект регрессионной модели Mdl который содержит результаты подгонки модели опорной векторной машинной регрессии к предикторам X и реагирование Y.

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

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

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

пример

Mdl = fitrlinear(X,Y,Name,Value) указывает параметры, использующие один или несколько аргументов пары имя-значение в дополнение к любой из комбинаций входных аргументов в предыдущих синтаксисах. Например, можно задать перекрестную проверку, реализовать регрессию наименьших квадратов или указать тип регуляризации. Хорошей практикой является перекрестная проверка с использованием 'Kfold' аргумент пары имя-значение. Результаты перекрестной проверки определяют, насколько хорошо обобщается модель.

пример

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

пример

[Mdl,FitInfo,HyperparameterOptimizationResults] = fitrlinear(___) также возвращает подробности оптимизации гиперпараметров при передаче OptimizeHyperparameters пара имя-значение.

Примеры

свернуть все

Обучайте модель линейной регрессии, используя SVM, двойную SGD и регуляризацию хребта.

Моделирование 10000 наблюдений из этой модели

y = x100 + 2x200 + e.

  • X=x1..., x1000 является редкой матрицей 10000 на 1000 с 10%-ми отличными от нуля стандартными нормальными элементами.

  • e - случайная нормальная ошибка со средним значением 0 и стандартным отклонением 0,3.

rng(1) % For reproducibility
n = 1e4;
d = 1e3;
nz = 0.1;
X = sprandn(n,d,nz);
Y = X(:,100) + 2*X(:,200) + 0.3*randn(n,1);

Тренировка модели линейной регрессии. По умолчанию fitrlinear использует вспомогательные векторные машины с штрафом гребня и оптимизирует использование двойного SGD для SVM. Определите, насколько хорошо алгоритм оптимизации соответствует модели данным, извлекая сводку аппроксимации.

[Mdl,FitInfo] = fitrlinear(X,Y)
Mdl = 
  RegressionLinear
         ResponseName: 'Y'
    ResponseTransform: 'none'
                 Beta: [1000x1 double]
                 Bias: -0.0056
               Lambda: 1.0000e-04
              Learner: 'svm'


  Properties, Methods

FitInfo = struct with fields:
                    Lambda: 1.0000e-04
                 Objective: 0.2725
                 PassLimit: 10
                 NumPasses: 10
                BatchLimit: []
             NumIterations: 100000
              GradientNorm: NaN
         GradientTolerance: 0
      RelativeChangeInBeta: 0.4907
             BetaTolerance: 1.0000e-04
             DeltaGradient: 1.5816
    DeltaGradientTolerance: 0.1000
           TerminationCode: 0
         TerminationStatus: {'Iteration limit exceeded.'}
                     Alpha: [10000x1 double]
                   History: []
                   FitTime: 0.1253
                    Solver: {'dual'}

Mdl является RegressionLinear модель. Вы можете пройти Mdl и обучение или новые данные для loss для проверки среднеквадратичной ошибки в выборке. Или, вы можете пройти Mdl и новые данные предиктора для predict прогнозировать ответы на новые наблюдения.

FitInfo является массивом структуры, содержащим, среди прочего, состояние завершения (TerminationStatus) и сколько времени решатель занял, чтобы подогнать модель к данным (FitTime). Рекомендуется использовать FitInfo чтобы определить, являются ли измерения оптимизации-завершения удовлетворительными. В этом случае fitrlinear достигнуто максимальное число итераций. Поскольку время обучения быстрое, можно переучить модель, но увеличить количество проходов через данные. Или попробуйте другой решатель, например LBFGS.

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

Моделирование 10000 наблюдений из этой модели

y = x100 + 2x200 + e.

  • X = {x1..., x1000} редкая матрица 10000 на 1000 с 10%-ми отличными от нуля стандартными нормальными элементами.

  • e - случайная нормальная ошибка со средним значением 0 и стандартным отклонением 0,3.

rng(1) % For reproducibility
n = 1e4;
d = 1e3;
nz = 0.1;
X = sprandn(n,d,nz);
Y = X(:,100) + 2*X(:,200) + 0.3*randn(n,1);

Создайте набор из 15 логарифмически разнесенных уровней регуляции от 10-5 до 10-1.

Lambda = logspace(-5,-1,15);

Выполните перекрестную проверку моделей. Чтобы увеличить скорость выполнения, транспонируйте данные предиктора и укажите, что наблюдения находятся в столбцах. Оптимизируйте целевую функцию с помощью SpaRSA.

X = X'; 
CVMdl = fitrlinear(X,Y,'ObservationsIn','columns','KFold',5,'Lambda',Lambda,...
    'Learner','leastsquares','Solver','sparsa','Regularization','lasso');

numCLModels = numel(CVMdl.Trained)
numCLModels = 5

CVMdl является RegressionPartitionedLinear модель. Поскольку fitrlinear реализует пятикратную перекрестную проверку, CVMdl содержит 5 RegressionLinear модели, которые программное обеспечение обучает на каждой складке.

Отображение первой обученной модели линейной регрессии.

Mdl1 = CVMdl.Trained{1}
Mdl1 = 
  RegressionLinear
         ResponseName: 'Y'
    ResponseTransform: 'none'
                 Beta: [1000x15 double]
                 Bias: [1x15 double]
               Lambda: [1x15 double]
              Learner: 'leastsquares'


  Properties, Methods

Mdl1 является RegressionLinear объект модели. fitrlinear построенный Mdl1 путем обучения на первых четырех складках. Поскольку Lambda - это последовательность сильных сторон регуляризации, вы можете думать о Mdl1 как 15 моделей, по одной для каждой силы регуляризации в Lambda.

Оценка перекрестно проверенного MSE.

mse = kfoldLoss(CVMdl);

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

Mdl = fitrlinear(X,Y,'ObservationsIn','columns','Lambda',Lambda,...
    'Learner','leastsquares','Solver','sparsa','Regularization','lasso');
numNZCoeff = sum(Mdl.Beta~=0);

На том же рисунке постройте график перекрестно подтвержденного MSE и частоты ненулевых коэффициентов для каждой силы регуляции. Постройте график всех переменных на шкале журнала.

figure
[h,hL1,hL2] = plotyy(log10(Lambda),log10(mse),...
    log10(Lambda),log10(numNZCoeff)); 
hL1.Marker = 'o';
hL2.Marker = 'o';
ylabel(h(1),'log_{10} MSE')
ylabel(h(2),'log_{10} nonzero-coefficient frequency')
xlabel('log_{10} Lambda')
hold off

Figure contains 2 axes. Axes 1 contains an object of type line. Axes 2 contains an object of type line.

Выберите индекс силы регуляризации, который уравновешивает предикторную переменную разреженность и низкий MSE (например, Lambda(10)).

idxFinal = 10;

Извлеките модель с минимальным значением MSE.

MdlFinal = selectModels(Mdl,idxFinal)
MdlFinal = 
  RegressionLinear
         ResponseName: 'Y'
    ResponseTransform: 'none'
                 Beta: [1000x1 double]
                 Bias: -0.0050
               Lambda: 0.0037
              Learner: 'leastsquares'


  Properties, Methods

idxNZCoeff = find(MdlFinal.Beta~=0)
idxNZCoeff = 2×1

   100
   200

EstCoeff = Mdl.Beta(idxNZCoeff)
EstCoeff = 2×1

    1.0051
    1.9965

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

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

y = x100 + 2x200 + e.

  • X = {x1..., x1000} редкая матрица 10000 на 1000 с 10%-ми отличными от нуля стандартными нормальными элементами.

  • e - случайная нормальная ошибка со средним значением 0 и стандартным отклонением 0,3.

rng(1) % For reproducibility
n = 1e4;
d = 1e3;
nz = 0.1;
X = sprandn(n,d,nz);
Y = X(:,100) + 2*X(:,200) + 0.3*randn(n,1);

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

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

hyperopts = struct('AcquisitionFunctionName','expected-improvement-plus');
[Mdl,FitInfo,HyperparameterOptimizationResults] = fitrlinear(X,Y,...
    'OptimizeHyperparameters','auto',...
    'HyperparameterOptimizationOptions',hyperopts)
|=====================================================================================================|
| Iter | Eval   | Objective:  | Objective   | BestSoFar   | BestSoFar   |       Lambda |      Learner |
|      | result | log(1+loss) | runtime     | (observed)  | (estim.)    |              |              |
|=====================================================================================================|
|    1 | Best   |     0.16029 |      0.8393 |     0.16029 |     0.16029 |   2.4206e-09 |          svm |
|    2 | Best   |     0.14496 |     0.55333 |     0.14496 |     0.14601 |     0.001807 |          svm |
|    3 | Best   |     0.13879 |     0.42441 |     0.13879 |     0.14065 |   2.4681e-09 | leastsquares |
|    4 | Best   |       0.115 |     0.39828 |       0.115 |     0.11501 |     0.021027 | leastsquares |
|    5 | Accept |     0.44352 |     0.41855 |       0.115 |      0.1159 |       4.6795 | leastsquares |
|    6 | Best   |     0.11025 |     0.46318 |     0.11025 |     0.11024 |     0.010671 | leastsquares |
|    7 | Accept |     0.13222 |     0.41191 |     0.11025 |     0.11024 |   8.6067e-08 | leastsquares |
|    8 | Accept |     0.13262 |     0.38611 |     0.11025 |     0.11023 |   8.5109e-05 | leastsquares |
|    9 | Accept |     0.13543 |     0.38747 |     0.11025 |     0.11021 |   2.7562e-06 | leastsquares |
|   10 | Accept |     0.15751 |     0.60115 |     0.11025 |     0.11022 |   5.0559e-06 |          svm |
|   11 | Accept |     0.40673 |     0.51909 |     0.11025 |      0.1102 |      0.52074 |          svm |
|   12 | Accept |     0.16057 |     0.62674 |     0.11025 |      0.1102 |   0.00014292 |          svm |
|   13 | Accept |     0.16105 |     0.54953 |     0.11025 |     0.11018 |   1.0079e-07 |          svm |
|   14 | Accept |     0.12763 |     0.42777 |     0.11025 |     0.11019 |    0.0012085 | leastsquares |
|   15 | Accept |     0.13504 |     0.38913 |     0.11025 |     0.11019 |   1.3981e-08 | leastsquares |
|   16 | Accept |     0.11041 |      0.4437 |     0.11025 |     0.11026 |    0.0093968 | leastsquares |
|   17 | Best   |     0.10954 |     0.40244 |     0.10954 |     0.11003 |     0.010393 | leastsquares |
|   18 | Accept |     0.10998 |     0.42486 |     0.10954 |     0.11002 |     0.010254 | leastsquares |
|   19 | Accept |     0.45314 |     0.53248 |     0.10954 |     0.11001 |       9.9966 |          svm |
|   20 | Best   |     0.10753 |      0.6322 |     0.10753 |     0.10759 |     0.022576 |          svm |
|=====================================================================================================|
| Iter | Eval   | Objective:  | Objective   | BestSoFar   | BestSoFar   |       Lambda |      Learner |
|      | result | log(1+loss) | runtime     | (observed)  | (estim.)    |              |              |
|=====================================================================================================|
|   21 | Best   |     0.10737 |     0.64783 |     0.10737 |     0.10728 |     0.010171 |          svm |
|   22 | Accept |     0.13448 |     0.39942 |     0.10737 |     0.10727 |   1.5344e-05 | leastsquares |
|   23 | Best   |     0.10645 |     0.55045 |     0.10645 |     0.10565 |     0.015495 |          svm |
|   24 | Accept |     0.13598 |     0.39638 |     0.10645 |     0.10559 |   4.5984e-07 | leastsquares |
|   25 | Accept |     0.15962 |     0.64705 |     0.10645 |     0.10556 |   1.4302e-08 |          svm |
|   26 | Accept |     0.10689 |     0.55033 |     0.10645 |     0.10616 |     0.015391 |          svm |
|   27 | Accept |     0.13748 |     0.39817 |     0.10645 |     0.10614 |    1.001e-09 | leastsquares |
|   28 | Accept |     0.10692 |      0.5724 |     0.10645 |     0.10639 |     0.015761 |          svm |
|   29 | Accept |     0.10681 |      0.5118 |     0.10645 |     0.10649 |     0.015777 |          svm |
|   30 | Accept |     0.34314 |     0.39349 |     0.10645 |     0.10651 |      0.39671 | leastsquares |

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.

Figure contains an axes. The axes with title Objective function model contains 5 objects of type line, surface, contour. These objects represent Observed points, Model mean, Next point, Model minimum feasible.

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

Best observed feasible point:
     Lambda     Learner
    ________    _______

    0.015495      svm  

Observed objective function value = 0.10645
Estimated objective function value = 0.10651
Function evaluation time = 0.55045

Best estimated feasible point (according to models):
     Lambda     Learner
    ________    _______

    0.015777      svm  

Estimated objective function value = 0.10651
Estimated function evaluation time = 0.56915
Mdl = 
  RegressionLinear
         ResponseName: 'Y'
    ResponseTransform: 'none'
                 Beta: [1000x1 double]
                 Bias: -0.0018
               Lambda: 0.0158
              Learner: 'svm'


  Properties, Methods

FitInfo = struct with fields:
                    Lambda: 0.0158
                 Objective: 0.2309
                 PassLimit: 10
                 NumPasses: 10
                BatchLimit: []
             NumIterations: 99989
              GradientNorm: NaN
         GradientTolerance: 0
      RelativeChangeInBeta: 0.0641
             BetaTolerance: 1.0000e-04
             DeltaGradient: 1.1697
    DeltaGradientTolerance: 0.1000
           TerminationCode: 0
         TerminationStatus: {'Iteration limit exceeded.'}
                     Alpha: [10000x1 double]
                   History: []
                   FitTime: 0.1001
                    Solver: {'dual'}

HyperparameterOptimizationResults = 
  BayesianOptimization with properties:

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

Этот метод оптимизации проще, чем метод, показанный в разделе Найти хороший штраф Лассо с помощью перекрестной проверки, но не позволяет компенсировать сложность модели и потери при перекрестной проверке.

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

свернуть все

Данные предиктора, заданные как полная или разреженная матрица n-by-p.

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

Примечание

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

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

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

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

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

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

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

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

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

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

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

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

Пояснительная модель переменной ответа и подмножество переменных предиктора, указанное как вектор символов или строковый скаляр в форме 'Y~x1+x2+x3'. В этой форме Y представляет переменную ответа, и x1, x2, и x3 представляют переменные предиктора.

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

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

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

Примечание

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

  • Отсутствует значение в ответе (например, Y или ValidationData{2})

  • По крайней мере одно отсутствующее значение в наблюдении предиктора (например, строка в X или ValidationData{1})

  • NaN значение или 0 вес (например, значение в Weights или ValidationData{3})

Для экономии использования памяти рекомендуется перед обучением вручную удалять наблюдения, содержащие отсутствующие значения.

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

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

Пример: Mdl = fitrlinear(X,Y,'Learner','leastsquares','CrossVal','on','Regularization','lasso') указывает для реализации регрессии методом наименьших квадратов, реализует 10-кратную перекрестную проверку и указывает на включение термина регуляризации лассо.

Примечание

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

Опции линейной регрессии

свернуть все

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

Дефолт Epsilon значение равно iqr(Y)/13.49, которая представляет собой оценку стандартного отклонения с использованием межквартильного диапазона переменной отклика Y. Если iqr(Y) равно нулю, тогда значение по умолчанию Epsilon значение равно 0,1.

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

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

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

  • Для 'auto', Lambda = 1/n.

    • Если указана перекрестная проверка, аргумент пары имя-значение (например, CrossVal), то n - количество кратных наблюдений.

    • В противном случае n - размер обучающей выборки.

  • Для вектора неотрицательных значений: fitrlinear последовательно оптимизирует целевую функцию для каждого отдельного значения в Lambda в порядке возрастания.

    • Если Solver является 'sgd' или 'asgd' и Regularization является 'lasso', fitrlinear не использует предыдущие оценки коэффициентов в качестве теплого начала для следующей итерации оптимизации. В противном случае fitrlinear использует теплые старты.

    • Если Regularization является 'lasso', то любая оценка коэффициента 0 сохраняет свое значение, когда fitrlinear оптимизирует с использованием последующих значений в Lambda.

    • fitrlinear возвращает оценки коэффициентов для каждой заданной силы регуляризации.

Пример: 'Lambda',10.^(-(10:-2:2))

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

Тип модели линейной регрессии, указанный как разделенная запятыми пара, состоящая из 'Learner' и 'svm' или 'leastsquares'.

В этой таблице f (x) = + b.

  • β - вектор p-коэффициентов.

  • x - это наблюдение из переменных p-предиктора.

  • b - скалярное смещение.

СтоимостьАлгоритмДиапазон ответаФункция потерь
'leastsquares'Линейная регрессия через обычные наименьшие квадратыy ∊ (- ∞,∞)Среднеквадратичная ошибка (MSE): ℓ[y,f (x)] = 12 [y f (x)] 2
'svm'Поддержка векторной машинной регрессииТо же, что и 'leastsquares'Эпсилон-нечувствительный: ℓ[y,f (x)] = max [0, | y f (x) | −

Пример: 'Learner','leastsquares'

Измерение наблюдения данных предиктора, указанное как 'rows' или 'columns'.

Примечание

Если вы ориентируете матрицу предиктора так, чтобы наблюдения соответствовали столбцам, и укажите 'ObservationsIn','columns', то вы можете испытать значительное сокращение времени вычислений. Невозможно указать 'ObservationsIn','columns' для данных предиктора в таблице.

Пример: 'ObservationsIn','columns'

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

Тип штрафа сложности, указанный как разделенная запятыми пара, состоящая из 'Regularization' и 'lasso' или 'ridge'.

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

СтоимостьОписание
'lasso'Лассо (L1) пенальти: λ∑j=1p'βj|
'ridge'Штраф по Риджу (L2): λ2∑j=1pβj2

Чтобы указать силу термина регуляризации, которая является λ в выражениях, используйте Lambda.

Программное обеспечение исключает термин смещения (β0) из штрафа за регуляризацию.

Если Solver является 'sparsa', то значение по умолчанию Regularization является 'lasso'. В противном случае значение по умолчанию - 'ridge'.

Совет

  • Для выбора переменной предиктора укажите 'lasso'. Дополнительные сведения о выборе переменных см. в разделе Введение в выбор элементов.

  • Для точности оптимизации укажите 'ridge'.

Пример: 'Regularization','lasso'

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

СтоимостьОписаниеОграничения
'sgd'Стохастический градиентный спуск (SGD) [5][3] 
'asgd'Средний стохастический градиентный спуск (ASGD) [8] 
'dual'Двойной SGD для SVM [2][7]Regularization должно быть 'ridge' и Learner должно быть 'svm'.
'bfgs'Алгоритм Бройдена-Флетчера-Гольдфарба-Шанно квази-Ньютона (BFGS) [4]Неэффективно, если X является очень высокоразмерным.
'lbfgs'Ограниченная память BFGS (LBFGS) [4]Regularization должно быть 'ridge'.
'sparsa'Разреженная реконструкция по разделяемому приближению (SpaRSA) [6]Regularization должно быть 'lasso'.

При указании:

  • Штраф по гребню (см. Regularization) и size(X,1) <= 100 (100 или менее переменных предиктора), тогда решателем по умолчанию является 'bfgs'.

  • Регрессионная модель SVM (см. Learner), штраф по гребню и size(X,1) > 100 (более 100 переменных предиктора), тогда решателем по умолчанию является 'dual'.

  • Лассо пенальти и X содержит 100 или менее переменных предиктора, тогда решателем по умолчанию является 'sparsa'.

В противном случае решателем по умолчанию является 'sgd'.

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

Дополнительные сведения о том, какой решатель выбрать, см. в разделе Советы.

Пример: 'Solver',{'sgd','lbfgs'}

Начальные оценки линейных коэффициентов (β), определенные как разделенная запятыми пара, состоящая из 'Beta' и p-мерный числовой вектор или p-на-L-числовую матрицу. p - количество переменных предиктора в X и L - количество значений прочности на регуляризацию (подробнее см. Lambda).

  • Если задать p-мерный вектор, то программное обеспечение оптимизирует целевую функцию L раз, используя этот процесс.

    1. Программное обеспечение оптимизирует использование Beta в качестве начального значения и минимального значения Lambda в качестве силы регуляризации.

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

    3. Программное обеспечение реализует шаг 2, пока не исчерпает все значения в Lambda.

  • Если задать матрицу p-by-L, то программное обеспечение оптимизирует целевую функцию L раз. При итерации j, программное обеспечение использует Beta(:,j) как начальное значение и, после его сортировки Lambda по возрастанию, использует Lambda(j) в качестве силы регуляризации.

Если установить 'Solver','dual', то программное обеспечение игнорирует Beta.

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

Начальная оценка перехвата (b), указанная как пара, разделенная запятыми, состоящая из 'Bias' и числовой скаляр или L-мерный числовой вектор. L - количество значений прочности на регуляризацию (подробнее см. Lambda).

  • Если указать скаляр, то программное обеспечение оптимизирует целевую функцию L раз, используя этот процесс.

    1. Программное обеспечение оптимизирует использование Bias в качестве начального значения и минимального значения Lambda в качестве силы регуляризации.

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

    3. Программное обеспечение реализует шаг 2, пока не исчерпает все значения в Lambda.

  • Если задать L-мерный вектор, то программа оптимизирует целевую функцию L раз. При итерации j, программное обеспечение использует Bias(j) как начальное значение и, после его сортировки Lambda по возрастанию, использует Lambda(j) в качестве силы регуляризации.

  • По умолчанию:

    • Если Learner является 'leastsquares', то Bias - средневзвешенное значение Y для обучения или, для перекрестной проверки, кратных ответов.

    • Если Learner является 'svm', то Bias - взвешенная медиана Y для всех тренировок или, для перекрестной проверки, кратных наблюдений, которые больше, чем Epsilon.

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

Флаг включения пересечения линейной модели, заданный как разделенная запятыми пара, состоящая из 'FitBias' и true или false.

СтоимостьОписание
trueПрограммное обеспечение включает член смещения b в линейную модель, а затем оценивает его.
falseПрограммное обеспечение устанавливает b = 0 во время оценки.

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

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

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

СтоимостьОписание
falseПрограммное обеспечение оценивает член смещения b и коэффициенты β во время оптимизации.
true

Для оценки b программное обеспечение:

  1. Оценивает β и b с использованием модели.

  2. Вычисляет остатки.

  3. Корректирует b. Для наименьших квадратов b - средневзвешенное значение остатков. Для регрессии SVM b - взвешенная медиана между всеми остатками с величиной больше, чем Epsilon.

При указании true, то FitBias должно быть истинно.

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

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

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

СтоимостьОписание
0fitrlinear не отображает диагностическую информацию.
1fitrlinear периодически отображает и сохраняет значение целевой функции, величину градиента и другую диагностическую информацию. FitInfo.History содержит диагностическую информацию.
Любое другое положительное целое числоfitrlinear отображает и сохраняет диагностическую информацию в каждой итерации оптимизации. FitInfo.History содержит диагностическую информацию.

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

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

Опции решателя SGD и ASGD

свернуть все

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

  • Если X является числовой матрицей, тогда значением по умолчанию является 10.

  • Если X является разреженной матрицей, тогда значением по умолчанию является max([10,ceil(sqrt(ff))]), где ff = numel(X)/nnz(X) (коэффициент полноты X).

Пример: 'BatchSize',100

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

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

  • Если Regularization является 'ridge', то LearnRate определяет начальную скорость обучения γ 0. Программа определяет скорость обучения для итерации t, γ t, используя

    γ t = γ 0 (1 + λ γ 0t) c.

    • λ - значение Lambda.

    • Если Solver является 'sgd', c = 1.

    • Если Solver является 'asgd':

      • c = 2/3 если Learner является 'leastsquares'

      • c = 3/4 если Learner является 'svm' [8]

  • Если Regularization является 'lasso', то для всех итераций, LearnRate является постоянной.

По умолчанию LearnRate является 1/sqrt(1+max((sum(X.^2,obsDim)))), где obsDim является 1 если наблюдения составляют столбцы X, и 2 в противном случае.

Пример: 'LearnRate',0.01

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

Флаг для уменьшения скорости обучения, когда программное обеспечение обнаруживает дивергенцию (то есть превышение минимального шага), заданную как пара, разделенная запятыми, состоящая из 'OptimizeLearnRate' и true или false.

Если OptimizeLearnRate является 'true', затем:

  1. Для нескольких итераций оптимизации программа начинает оптимизацию с помощью LearnRate как скорость обучения.

  2. Если значение целевой функции увеличивается, то программное обеспечение перезапускается и использует половину текущего значения скорости обучения.

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

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

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

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

После выполнения усечения программное обеспечение применяет мягкий порог к линейным коэффициентам. То есть после обработки k = TruncationPeriod мини-партии, программное обеспечение усекает оценочный коэффициент j, используя

β^j∗={β^j−utif β ^ j > ut, 0if |β^j|≤ut,β^j+utif β ^ j < ut.

  • Для SGD β ^ j - оценка коэффициента j после обработки k мини-партий. ut = kγ tλ. γ t - скорость обучения при итерации t.λ - значениеLambda.

  • Для ASGD β ^ j - усредненный оценочный коэффициент j после обработки k мини-партий, ut = kλ.

Если Regularization является 'ridge', то программное обеспечение игнорирует TruncationPeriod.

Пример: 'TruncationPeriod',100

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

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

свернуть все

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    • По умолчанию PredictorNames является {'x1','x2',...}.

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

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

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

    • Хорошей практикой является определение предикторов для обучения с использованием 'PredictorNames' или formulaно не оба.

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

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

Имя переменной ответа, указанное как вектор символа или скаляр строки.

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

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

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

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

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

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

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

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

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

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

fitrlinear нормализует веса для суммирования в 1.

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

Параметры перекрестной проверки

свернуть все

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

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

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

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

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

Для создания перекрестно проверенной модели можно использовать только одну из следующих четырех опций: 'CVPartition', 'Holdout', или 'KFold'.

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

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

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

Для создания перекрестно проверенной модели можно использовать только одну из следующих четырех опций: 'CVPartition', 'Holdout', или 'KFold'.

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

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

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

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

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

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

Для создания перекрестно проверенной модели можно использовать только одну из следующих четырех опций: 'CVPartition', 'Holdout', или 'KFold'.

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

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

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

свернуть все

Максимальное количество обрабатываемых пакетов, указанное как пара, разделенная запятыми, состоящая из 'BatchLimit' и положительное целое число. При обработке программного обеспечения BatchLimit пакеты, он завершает оптимизацию.

  • По умолчанию:

    • Программное обеспечение проходит через данные PassLimit времена.

    • Если указать несколько решателей и использовать (A) SGD для получения начального приближения для следующего решателя, то значением по умолчанию являетсяceil(1e6/BatchSize). BatchSize - значение 'BatchSize' аргумент пары имя-значение.

  • При указании 'BatchLimit' и 'PassLimit', то программное обеспечение выбирает аргумент, который приводит к обработке наименьшего количества наблюдений.

  • При указании 'BatchLimit' но не 'PassLimit', затем программное обеспечение обрабатывает достаточное количество пакетов, чтобы завершить до одного полного прохода через данные.

Пример: 'BatchLimit',100

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

Относительный допуск на линейные коэффициенты и член смещения (пересечение), указанный как разделенная запятыми пара, состоящая из 'BetaTolerance' и неотрицательный скаляр.

Пусть Bt = [βt bt], то есть вектор коэффициентов и член смещения при итерации оптимизации т. Если Bt−Bt−1Bt‖2<BetaTolerance, то оптимизация заканчивается.

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

Пример: 'BetaTolerance',1e-6

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

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

Чтобы указать размер партии, см. раздел BatchSize.

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

Пример: 'NumCheckConvergence',100

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

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

fitrlinear обрабатывает все наблюдения по завершении одного прохода через данные.

Когда fitrlinear проходит через данные PassLimit раз, он прекращает оптимизацию.

При указании 'BatchLimit' и PassLimit, то fitrlinear выбирает аргумент, который приводит к обработке наименьшего количества наблюдений. Дополнительные сведения см. в разделе Алгоритмы.

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

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

Данные проверки для обнаружения сходимости оптимизации, указанные как пара, разделенная запятыми, состоящая из 'ValidationData' и массив ячеек или таблицу.

Во время оптимизации программное обеспечение периодически оценивает потерю ValidationData. При увеличении потери данных проверки программное обеспечение завершает оптимизацию. Дополнительные сведения см. в разделе Алгоритмы. Чтобы оптимизировать гиперпараметры с помощью перекрестной проверки, см. параметры перекрестной проверки, такие как CrossVal.

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

При указании ValidationData в качестве массива ячеек он должен иметь следующий формат:

  • ValidationData{1} должен иметь тот же тип данных и ориентацию, что и данные предиктора. То есть, если вы используете матрицу предиктора X, то ValidationData{1} должна быть полной или разреженной матрицей m-by-p или p-by-m данных предиктора, которая имеет ту же ориентацию, что и X. Переменные предиктора в данных обучения X и ValidationData{1} должны соответствовать. Аналогично, если используется таблица предикторов Tbl данных предиктора, то ValidationData{1} должна быть таблицей, содержащей те же предикторные переменные, что и в Tbl. Количество наблюдений в ValidationData{1} и данные предиктора могут изменяться.

  • ValidationData{2} должны соответствовать типу данных и формату переменной ответа, либо Y или ResponseVarName. Если ValidationData{2} является массивом ответов, то он должен иметь то же количество элементов, что и количество наблюдений в ValidationData{1}. Если ValidationData{1} является таблицей, то ValidationData{2} может быть именем переменной ответа в таблице. Если вы хотите использовать то же самое ResponseVarName или formula, можно указать ValidationData{2} как [].

  • При необходимости можно указать ValidationData{3} в виде m-мерного числового вектора весов наблюдения или имени переменной в таблице ValidationData{1} содержит веса наблюдения. Программа нормализует весовые коэффициенты с данными проверки таким образом, чтобы они равнялись 1.

При указании ValidationData и хотите отобразить потерю проверки в командной строке, укажите значение больше 0 для Verbose.

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

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

Абсолютный градиентный допуск, заданный как разделенная запятыми пара, состоящая из 'GradientTolerance' и неотрицательный скаляр. GradientTolerance применяется к этим значениям Solver: 'bfgs', 'lbfgs', и 'sparsa'.

Пусть ∇ℒt является градиентным вектором целевой функции относительно коэффициентов и члена смещения при итерации оптимизации T. Если ∇ℒt‖∞=max|∇ℒt|<GradientTolerance, то оптимизация заканчивается.

Если также указать BetaTolerance, то оптимизация заканчивается, когда fitrlinear удовлетворяет любому критерию остановки.

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

Пример: 'GradientTolerance',eps

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

Максимальное число итераций оптимизации, указанное как пара, разделенная запятыми, состоящая из 'IterationLimit' и положительное целое число. IterationLimit применяется к этим значениям Solver: 'bfgs', 'lbfgs', и 'sparsa'.

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

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

Двойные средства управления конвергенцией оптимизации SGD

свернуть все

Относительный допуск на линейные коэффициенты и член смещения (пересечение), указанный как разделенная запятыми пара, состоящая из 'BetaTolerance' и неотрицательный скаляр.

Пусть Bt = [βt bt], то есть вектор коэффициентов и член смещения при итерации оптимизации т. Если Bt−Bt−1Bt‖2<BetaTolerance, то оптимизация заканчивается.

Если также указать DeltaGradientTolerance, то оптимизация завершается, когда программное обеспечение удовлетворяет любому критерию остановки.

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

Пример: 'BetaTolerance',1e-6

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

Градиентно-разностный допуск между нарушителями условий комплементарности верхнего и нижнего пулов Karush-Kuhn-Tucker (KKT), определяемый как разделенная запятыми пара, состоящая из 'DeltaGradientTolerance' и неотрицательный скаляр. DeltaGradientTolerance относится к 'dual' значение Solver только.

  • Если магнитуда нарушителей ККТ меньше DeltaGradientTolerance, то fitrlinear завершает оптимизацию.

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

Пример: 'DeltaGapTolerance',1e-2

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

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

Пример: 'NumCheckConvergence',100

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

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

Когда программное обеспечение завершает один проход через данные, оно обрабатывает все наблюдения.

Когда программное обеспечение проходит через данные PassLimit раз, он прекращает оптимизацию.

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

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

Данные проверки для обнаружения сходимости оптимизации, указанные как пара, разделенная запятыми, состоящая из 'ValidationData' и массив ячеек или таблицу.

Во время оптимизации программное обеспечение периодически оценивает потерю ValidationData. При увеличении потери данных проверки программное обеспечение завершает оптимизацию. Дополнительные сведения см. в разделе Алгоритмы. Чтобы оптимизировать гиперпараметры с помощью перекрестной проверки, см. параметры перекрестной проверки, такие как CrossVal.

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

При указании ValidationData в качестве массива ячеек он должен иметь следующий формат:

  • ValidationData{1} должен иметь тот же тип данных и ориентацию, что и данные предиктора. То есть, если вы используете матрицу предиктора X, то ValidationData{1} должна быть полной или разреженной матрицей m-by-p или p-by-m данных предиктора, которая имеет ту же ориентацию, что и X. Переменные предиктора в данных обучения X и ValidationData{1} должны соответствовать. Аналогично, если используется таблица предикторов Tbl данных предиктора, то ValidationData{1} должна быть таблицей, содержащей те же предикторные переменные, что и в Tbl. Количество наблюдений в ValidationData{1} и данные предиктора могут изменяться.

  • ValidationData{2} должны соответствовать типу данных и формату переменной ответа, либо Y или ResponseVarName. Если ValidationData{2} является массивом ответов, то он должен иметь то же количество элементов, что и количество наблюдений в ValidationData{1}. Если ValidationData{1} является таблицей, то ValidationData{2} может быть именем переменной ответа в таблице. Если вы хотите использовать то же самое ResponseVarName или formula, можно указать ValidationData{2} как [].

  • При необходимости можно указать ValidationData{3} в виде m-мерного числового вектора весов наблюдения или имени переменной в таблице ValidationData{1} содержит веса наблюдения. Программа нормализует весовые коэффициенты с данными проверки таким образом, чтобы они равнялись 1.

При указании ValidationData и хотите отобразить потерю проверки в командной строке, укажите значение больше 0 для Verbose.

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

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

Управление конвергенцией BFGS, LBFGS и SpaRSA

свернуть все

Относительный допуск на линейные коэффициенты и член смещения (пересечение), указанный как разделенная запятыми пара, состоящая из 'BetaTolerance' и неотрицательный скаляр.

Пусть Bt = [βt bt], то есть вектор коэффициентов и член смещения при итерации оптимизации т. Если Bt−Bt−1Bt‖2<BetaTolerance, то оптимизация заканчивается.

Если также указать GradientTolerance, то оптимизация завершается, когда программное обеспечение удовлетворяет любому критерию остановки.

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

Пример: 'BetaTolerance',1e-6

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

Абсолютный градиентный допуск, заданный как разделенная запятыми пара, состоящая из 'GradientTolerance' и неотрицательный скаляр.

Пусть ∇ℒt является градиентным вектором целевой функции относительно коэффициентов и члена смещения при итерации оптимизации T. Если ∇ℒt‖∞=max|∇ℒt|<GradientTolerance, то оптимизация заканчивается.

Если также указать BetaTolerance, то оптимизация завершается, когда программное обеспечение удовлетворяет любому критерию остановки.

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

Пример: 'GradientTolerance',1e-5

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

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

Программное обеспечение не поддерживает 'HessianHistorySize' для SpaRSA.

Пример: 'HessianHistorySize',10

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

Максимальное число итераций оптимизации, указанное как пара, разделенная запятыми, состоящая из 'IterationLimit' и положительное целое число. IterationLimit применяется к этим значениям Solver: 'bfgs', 'lbfgs', и 'sparsa'.

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

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

Данные проверки для обнаружения сходимости оптимизации, указанные как пара, разделенная запятыми, состоящая из 'ValidationData' и массив ячеек или таблицу.

Во время оптимизации программное обеспечение периодически оценивает потерю ValidationData. При увеличении потери данных проверки программное обеспечение завершает оптимизацию. Дополнительные сведения см. в разделе Алгоритмы. Чтобы оптимизировать гиперпараметры с помощью перекрестной проверки, см. параметры перекрестной проверки, такие как CrossVal.

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

При указании ValidationData в качестве массива ячеек он должен иметь следующий формат:

  • ValidationData{1} должен иметь тот же тип данных и ориентацию, что и данные предиктора. То есть, если вы используете матрицу предиктора X, то ValidationData{1} должна быть полной или разреженной матрицей m-by-p или p-by-m данных предиктора, которая имеет ту же ориентацию, что и X. Переменные предиктора в данных обучения X и ValidationData{1} должны соответствовать. Аналогично, если используется таблица предикторов Tbl данных предиктора, то ValidationData{1} должна быть таблицей, содержащей те же предикторные переменные, что и в Tbl. Количество наблюдений в ValidationData{1} и данные предиктора могут изменяться.

  • ValidationData{2} должны соответствовать типу данных и формату переменной ответа, либо Y или ResponseVarName. Если ValidationData{2} является массивом ответов, то он должен иметь то же количество элементов, что и количество наблюдений в ValidationData{1}. Если ValidationData{1} является таблицей, то ValidationData{2} может быть именем переменной ответа в таблице. Если вы хотите использовать то же самое ResponseVarName или formula, можно указать ValidationData{2} как [].

  • При необходимости можно указать ValidationData{3} в виде m-мерного числового вектора весов наблюдения или имени переменной в таблице ValidationData{1} содержит веса наблюдения. Программа нормализует весовые коэффициенты с данными проверки таким образом, чтобы они равнялись 1.

При указании ValidationData и хотите отобразить потерю проверки в командной строке, укажите значение больше 0 для Verbose.

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

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

Оптимизация гиперпараметров

свернуть все

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

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

  • 'auto' - Использование {'Lambda','Learner'}.

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

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

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

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

Примечание

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

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

  • Lambdafitrlinear поиск среди положительных значений, по умолчанию с логарифмическим масштабированием в диапазоне [1e-5/NumObservations,1e5/NumObservations].

  • Learnerfitrlinear поиск среди 'svm' и 'leastsquares'.

  • Regularizationfitrlinear поиск среди 'ridge' и 'lasso'.

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

load carsmall
params = hyperparameters('fitrlinear',[Horsepower,Weight],MPG);
params(1).Range = [1e-3,2e4];

Проход params как значение OptimizeHyperparameters.

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

Пример см. в разделе Оптимизация линейной регрессии.

Пример: '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Логическое значение, указывающее, выполнять ли байесовскую оптимизацию параллельно, что требует Toolbox™ параллельных вычислений. Из-за непродуктивности параллельной синхронизации параллельная байесовская оптимизация не обязательно дает воспроизводимые результаты. Дополнительные сведения см. в разделе Параллельная байесовская оптимизация.false
Repartition

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

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

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

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

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

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

свернуть все

Обученная модель линейной регрессии, возвращенная как RegressionLinear объект модели или RegressionPartitionedLinear объект модели с перекрестной проверкой.

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

Для ссылки на свойства Mdl, используйте точечную нотацию. Например, введите Mdl.Beta в окне команд для отображения вектора или матрицы оцененных коэффициентов.

Примечание

В отличие от других регрессионных моделей, и для экономичного использования памяти, RegressionLinear и RegressionPartitionedLinear объекты модели не хранят учебные данные или сведения об оптимизации (например, историю сходимости).

Сведения об оптимизации, возвращаемые в виде массива структуры.

Поля определяют конечные значения или параметры пары «имя-значение», например: Objective - значение целевой функции при завершении оптимизации. Строки многомерных полей соответствуют значениям Lambda и столбцы соответствуют значениям Solver.

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

ОбластьОписание
TerminationStatus
  • Причина прекращения оптимизации

  • Соответствует значению в TerminationCode

FitTimeИстекло, время настенных часов в секундах
History

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

Целое числоРешающее устройство
1Сингапурский доллар
2ASGD
3Двойной SGD для SVM
4LBFGS
5BFGS
6SpaRSA

Для доступа к полям используйте точечную нотацию. Например, чтобы получить доступ к вектору значений целевой функции для каждой итерации, введите FitInfo.History.Objective.

Это хорошая практика для изучения FitInfo оценить, является ли сходимость удовлетворительной.

Оптимизация гиперпараметров с перекрестной проверкой, возвращаемая как BayesianOptimization объект или таблица гиперпараметров и связанных значений. Выходные данные не являются пустыми, если значение 'OptimizeHyperparameters' не является 'none'. Выходное значение зависит от Optimizer значение поля 'HyperparameterOptimizationOptions' аргумент пары имя-значение:

Значение Optimizer ОбластьЗначение HyperparameterOptimizationResults
'bayesopt' (по умолчанию)Объект класса BayesianOptimization
'gridsearch' или 'randomsearch'Таблица используемых гиперпараметров, наблюдаемые значения целевой функции (потеря перекрестной проверки) и ранг наблюдений от самого низкого (лучший) до самого высокого (худший)

Примечание

Если Learner является 'leastsquares', то член потери в целевой функции составляет половину MSE. loss возвращает MSE по умолчанию. Поэтому, если вы используете loss для проверки повторного предоставления, или обучения, ошибка, то есть несоответствие между MSE, возвращенным loss и результаты оптимизации в FitInfo или возвращено в командную строку путем установки положительного уровня детализации с помощью Verbose.

Подробнее

свернуть все

Теплый старт

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

Альтернативы для низкоразмерных данных

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

Модель по размеруФункцияЗаметные алгоритмические различия
SVM
  • Двоичная классификация: fitcsvm

  • Мультиклассовая классификация: fitcecoc

  • Регрессия: fitrsvm

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

  • Решение двойной задачи с помощью SMO, ISDA или минимизации L1 с помощью квадратичного программирования с помощью quadprog(Панель инструментов оптимизации).

Линейная регрессия
  • Наименьшие квадраты без регуляризации: fitlm

  • Регуляризованные наименьшие квадраты с использованием штрафа лассо: lasso

  • Регрессия хребта: ridge или lasso

  • lasso реализует циклический спуск координат.

Логистическая регрессия
  • Логистическая регрессия без регуляризации: fitglm.

  • Регуляризованная логистическая регрессия с использованием штрафа лассо: lassoglm

  • fitglm реализует итеративно повторно взвешенные наименьшие квадраты.

  • lassoglm реализует циклический спуск координат.

Совет

  • Рекомендуется ориентировать матрицу предиктора таким образом, чтобы наблюдения соответствовали столбцам и указывали 'ObservationsIn','columns'. В результате можно значительно сократить время оптимизации-выполнения.

  • Для лучшей точности оптимизации при наличии высокоразмерных данных предиктора и Regularization значение равно 'ridge', задайте любую из этих опций для Solver:

    • 'sgd'

    • 'asgd'

    • 'dual' если Learner является 'svm'

    • {'sgd','lbfgs'}

    • {'asgd','lbfgs'}

    • {'dual','lbfgs'} если Learner является 'svm'

    Другие варианты могут привести к низкой точности оптимизации.

  • Для лучшей точности оптимизации при наличии данных от умеренного до низкоразмерного предиктора и Regularization значение равно 'ridge', комплект Solver кому 'bfgs'.

  • Если Regularization является 'lasso', задайте любую из этих опций для Solver:

    • 'sgd'

    • 'asgd'

    • 'sparsa'

    • {'sgd','sparsa'}

    • {'asgd','sparsa'}

  • При выборе между SGD и ASGD необходимо учитывать следующее:

    • SGD занимает меньше времени на одну итерацию, но для сходимости требуется больше итераций.

    • Для сходимости ASGD требуется меньше итераций, но на одну итерацию уходит больше времени.

  • Если ваши данные предиктора имеют мало наблюдений, но много переменных предиктора, то:

    • Определить 'PostFitBias',true.

    • Для решателей SGD или ASGD, установка PassLimit к положительному целому числу, которое больше 1, например, 5 или 10. Эта настройка часто приводит к лучшей точности.

  • Для решателей SGD и ASGD, BatchSize влияет на скорость сходимости.

    • Если BatchSize слишком мал, то fitrlinear достигает минимума во многих итерациях, но быстро вычисляет градиент для каждой итерации.

    • Если BatchSize слишком большой, то fitrlinear достигает минимума в меньшем количестве итераций, но вычисляет градиент на одну итерацию медленно.

  • Большие показатели обучения (см. LearnRate) ускорить сходимость до минимума, но может привести к расходимости (то есть переступить минимум). Небольшие показатели обучения обеспечивают сведение к минимуму, но могут привести к медленному прекращению обучения.

  • При использовании штрафов лассо экспериментируйте с различными значениями TruncationPeriod. Например, установить TruncationPeriod кому 1, 10, а затем 100.

  • Для эффективности, fitrlinear не стандартизирует данные предиктора. Стандартизировать X, введите

    X = bsxfun(@rdivide,bsxfun(@minus,X,mean(X,2)),std(X,0,2));

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

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

Алгоритмы

  • При указании ValidationDataзатем во время оптимизации целевой функции:

    • fitrlinear оценивает потерю проверки ValidationData периодически используя текущую модель, отслеживает минимальную оценку.

    • Когда fitrlinear оценивает потерю проверки, он сравнивает оценку с минимальной оценкой.

    • Когда последующие оценки потерь проверки превышают минимальную оценку в пять раз, fitrlinear завершает оптимизацию.

  • При указании ValidationData и для реализации процедуры перекрестной проверки (CrossVal, CVPartition, Holdout, или KFold), то:

    1. fitrlinear случайные разделы X и Y (или Tbl) в соответствии с выбранной процедурой перекрестной проверки.

    2. fitrlinear обучает модель с помощью раздела training-data. Во время оптимизации целевой функции, fitrlinear использование ValidationData как еще один возможный способ завершения оптимизации (подробности см. в предыдущем маркере).

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

      1. Если реализована k-кратная перекрестная проверка, и fitrlinear не исчерпал все складки тренировочного набора, то fitrlinear возвращается к шагу 2 для обучения с использованием следующей складки набора тренировок.

      2. В противном случае fitrlinear завершает обучение, а затем возвращает перекрестную проверенную модель.

    4. Можно определить качество перекрестно проверенной модели. Например:

      • Чтобы определить потерю проверки с помощью данных о задержке или отклонении от шага 1, передайте перекрестную проверенную модель в kfoldLoss.

      • Чтобы спрогнозировать наблюдения за удержанными или устаревшими данными с шага 1, передайте перекрестно проверенную модель в kfoldPredict.

Ссылки

[1] Ho, C. H. и C. J. Lin. «Регрессия вектора крупномасштабной линейной поддержки». Журнал исследований машинного обучения, том 13, 2012, стр. 3323-3348.

[2] Hsieh, C. J., K. W. Chang, C. J. Лин, С. С. Кеэрти и С. Сундарараджан. «Метод двухкоординатного спуска для крупномасштабного линейного SVM». Материалы 25-й Международной конференции по машинному обучению, ICML "08, 2001, pp. 408-415.

[3] Лэнгфорд, Дж., Л. Ли и Т. Чжан. «Разреженное онлайн-обучение через усеченный градиент». Дж. Мач. Рес., т. 10, 2009, стр. 777-801.

[4] Nocedal, J. и С. Дж. Райт. Численная оптимизация, 2-е изд., Нью-Йорк: Спрингер, 2006.

[5] Шалев-Шварц, С., Я. Сингер и Н. Сребро. «Pegasos: Основной оценочный вычислитель субпогренов для SVM». Материалы 24-й Международной конференции по машинному обучению, ICML "07, 2007, стр. 807-814.

[6] Мастер, S. J., Р. Д. Ноуок и М. А. Т. Фигередо. «Разреженная реконструкция по разделяемому приближению». Транс. Сиг. Proc., том 57, № 7, 2009, стр. 2479-2493.

[7] Сяо, Линь. «Двойные методы усреднения для регуляризованного стохастического обучения и онлайн-оптимизации». Дж. Мач. Рес., т. 11, 2010, стр. 2543-2596.

[8] Сюй, Вэй. «К оптимальному однопроходному крупномасштабному обучению со усредненным стохастическим градиентным спуском». CoRR, abs/1107.2490, 2011.

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

Представлен в R2016a