exponenta event banner

fitclinear

Соответствие модели линейной классификации объемным данным

Описание

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

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

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

пример

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

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

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

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

пример

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

пример

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

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

Примеры

свернуть все

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

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

load nlpdata

X является разреженной матрицей данных предиктора, и Y является категориальным вектором меток класса. В данных имеется более двух классов.

Определите метки, соответствующие страницам документации Toolbox™ статистики и машинного обучения.

Ystats = Y == 'stats';

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

rng(1); % For reproducibility 
[Mdl,FitInfo] = fitclinear(X,Ystats)
Mdl = 
  ClassificationLinear
      ResponseName: 'Y'
        ClassNames: [0 1]
    ScoreTransform: 'none'
              Beta: [34023x1 double]
              Bias: -1.0059
            Lambda: 3.1674e-05
           Learner: 'svm'


  Properties, Methods

FitInfo = struct with fields:
                    Lambda: 3.1674e-05
                 Objective: 5.3783e-04
                 PassLimit: 10
                 NumPasses: 10
                BatchLimit: []
             NumIterations: 238561
              GradientNorm: NaN
         GradientTolerance: 0
      RelativeChangeInBeta: 0.0562
             BetaTolerance: 1.0000e-04
             DeltaGradient: 1.4582
    DeltaGradientTolerance: 1
           TerminationCode: 0
         TerminationStatus: {'Iteration limit exceeded.'}
                     Alpha: [31572x1 double]
                   History: []
                   FitTime: 0.1894
                    Solver: {'dual'}

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

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

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

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

load nlpdata

X является разреженной матрицей данных предиктора, и Y является категориальным вектором меток класса. В данных имеется более двух классов.

Модели должны определять, содержится ли подсчет слов на веб-странице в документации Toolbox™ статистики и машинного обучения. Таким образом, определите метки, соответствующие страницам документации Toolbox™ статистики и машинного обучения.

Ystats = Y == 'stats';

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

Lambda = logspace(-6,-0.5,11);

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

X = X'; 
rng(10); % For reproducibility
CVMdl = fitclinear(X,Ystats,'ObservationsIn','columns','KFold',5,...
    'Learner','logistic','Solver','sparsa','Regularization','lasso',...
    'Lambda',Lambda,'GradientTolerance',1e-8)
CVMdl = 
  ClassificationPartitionedLinear
    CrossValidatedModel: 'Linear'
           ResponseName: 'Y'
        NumObservations: 31572
                  KFold: 5
              Partition: [1x1 cvpartition]
             ClassNames: [0 1]
         ScoreTransform: 'none'


  Properties, Methods

numCLModels = numel(CVMdl.Trained)
numCLModels = 5

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

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

Mdl1 = CVMdl.Trained{1}
Mdl1 = 
  ClassificationLinear
      ResponseName: 'Y'
        ClassNames: [0 1]
    ScoreTransform: 'logit'
              Beta: [34023x11 double]
              Bias: [1x11 double]
            Lambda: [1x11 double]
           Learner: 'logistic'


  Properties, Methods

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

Оценка кросс-проверенной ошибки классификации.

ce = kfoldLoss(CVMdl);

Потому что есть 11 сильных сторон регуляризации, ce является вектором 1 на 11 коэффициентов ошибок классификации.

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

Mdl = fitclinear(X,Ystats,'ObservationsIn','columns',...
    'Learner','logistic','Solver','sparsa','Regularization','lasso',...
    'Lambda',Lambda,'GradientTolerance',1e-8);
numNZCoeff = sum(Mdl.Beta~=0);

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

figure;
[h,hL1,hL2] = plotyy(log10(Lambda),log10(ce),...
    log10(Lambda),log10(numNZCoeff)); 
hL1.Marker = 'o';
hL2.Marker = 'o';
ylabel(h(1),'log_{10} classification error')
ylabel(h(2),'log_{10} nonzero-coefficient frequency')
xlabel('log_{10} Lambda')
title('Test-Sample Statistics')
hold off

Figure contains 2 axes. Axes 1 with title Test-Sample Statistics contains an object of type line. Axes 2 contains an object of type line.

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

idxFinal = 7;

Выберите модель из Mdl с выбранной силой регуляризации.

MdlFinal = selectModels(Mdl,idxFinal);

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

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

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

load nlpdata

X является разреженной матрицей данных предиктора, и Y является категориальным вектором меток класса. В данных имеется более двух классов.

Модели должны определять, содержится ли подсчет слов на веб-странице в документации Toolbox™ статистики и машинного обучения. Определите соответствующие метки.

X = X';
Ystats = Y == 'stats';

Оптимизировать классификацию с помощью 'auto' параметры.

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

