fitrlinear

Подходящая модель линейной регрессии к высоко-размерным данным

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

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

Синтаксис

Mdl = fitrlinear(X,Y)
Mdl = fitrlinear(X,Y,Name,Value)
[Mdl,FitInfo] = fitrlinear(___)
[Mdl,FitInfo,HyperparameterOptimizationResults] = fitrlinear(___)

Описание

пример

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

пример

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

пример

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

пример

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

Примеры

свернуть все

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

Моделируйте 10 000 наблюдений из этой модели

y=x100+2x200+e.

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

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

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

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

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


  Properties, Methods

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

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

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

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

Моделируйте 10 000 наблюдений из этой модели

y=x100+2x200+e.

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

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

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

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

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

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

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

numCLModels = numel(CVMdl.Trained)
numCLModels = 5

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

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

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


  Properties, Methods

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

Оцените перекрестный подтвержденный MSE.

mse = kfoldLoss(CVMdl);

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

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

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

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

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

idxFinal = 10;

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

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


  Properties, Methods

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

   100
   200

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

    1.0051
    1.9965

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

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

y=x100+2x200+e.

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

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

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

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

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

hyperopts = struct('AcquisitionFunctionName','expected-improvement-plus');
[Mdl,FitInfo,HyperparameterOptimizationResults] = fitrlinear(X,Y,...
    'OptimizeHyperparameters','auto',...
    'HyperparameterOptimizationOptions',hyperopts)

|=====================================================================================================|
| Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |       Lambda |      Learner |
|      | result |             | runtime     | (observed)  | (estim.)    |              |              |
|=====================================================================================================|
|    1 | Best   |     0.16029 |      1.4446 |     0.16029 |     0.16029 |   2.4206e-09 |          svm |
|    2 | Best   |     0.14496 |     0.57524 |     0.14496 |     0.14601 |     0.001807 |          svm |
|    3 | Best   |     0.13879 |     0.43999 |     0.13879 |     0.14065 |   2.4681e-09 | leastsquares |
|    4 | Best   |       0.115 |     0.42829 |       0.115 |     0.11501 |     0.021027 | leastsquares |
|    5 | Accept |     0.44352 |     0.42217 |       0.115 |      0.1159 |       4.6795 | leastsquares |
|    6 | Best   |     0.11025 |     0.51062 |     0.11025 |     0.11024 |     0.010671 | leastsquares |
|    7 | Accept |     0.13222 |     0.40441 |     0.11025 |     0.11024 |   8.6067e-08 | leastsquares |
|    8 | Accept |     0.13262 |     0.37491 |     0.11025 |     0.11023 |   8.5109e-05 | leastsquares |
|    9 | Accept |     0.13543 |     0.40664 |     0.11025 |     0.11021 |   2.7562e-06 | leastsquares |
|   10 | Accept |     0.15751 |     0.54019 |     0.11025 |     0.11022 |   5.0559e-06 |          svm |
|   11 | Accept |     0.40673 |     0.59473 |     0.11025 |      0.1102 |      0.52074 |          svm |
|   12 | Accept |     0.16057 |      0.5041 |     0.11025 |      0.1102 |   0.00014292 |          svm |
|   13 | Accept |     0.16105 |     0.75763 |     0.11025 |     0.11018 |   1.0079e-07 |          svm |
|   14 | Accept |     0.12763 |     0.37927 |     0.11025 |     0.11019 |    0.0012085 | leastsquares |
|   15 | Accept |     0.13504 |     0.31481 |     0.11025 |     0.11019 |   1.3981e-08 | leastsquares |
|   16 | Accept |     0.11041 |     0.31867 |     0.11025 |     0.11026 |    0.0093968 | leastsquares |
|   17 | Best   |     0.10954 |     0.30385 |     0.10954 |     0.11003 |     0.010393 | leastsquares |
|   18 | Accept |     0.10998 |      0.3186 |     0.10954 |     0.11002 |     0.010254 | leastsquares |
|   19 | Accept |     0.45314 |     0.37556 |     0.10954 |     0.11001 |       9.9932 |          svm |
|   20 | Best   |     0.10753 |     0.46093 |     0.10753 |     0.10759 |     0.022576 |          svm |
|=====================================================================================================|
| Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |       Lambda |      Learner |
|      | result |             | runtime     | (observed)  | (estim.)    |              |              |
|=====================================================================================================|
|   21 | Best   |     0.10737 |     0.40389 |     0.10737 |     0.10728 |     0.010171 |          svm |
|   22 | Accept |     0.13448 |     0.37006 |     0.10737 |     0.10727 |   1.5344e-05 | leastsquares |
|   23 | Best   |     0.10645 |     0.61087 |     0.10645 |     0.10565 |     0.015495 |          svm |
|   24 | Accept |     0.13598 |     0.32091 |     0.10645 |     0.10559 |   4.5984e-07 | leastsquares |
|   25 | Accept |     0.15962 |     0.49945 |     0.10645 |     0.10556 |   1.4302e-08 |          svm |
|   26 | Accept |     0.10689 |     0.66698 |     0.10645 |     0.10616 |     0.015391 |          svm |
|   27 | Accept |     0.13748 |     0.33758 |     0.10645 |     0.10614 |    1.001e-09 | leastsquares |
|   28 | Accept |     0.10692 |      0.5687 |     0.10645 |     0.10639 |     0.015761 |          svm |
|   29 | Accept |     0.10681 |     0.49638 |     0.10645 |     0.10649 |     0.015777 |          svm |
|   30 | Accept |     0.34314 |     0.41078 |     0.10645 |     0.10651 |      0.39671 | leastsquares |

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

