fitclinear

Соответствуйте бинарному линейному классификатору к высоко-размерным данным

Описание

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

Для сокращения времени вычисления на высоко-размерном наборе данных, который включает много переменных предикторов, обучите линейную модель классификации при помощи 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.0855
                    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: [-13.4824 -13.4824 -13.4824 -13.4824 -13.4824 ... ]
            Lambda: [1.0000e-06 3.5481e-06 1.2589e-05 4.4668e-05 ... ]
           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 objects. Axes object 1 with title Test-Sample Statistics contains an object of type line. Axes object 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.93 |    0.041619 |    0.041619 |     0.077903 |     logistic |
|    2 | Best   |  0.00076017 |      10.549 |  0.00076017 |   0.0029067 |   2.1405e-09 |     logistic |
|    3 | Accept |    0.049221 |      15.453 |  0.00076017 |  0.00078902 |      0.72101 |          svm |
|    4 | Accept |  0.00079184 |      14.093 |  0.00076017 |  0.00078154 |   3.4734e-07 |          svm |
|    5 | Best   |  0.00072849 |      12.697 |  0.00072849 |  0.00073116 |   1.1738e-08 |     logistic |
|    6 | Accept |  0.00085519 |      7.9664 |  0.00072849 |  0.00073307 |   2.5065e-09 |          svm |
|    7 | Accept |  0.00079184 |      6.8412 |  0.00072849 |  0.00073512 |    3.212e-08 |          svm |
|    8 | Accept |  0.00088686 |      7.9893 |  0.00072849 |  0.00073791 |   3.1717e-10 |          svm |
|    9 | Accept |  0.00076017 |       5.971 |  0.00072849 |  0.00070971 |   3.1837e-10 |     logistic |
|   10 | Accept |  0.00076017 |      11.034 |  0.00072849 |  0.00069272 |   2.2804e-07 |     logistic |
|   11 | Best   |  0.00069682 |      5.3005 |  0.00069682 |  0.00064547 |   6.0558e-08 |     logistic |
|   12 | Accept |  0.00079184 |        5.26 |  0.00069682 |  0.00064605 |   1.1295e-07 |          svm |
|   13 | Accept |  0.00072849 |      4.9063 |  0.00069682 |  0.00067987 |   6.4755e-08 |     logistic |
|   14 | Best   |  0.00066515 |      4.9041 |  0.00066515 |  0.00067583 |   7.0266e-08 |     logistic |
|   15 | Accept |  0.00072849 |      4.5185 |  0.00066515 |  0.00068804 |   7.2289e-08 |     logistic |
|   16 | Accept |  0.00079184 |      4.0554 |  0.00066515 |  0.00068785 |   9.1951e-10 |     logistic |
|   17 | Accept |   0.0012036 |      5.3466 |  0.00066515 |  0.00069635 |   0.00078545 |          svm |
|   18 | Accept |  0.00072849 |      4.3428 |  0.00066515 |  0.00069798 |   4.9165e-05 |          svm |
|   19 | Accept |  0.00091854 |      3.5778 |  0.00066515 |  0.00069884 |   0.00020927 |          svm |
|   20 | Accept |  0.00079184 |      7.1201 |  0.00066515 |  0.00069872 |   4.8725e-06 |          svm |
|=====================================================================================================|
| Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |       Lambda |      Learner |
|      | result |             | runtime     | (observed)  | (estim.)    |              |              |
|=====================================================================================================|
|   21 | Accept |   0.0010769 |      27.705 |  0.00066515 |  0.00070926 |   4.7586e-06 |     logistic |
|   22 | Accept |  0.00095021 |        20.2 |  0.00066515 |  0.00070506 |   1.1788e-06 |     logistic |
|   23 | Accept |  0.00079184 |      6.2016 |  0.00066515 |  0.00070516 |   1.6638e-05 |          svm |
|   24 | Accept |  0.00079184 |      4.2422 |  0.00066515 |   0.0007121 |   2.4661e-08 |     logistic |
|   25 | Accept |  0.00082351 |      5.8562 |  0.00066515 |   0.0007122 |   1.2811e-06 |          svm |
|   26 | Accept |  0.00079184 |      4.0327 |  0.00066515 |  0.00071231 |   1.0216e-08 |          svm |
|   27 | Accept |  0.00076017 |      4.3869 |  0.00066515 |  0.00071221 |   5.2791e-09 |     logistic |
|   28 | Accept |  0.00076017 |       4.807 |  0.00066515 |   0.0007178 |    1.105e-07 |     logistic |
|   29 | Accept |  0.00072849 |      3.9439 |  0.00066515 |  0.00071773 |    3.175e-10 |     logistic |
|   30 | Accept |  0.00072849 |      3.9844 |  0.00066515 |  0.00071801 |   4.1391e-08 |     logistic |