rng default
Mdl = fitclinear(X,Ystats,'ObservationsIn','columns','Solver','sparsa',...
    'OptimizeHyperparameters','auto','HyperparameterOptimizationOptions',...
    struct('AcquisitionFunctionName','expected-improvement-plus'))
|=====================================================================================================|
| Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |       Lambda |      Learner |
|      | result |             | runtime     | (observed)  | (estim.)    |              |              |
|=====================================================================================================|
|    1 | Best   |    0.041619 |      7.9361 |    0.041619 |    0.041619 |     0.077903 |     logistic |
|    2 | Best   |  0.00076017 |      7.9167 |  0.00076017 |   0.0029067 |   2.1405e-09 |     logistic |
|    3 | Accept |    0.049221 |      8.6984 |  0.00076017 |  0.00078902 |      0.72101 |          svm |
|    4 | Accept |  0.00079184 |      9.4976 |  0.00076017 |  0.00078154 |   3.4734e-07 |          svm |
|    5 | Best   |  0.00072849 |      8.9874 |  0.00072849 |  0.00073116 |   1.1738e-08 |     logistic |
|    6 | Accept |  0.00085519 |      8.9501 |  0.00072849 |  0.00073307 |   2.5065e-09 |          svm |
|    7 | Accept |  0.00079184 |      10.705 |  0.00072849 |  0.00073512 |    3.212e-08 |          svm |
|    8 | Accept |  0.00088686 |      10.281 |  0.00072849 |  0.00073791 |   3.1717e-10 |          svm |
|    9 | Accept |  0.00076017 |      8.9367 |  0.00072849 |  0.00070971 |   3.1837e-10 |     logistic |
|   10 | Accept |  0.00079184 |      15.805 |  0.00072849 |   0.0006934 |   2.2804e-07 |     logistic |
|   11 | Accept |  0.00072849 |      7.5213 |  0.00072849 |  0.00067177 |   5.8465e-08 |     logistic |
|   12 | Accept |  0.00079184 |      7.7882 |  0.00072849 |  0.00067223 |   1.1295e-07 |          svm |
|   13 | Best   |  0.00069682 |      8.2314 |  0.00069682 |  0.00068288 |   6.1059e-08 |     logistic |
|   14 | Accept |  0.00069682 |      10.229 |  0.00069682 |  0.00068745 |    6.322e-08 |     logistic |
|   15 | Accept |  0.00072849 |      12.064 |  0.00069682 |  0.00068818 |   9.2613e-10 |     logistic |
|   16 | Accept |  0.00069682 |      11.695 |  0.00069682 |  0.00069047 |   6.6793e-08 |     logistic |
|   17 | Accept |  0.00072849 |       7.655 |  0.00069682 |  0.00069075 |     3.21e-10 |     logistic |
|   18 | Accept |   0.0012353 |      11.986 |  0.00069682 |  0.00069811 |   0.00083275 |          svm |
|   19 | Accept |  0.00076017 |      11.395 |  0.00069682 |  0.00069953 |   5.0781e-05 |          svm |
|   20 | Accept |  0.00085519 |      8.1292 |  0.00069682 |  0.00070008 |   0.00022104 |          svm |
|=====================================================================================================|
| Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |       Lambda |      Learner |
|      | result |             | runtime     | (observed)  | (estim.)    |              |              |
|=====================================================================================================|
|   21 | Accept |  0.00082351 |      13.535 |  0.00069682 |  0.00069992 |   4.5396e-06 |          svm |
|   22 | Accept |   0.0010769 |      27.561 |  0.00069682 |  0.00070804 |   4.9241e-06 |     logistic |
|   23 | Accept |   0.0010136 |      33.915 |  0.00069682 |  0.00070353 |   1.2534e-06 |     logistic |
|   24 | Accept |  0.00072849 |      7.8882 |  0.00069682 |  0.00070517 |   2.4564e-08 |     logistic |
|   25 | Accept |  0.00088686 |      10.864 |  0.00069682 |  0.00070528 |   1.6498e-05 |          svm |
|   26 | Accept |  0.00085519 |      8.7177 |  0.00069682 |  0.00070534 |   1.1571e-06 |          svm |
|   27 | Accept |  0.00079184 |      6.7623 |  0.00069682 |  0.00070543 |    1.021e-08 |          svm |
|   28 | Accept |  0.00076017 |      7.0401 |  0.00069682 |  0.00070556 |   6.9444e-10 |     logistic |
|   29 | Accept |  0.00076017 |      8.3586 |  0.00069682 |  0.00070535 |   5.7627e-09 |     logistic |
|   30 | Accept |  0.00076017 |      8.1972 |  0.00069682 |  0.00071141 |    3.123e-08 |     logistic |

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: 369.5861 seconds
Total objective function evaluation time: 327.2462