Best observed feasible point:
     Lambda     Learner
    ________    _______

    0.015495      svm  

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

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

    0.015777      svm  

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


  Properties, Methods

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

HyperparameterOptimizationResults = 
  BayesianOptimization with properties:

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

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

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

свернуть все

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

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

Примечание

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

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

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

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

Примечание

fitrlinear удаляет недостающие наблюдения, то есть, наблюдения с любой из этих характеристик:

  • Элементы NaN в ответе (Y или ValidationData {2})

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

  • Значение NaN или вес 0 (Weights или ValidationData{3})

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

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

Примечание

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

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

свернуть все

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

Значением Epsilon по умолчанию является iqr(Y)/13.49, который является оценкой стандартного отклонения с помощью межквартильного размаха переменной отклика Y. Если iqr(Y) равен нулю, то значение Epsilon по умолчанию 0.1.

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

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

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

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

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

    • В противном случае n является учебным объемом выборки.

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

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

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

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

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

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

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

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

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

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

  • b является скалярным смещением.

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

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

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

Примечание

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

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

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

ЗначениеОписание
'lasso'Лассо (L1) штраф: λj=1p|βj|
'ridge'Гребень (L2) штраф: λ2j=1pβj2

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

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

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

Совет

  • Для выбора переменной прогноза задайте 'lasso'.

  • Для точности оптимизации задайте 'ridge'.

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

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

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

Если вы задаете:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  2. Вычисляет невязки.

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

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

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

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

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

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

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

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

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

свернуть все

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

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

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

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

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

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

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

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

    • λ является значением Lambda.

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

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

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

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

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

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

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

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

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

Если OptimizeLearnRate является 'true', то:

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

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

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

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

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

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

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

свернуть все

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

fitrlinear нормирует Weights, чтобы суммировать к 1.

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

Имя переменной отклика, заданное как пара, разделенная запятой, состоящая из 'ResponseName' и вектора символов или скаляра строки.

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

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

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

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

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

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

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

Опции перекрестной проверки

свернуть все

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

свернуть все

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

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

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

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

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

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

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

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

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

Пусть Bt=[βtbt], то есть, вектор коэффициентов и смещения называет в итерации оптимизации t. Если BtBt1Bt2<BetaTolerance, затем оптимизация останавливается.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • ValidationData(2) должен содержать массив ответов m с длиной, соответствующей количеству наблюдений в ValidationData{1}.

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