Figure contains an axes object. The axes object 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 object. The axes object 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: 258.2226 seconds
Total objective function evaluation time: 235.2163

Best observed feasible point:
      Lambda      Learner 
    __________    ________

    7.0266e-08    logistic

Observed objective function value = 0.00066515
Estimated objective function value = 0.00071799
Function evaluation time = 4.9041

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

    6.4755e-08    logistic

Estimated objective function value = 0.00071801
Estimated function evaluation time = 6.6809
Mdl = 
  ClassificationLinear
      ResponseName: 'Y'
        ClassNames: [0 1]
    ScoreTransform: 'logit'
              Beta: [34023x1 double]
              Bias: -10.0035
            Lambda: 6.4755e-08
           Learner: 'logistic'


  Properties, Methods

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

свернуть все

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

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

Примечание

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

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

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

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

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

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

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

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

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

Опционально, Tbl может содержать столбец для переменной отклика и столбец для весов наблюдения.

  • Переменная отклика должна быть категориальным, символом, или массивом строк, логическим или числовым вектором или массивом ячеек из символьных векторов.

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

    • Хорошая практика должна задать порядок классов в переменной отклика при помощи ClassNames аргумент значения имени.

  • Столбец для весов должен быть числовым вектором.

  • Необходимо задать переменную отклика в Tbl при помощи ResponseVarName или formula и задайте веса наблюдения в Tbl при помощи Weights.

    • Задайте переменную отклика при помощи ResponseVarNamefitclinear использует остающиеся переменные в качестве предикторов. Использовать подмножество остающихся переменных в Tbl как предикторы, задайте переменные предикторы при помощи PredictorNames.

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

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

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

Имя переменной отклика в виде имени переменной в Tbl.

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

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

Хорошая практика должна задать порядок классов при помощи ClassNames аргумент значения имени.

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