Best observed feasible point:
      Lambda      Learner 
    __________    ________

    6.1059e-08    logistic

Observed objective function value = 0.00069682
Estimated objective function value = 0.00071146
Function evaluation time = 8.2314

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

    5.8465e-08    logistic

Estimated objective function value = 0.00071141
Estimated function evaluation time = 9.4912
Mdl = 
  ClassificationLinear
      ResponseName: 'Y'
        ClassNames: [0 1]
    ScoreTransform: 'logit'
              Beta: [34023x1 double]
              Bias: -9.8590
            Lambda: 5.8465e-08
           Learner: 'logistic'


  Properties, Methods

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

свернуть все

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

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

Примечание

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

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

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

  • fitclinear поддерживает только двоичную классификацию. Также Y должны содержать ровно два отдельных класса, либо необходимо указать два класса для обучения с помощью 'ClassNames' аргумент пары имя-значение. Сведения о многоклассовом обучении см. в разделе fitcecoc.

  • Если Y является символьным массивом, то каждый элемент должен соответствовать одной строке массива.

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

  • Рекомендуется указывать порядок классов с помощью ClassNames аргумент пары имя-значение.

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

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

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

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

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

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

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

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

Переменная ответа должна быть категориальным, символьным или строковым массивом; логический или числовой вектор; или массив ячеек символьных векторов. Если Y является символьным массивом, то каждый элемент переменной ответа должен соответствовать одной строке массива.

Рекомендуется указывать порядок классов с помощью ClassNames аргумент «имя-значение».

Типы данных: 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.

Пример: 'ObservationsIn','columns','Learner','logistic','CrossVal','on' указывает, что столбцы матрицы предиктора соответствуют наблюдениям, для реализации логистической регрессии, для реализации 10-кратной перекрестной проверки.

Примечание

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

Опции линейной классификации

свернуть все

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

СтоимостьАлгоритмДиапазон ответаФункция потерь
'svm'Опорная векторная машинаy ∊ {-1,1}; 1 для положительного класса и -1 в противном случаеШарнир: ℓ[y,f (x)] = max [0,1 yf (x)]
'logistic'Логистическая регрессияТо же, что и 'svm'Отклонение (логистическое): ℓ[y,f (x)] = log {1 + exp [yf (x)]}

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

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

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

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

  • Модель SVM (см. Learner), штраф по гребню и X содержит более 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 является 'logistic', то пусть gj будет 1, если Y(j) является положительным классом, а в противном случае -1. Bias - средневзвешенное значение g для обучения или, для перекрестной проверки, для кратных наблюдений.

    • Если Learner является 'svm', то Bias равно 0.

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

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

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

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

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

СтоимостьОписание
0fitclinear не отображает диагностическую информацию.
1fitclinear периодически отображает и сохраняет значение целевой функции, величину градиента и другую диагностическую информацию. FitInfo.History содержит диагностическую информацию.
Любое другое положительное целое числоfitclinear отображает и сохраняет диагностическую информацию в каждой итерации оптимизации. 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. fitclinear определяет скорость обучения для итерации t, γ t, используя

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

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

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

    • Если Solver является 'asgd', то c равно 0,75 [7].

  • Если 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 - количество предикторов, используемых для обучения модели.

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

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

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

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

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

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

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

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

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

Если ClassNames является символьным массивом, то каждый элемент должен соответствовать одной строке массива.

Использовать ClassNames кому:

  • Укажите порядок занятий во время обучения.

  • Укажите порядок любого измерения входного или выходного аргумента, соответствующего порядку класса. Например, использовать ClassNames для указания порядка размеров Cost или порядок столбцов классификационных баллов, возвращенных predict.

  • Выберите подмножество классов для обучения. Например, предположим, что набор всех различных имен классов в Y является {'a','b','c'}. Обучение модели с использованием наблюдений из классов 'a' и 'c' только, укажите 'ClassNames',{'a','c'}.

Значение по умолчанию для ClassNames - набор всех различающихся имен классов в переменной ответа в Tbl или Y.

Пример: 'ClassNames',{'b','g'}

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

Стоимость неправильной классификации, указанная как разделенная запятыми пара, состоящая из 'Cost' и квадратную матрицу или структуру.

  • При указании квадратной матрицы cost ('Cost',cost), то cost(i,j) - стоимость классификации точки по классу j если его истинный класс i. То есть строки соответствуют истинному классу, а столбцы - прогнозируемому классу. Определение порядка классов для соответствующих строк и столбцов cost, используйте ClassNames аргумент пары имя-значение.

  • При указании структуры S ('Cost',S), то он должен иметь два поля:

    • S.ClassNames, который содержит имена классов в качестве переменной того же типа данных, что и Y

    • S.ClassificationCosts, которая содержит матрицу затрат со строками и столбцами, упорядоченными как в S.ClassNames