Если вы задаете ValidationData, то, чтобы отобразить потерю валидации в командной строке, задают значение, больше, чем 0 для Verbose.

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

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

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

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

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

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

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

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

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

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

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

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

свернуть все

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

Пусть Bt=[βtbt], то есть, вектор коэффициентов и смещения называет в итерации оптимизации t. Если BtBt1Bt2<BetaTolerance, затем оптимизация останавливается.

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

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

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

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

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

  • Если значение нарушителей KKT является меньше, чем DeltaGradientTolerance, то fitrlinear отключает оптимизацию.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • ValidationData(2) должен содержать массив ответов m с длиной, соответствующей количеству наблюдений в ValidationData{1}.

  • Опционально, ValidationData(3) может содержать m - размерный числовой вектор весов наблюдения. Программное обеспечение нормирует веса с данными о валидации так, чтобы они суммировали к 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(1) должен содержать m-by-p или p-by-m полная или разреженная матрица данных о предикторе, которые имеют ту же ориентацию как X. Переменные прогноза в данных тренировки X и ValidationData{1} должны соответствовать. Количество наблюдений в обоих наборах может отличаться.

  • ValidationData(2) должен содержать массив ответов m с длиной, соответствующей количеству наблюдений в ValidationData{1}.

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

Если вы задаете ValidationData, то, чтобы отобразить потерю валидации в командной строке, задают значение, больше, чем 0 для Verbose.

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

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

Гипероптимизация параметров управления

свернуть все

Параметры, чтобы оптимизировать, заданный как пара, разделенная запятой, состоящая из 'OptimizeHyperparameters' и одно из следующего:

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

  • 'auto' Используйте {'Lambda','Learner'}.

  • все Оптимизируйте все имеющие право параметры.

  • Массив строк или массив ячеек имеющих право названий параметра.

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

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

Примечание

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

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

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

  • Learnerfitrlinear ищет среди 'svm' и 'leastsquares'.

  • Regularizationfitrlinear ищет среди 'ridge' и 'lasso'.

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

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

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

По умолчанию итеративное отображение появляется в командной строке, и графики появляются согласно количеству гиперпараметров в оптимизации. Для оптимизации и графиков, целевая функция является журналом (1 + потеря перекрестной проверки) для регрессии и misclassification уровня для классификации. Чтобы управлять итеративным отображением, установите поле 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
Используйте не больше, чем одни из следующих трех имен полей.
CVPartitionОбъект cvpartition, как создано cvpartition.'Kfold',5, если вы не задаете поля перекрестной проверки
HoldoutСкаляр в области значений (0,1), представляющий часть затяжки.
KfoldЦелое число, больше, чем 1.

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

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

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

свернуть все

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

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

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

Примечание

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

Детали оптимизации, возвращенные как массив структур.

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

Эта таблица описывает некоторые известные поля.

Поле Описание
TerminationStatus
  • Причина завершения оптимизации

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

FitTimeПрошедшее, тактовое стеной время в секундах
History

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

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

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

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

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

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

Примечание

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

Больше о

свернуть все

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Советы

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

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

    • 'sgd'

    • 'asgd'

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

    • {'sgd','lbfgs'}

    • {'asgd','lbfgs'}

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

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

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

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

    • 'sgd'

    • 'asgd'

    • 'sparsa'

    • {'sgd','sparsa'}

    • {'asgd','sparsa'}

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

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

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

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

    • Задайте 'PostFitBias',true.

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

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

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

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

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

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

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

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

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

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

Алгоритмы

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

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

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

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

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

    1. fitrlinear случайным образом делит X и Y согласно стандартной программе перекрестной проверки, которую вы выбираете.

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

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

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

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

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

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

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

Ссылки

[1] Хо, C. H. и К. Дж. Лин. “Крупномасштабная Линейная Регрессия Вектора Поддержки”. Журнал Исследования Машинного обучения, Издания 13, 2012, стр 3323–3348.

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

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

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

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

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

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

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

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

Введенный в R2016a