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 является категориальным вектором меток классов. В данных более двух классов.

Идентифицируйте метки, которые соответствуют веб-страницам Statistics and Machine Learning Toolbox™ документации.

Ystats = Y == 'stats';

Обучите двоичную, линейную модель классификации, которая может идентифицировать, является ли слово счетчиком на веб-странице документации из документации Statistics and Machine Learning 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.

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

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

load nlpdata

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

Модели должны определять, получено ли количество слов на веб-странице из документации Statistics and Machine Learning Toolbox™. Итак, идентифицируйте метки, которые соответствуют веб-страницам документации Statistics and Machine Learning 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 реализует 5-кратную перекрестную валидацию, 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 является категориальным вектором меток классов. В данных более двух классов.

Модели должны определять, получено ли количество слов на веб-странице из документации Statistics and Machine Learning Toolbox™. Идентифицируйте соответствующие метки.

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

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

Для воспроизводимости установите случайный seed и используйте '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)=xβ+b.

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

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

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

ЗначениеАлгоритмОбласть значений откликаФункция потерь
'svm'Поддерживайте векторную машину<reservedrangesplaceholder0>  {-1,1}; 1 для положительного класса и -1 в противном случаеШарнир: [y,f(x)]=max[0,1yf(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) штраф: λ2j=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 -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 является '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 должно быть true.

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

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

Если fitclinear использует подмножество входа переменных в качестве предикторов, затем функция индексирует предикторы, используя только подмножество. The '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 если его класс true i. То есть строки соответствуют истинному классу, а столбцы соответствуют предсказанному классу. Чтобы задать порядок классов для соответствующих строк и столбцов cost, используйте ClassNames аргумент пары "имя-значение".

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

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

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

Значение по умолчанию для Cost это таковые (K) - глаз (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'журнал (x/( 1 - x))
'ismax'Устанавливает счет для класса с самым большим счетом равным 1 и устанавливает счета для всех других классов равным 0
'logit'1/(1 + ex)
'none' или 'identity'x (без преобразования)
'sign'-1 для x < 0
0 для x = 0
1 для x > 0
'symmetric'2 x – 1
'symmetricismax'Устанавливает счет для класса с самым большим счетом равным 1 и устанавливает счета для всех других классов равной -1
'symmetriclogit'2/(1 + ex) – 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' и 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' и положительное целое число.

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

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

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

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

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

Допуск градиента-разности между верхним и нижним бассейном Каруш-Кун-Такер (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=[β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{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'.

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

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

Передайте 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

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

свернуть все

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

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

Подробнее о

свернуть все

Теплый старт

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

Алгоритмы

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

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

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

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

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

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

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

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

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

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

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

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

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

Ссылки

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

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

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

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

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

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

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

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

Введенный в R2016a