Значение по умолчанию для Cost является ones(K) – eye(K), где K - количество различных классов.

fitclinear использование Cost для корректировки вероятностей предыдущего класса, указанных в Prior. Затем, fitclinear использует скорректированные предыдущие вероятности для обучения и сбрасывает матрицу затрат до значения по умолчанию.

Пример: 'Cost',[0 2; 1 0]

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

Имена переменных предиктора, заданные как строковый массив уникальных имен или массив ячеек уникальных векторов символов. Функциональные возможности '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' чтобы выбрать, какие переменные предиктора использовать в обучении. То есть fitclinear использует только переменные предиктора в PredictorNames и переменную ответа во время обучения.

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

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

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

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

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

Предыдущие вероятности для каждого класса, указанные как пара, разделенная запятыми, состоящая из 'Prior' и 'empirical', 'uniform', числовой вектор или структурный массив.

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

СтоимостьОписание
'empirical'Предшествующие вероятности класса являются относительными частотами класса в Y.
'uniform'Все предшествующие вероятности класса равны 1/K, где K - количество классов.
числовой векторКаждый элемент является классом предшествующей вероятности. Упорядочить элементы в соответствии с их порядком в Y. При указании заказа с помощью 'ClassNames' аргумент пары имя-значение, затем упорядочить элементы соответствующим образом.
структурный массив

Структура S с двумя полями:

  • S.ClassNames содержит имена классов в качестве переменной того же типа, что и Y.

  • S.ClassProbs содержит вектор соответствующих предшествующих вероятностей.

fitclinear нормализует предыдущие вероятности в Prior для суммирования в 1.

Пример: 'Prior',struct('ClassNames',{{'setosa','versicolor'}},'ClassProbs',1:2)

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

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

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

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

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

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

Преобразование оценки, указанное как вектор символа, скаляр строки или дескриптор функции.

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

СтоимостьОписание
'doublelogit'1/( 1 + e-2x)
'invlogit'log (x/( 1 - x))
'ismax'Устанавливает балл для класса с наибольшим баллом в 1 и устанавливает балл для всех остальных классов в 0
'logit'1/( 1 + e-x)
'none' или 'identity'x (без преобразования)
'sign'-1 для x < 0
0 для x = 0
1 для x > 0
'symmetric'2x – 1
'symmetricismax'Устанавливает балл для класса с наибольшим баллом в 1 и устанавливает балл для всех остальных классов в -1
'symmetriclogit'2/( 1 + e-x) - 1

Для функции MATLAB или определяемой функции используйте ее дескриптор функции для преобразования оценки. Дескриптор функции должен принимать матрицу (исходные баллы) и возвращать матрицу того же размера (преобразованные баллы).

Пример: 'ScoreTransform','logit'

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

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

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

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

Программное обеспечение нормализуется Weights для суммирования значения предшествующей вероятности в соответствующем классе.

Типы данных: 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' и положительное целое число.

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

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

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

Пример: '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{2} должен быть подмножеством всех отдельных меток Y. Если ValidationData{1} является таблицей, то ValidationData{2} может быть именем переменной ответа в таблице. Если вы хотите использовать то же самое ResponseVarName или formula, можно указать ValidationData{2} как [].

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

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

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

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

Двойные средства управления сходимостью SGD

свернуть все

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

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

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

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

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

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

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

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

  • Если программное обеспечение сходится для последнего решателя, указанного в Solver, то оптимизация заканчивается. В противном случае программа использует следующий решатель, указанный в 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{2} должен быть подмножеством всех отдельных меток Y. Если 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{2} должен быть подмножеством всех отдельных меток Y. Если 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.

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

Примечание

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

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

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

  • Learnerfitclinear поиск среди 'svm' и 'logistic'.

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

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

load fisheriris
params = hyperparameters('fitclinear',meas,species);
params(1).Range = [1e-4,1e6];

Проход 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

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

свернуть все

Обученная модель линейной классификации, возвращенная как ClassificationLinear объект модели или ClassificationPartitionedLinear объект модели с перекрестной проверкой.

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

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

Примечание

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

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

Поля определяют конечные значения или параметры пары «имя-значение», например: 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'Таблица используемых гиперпараметров, наблюдаемые значения целевой функции (потеря перекрестной проверки) и ранг наблюдений от самого низкого (лучший) до самого высокого (худший)

Подробнее

свернуть все

Теплый старт

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

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

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

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

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

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

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

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

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

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

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

Алгоритмы

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

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

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

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

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

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

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

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

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

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

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

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

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

Ссылки

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

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

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

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

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

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

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

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

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