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.

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

Симулируйте 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 реализует 5-кратную перекрестную валидацию, 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]

Этот метод оптимизации проще, чем тот, что показан в Find Good Lasso Pencial Using Cross-Validation, но не позволяет вам сравнить сложность модели и потери перекрестной валидации.

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

свернуть все

Данные предиктора, заданные как 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)=xβ+b.

  • β является вектором p коэффициентов.

  • x является наблюдением от p переменных предиктора.

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

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

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

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

Примечание

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

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

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

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

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

ЗначениеОписание
'lasso'Лассо (L1) штраф: λj=1p|βj|
'ridge'Хребет (L2) штраф: λ2j=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 -by 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 должно быть true.

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

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

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

β^j={β^jutеслиβ^j>ut,0если|β^j|ut,β^j+utеслиβ^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 использует подмножество входа переменных в качестве предикторов, затем функция индексирует предикторы, используя только подмножество. The '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' и a cvpartition Объект раздела, созданный cvpartition. Объект раздела задает тип перекрестной проверки, а также индексацию для наборов обучения и валидации.

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

Доля данных, используемых для валидации типа «holdout», заданная как разделенная разделенными запятой парами, состоящая из '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=[βtbt], то есть вектор коэффициентов и член смещения при t итерации оптимизации. Если BtBt1Bt2<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=[βtbt], то есть вектор коэффициентов и член смещения при t итерации оптимизации. Если BtBt1Bt2<BetaTolerance, затем оптимизация прекращается.

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

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

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

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

Допуск градиента-разности между верхним и нижним бассейном Каруш-Кун-Такер (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=[βtbt], то есть вектор коэффициентов и член смещения при t итерации оптимизации. Если BtBt1Bt2<BetaTolerance, затем оптимизация прекращается.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

свернуть все

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

Если вы задаете любой из аргументов пары "имя-значение" 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.

Подробнее о

свернуть все

Теплый старт

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

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

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

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

  • Многоклассовая классификация: fitcecoc

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

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

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

Линейная регрессия
  • Наименьшие квадраты без регуляризации: 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 + + требуется MATLAB Coder™. Для получения дополнительной информации смотрите Введение в генерацию кода.

Алгоритмы

  • Если вы задаете ValidationDataзатем, во время оптимизации целевой функции:

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

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

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

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

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

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

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

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

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

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

      • Чтобы определить потери валидации с помощью данных holdout или out-of-fold из шага 1, передайте перекрестно проверенную модель, чтобы kfoldLoss.

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

Ссылки

[1] Ho, C. H. and C. J. Lin. «Крупномасштабная линейная Поддержка Вектора регрессия». Journal of Машинное Обучение Research, Vol. 13, 2012, pp. 3323-3348.

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

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

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

[5] Шалев-Шварц, С., Я. Сингер, и Н. Сребру. Pegasos: Primal Estimated Sub-Gradient Solver for SVM (неопр.) (недоступная ссылка). Материалы 24-й Международной конференции по машинному обучению, ICML "07, 2007, стр. 807-814.

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

[7] Xiao, Lin. «Dual Aververaging Methods for Regularized Stochastic Learning and Online Optimization». Дж. Мач. Учись. Res., Vol. 11, 2010, pp. 2543-2596.

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

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

Введенный в R2016a