Объяснительная модель переменной отклика и подмножество переменных предикторов в виде вектора символов или строкового скаляра в форме "Y~x1+x2+x3". В этой форме, Y представляет переменную отклика и x1x2 , и 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 имя аргумента и 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'Машина опорных векторовy ∊ {-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'Stochastic gradient descent (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, программное обеспечение использует решения решателя j как горячий запуск для решателя j + 1.

Пример: {'sgd' 'lbfgs'} применяет SGD, чтобы решить цель и использует решение в качестве горячего запуска для LBFGS.

Совет

  • SGD и ASGD могут решить целевую функцию более быстро, чем другие решатели, тогда как LBFGS и SpaRSA могут дать к более точным решениям, чем другие решатели. Комбинации решателя как {'sgd' 'lbfgs'} и {'sgd' 'sparsa'} может сбалансировать скорость оптимизации и точность.

  • При выборе между SGD и ASGD, полагайте что:

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

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

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

    • 'sgd'

    • 'asgd'

    • 'dual' если Learner 'svm'

    • 'lbfgs'

    • {'sgd','lbfgs'}

    • {'asgd','lbfgs'}

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

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

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

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

    • 'sgd'

    • 'asgd'

    • 'sparsa'

    • {'sgd','sparsa'}

    • {'asgd','sparsa'}

Пример: '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, программное обеспечение использует Бету (: 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, программное обеспечение использует Смещение (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

Типы данных: логический

Отметьте, чтобы соответствовать линейной точке пересечения модели после оптимизации в виде разделенной запятой пары, состоящей из 'PostFitBias' и true или false.

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

Оценить b, программное обеспечение:

  1. Оценки β и b с помощью модели

  2. Оценочные классификационные оценки

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

Если вы задаете true, затем FitBias должно быть верным.

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

Типы данных: логический

Уровень многословия в виде разделенной запятой пары, состоящей из '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

Типы данных: логический

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

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

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

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

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

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

    • S.ClassNames, который содержит имена классов как переменную совпадающего типа данных как 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"2x – 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' и cvpartition объект раздела, как создано cvpartition. Объект раздела задает тип перекрестной проверки, и также индексации для наборов обучения и валидации.

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

Часть данных, используемых для валидации затяжки в виде разделенной запятой пары, состоящей из 'Holdout' и скалярное значение в области значений (0,1). Если вы задаете 'Затяжку', 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- 1 вектор ячейки в Trained свойство перекрестной подтвержденной модели.

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

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

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

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

свернуть все

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

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

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

    • Если вы задаете несколько решателей и используете (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

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

  • Если величина нарушителей KKT меньше 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

Размер буфера истории для приближения Гессиана в виде разделенной запятой пары, состоящей из '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' замените любые значения, вы задаете использование других аргументов name-value. Например, установка 'OptimizeHyperparameters' к 'auto' причины fitclinear оптимизировать гиперпараметры, соответствующие '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.

По умолчанию итеративное отображение появляется в командной строке, и графики появляются согласно количеству гиперпараметров в оптимизации. Для оптимизации и графиков, целевая функция является misclassification уровнем. Чтобы управлять итеративным отображением, установите Verbose поле 'HyperparameterOptimizationOptions' аргумент значения имени. Чтобы управлять графиками, установите ShowPlots поле 'HyperparameterOptimizationOptions' аргумент значения имени.

Для примера смотрите, Оптимизируют Линейный Классификатор.

Пример: 'OptimizeHyperparameters','auto'

Опции для оптимизации в виде структуры. Этот аргумент изменяет эффект OptimizeHyperparameters аргумент значения имени. Все поля в структуре являются дополнительными.

Имя поляЗначенияЗначение по умолчанию
Optimizer
  • 'bayesopt' — Используйте Байесовую оптимизацию. Внутренне, эта установка вызовы bayesopt.

  • 'gridsearch' — Используйте поиск сетки с NumGridDivisions значения на размерность.

  • 'randomsearch' — Поиск наугад среди MaxObjectiveEvaluations 'points'.

'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'), затем это поле также строит лучшее предполагаемое значение целевой функции. Лучшие наблюдаемые значения целевой функции и лучше всего оцененные значения целевой функции соответствуют значениям в BestSoFar (observed) и BestSoFar (estim.) столбцы итеративного отображения, соответственно. Можно найти эти значения в свойствах ObjectiveMinimumTrace и EstimatedObjectiveMinimumTrace из Mdl.HyperparameterOptimizationResults. Если проблема включает один или два параметра оптимизации для Байесовой оптимизации, то 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
Используйте не больше, чем одну из следующих трех опций.
CVPartitioncvpartition объект, как создано 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 типы решателя хранилищ с помощью целочисленного кодирования.

Целое числоРешатель
1SGD
2ASGD
3Двойной SGD для SVM
4LBFGS
5BFGS
6SpaRSA

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

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

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

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

Больше о

свернуть все

Горячий запуск

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

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

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

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

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

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

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

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

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

  • Упорядоченные наименьшие квадраты с помощью штрафа лассо: lasso

  • Гребенчатая регрессия: ridge или lasso

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

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

  • Упорядоченная логистическая регрессия с помощью штрафа лассо: lassoglm

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

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

Советы

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

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

    • Задайте '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. Можно определить качество перекрестной подтвержденной модели. Например:

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

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

Ссылки

[1] Се, C. J. К. В. Чанг, К. Дж. Лин, С. С. Кирти и С. Сандарарэджэн. “Двойной Координатный Метод Спуска для Крупномасштабного Линейного SVM”. Продолжения 25-й Международной конференции по вопросам Машинного обучения, ICML ’08, 2001, стр 408–415.

[2] Лэнгфорд, J., Л. Ли и Т. Чжан. “Разреженное Дистанционное обучение Через Усеченный Градиент”. Дж. Мах. Учиться. Res., Издание 10, 2009, стр 777–801.

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

[4] Шалев-Шварц, S., И. Зингер и Н. Сребро. “Pegasos: Основной Предполагаемый Решатель Подградиента для SVM”. Продолжения 24-й Международной конференции по вопросам Машинного обучения, ICML ’07, 2007, стр 807–814.

[5] Мастер, S. J. Р. Д. Ноуок и М. А. Т. Фигередо. “Разреженная Реконструкция Отделимым Приближением”. Сигнал сделки Proc., Издание 57, № 7, 2009, стр 2479–2493.

[6] Сяо, Лин. “Двойные Методы усреднения для Упорядоченного Стохастического Изучения и Онлайновой Оптимизации”. Дж. Мах. Учиться. Res., Издание 11, 2010, стр 2543–2596.

[7] Сюй, Вэй. “К Оптимальному Один Крупный масштаб Передачи Изучение с Усредненным Стохастическим Градиентным спуском”. CoRR, abs/1107.2490, 2011.

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

Введенный в R2016a