resume

Возобновите обучение машины опорных векторов (SVM)

Описание

пример

UpdatedSVMModel = resume(SVMModel,numIter) возвращает обновленный классификатор машины опорных векторов (SVM) UpdatedSVMModel путем настройки классификатора SVM SVMModel для numIter больше итераций. Как SVMModelобновленный классификатор SVM представляет собой ClassificationSVM классификатор.

resume продолжает применять набор опций обучения, когда SVMModel был обучен с fitcsvm.

пример

UpdatedSVMModel = resume(SVMModel,numIter,Name,Value) возвращает UpdatedSVMModel с дополнительными опциями, заданными одним или несколькими аргументами пары "имя-значение". Для примера можно задать уровень подробностей.

Примеры

свернуть все

Обучите классификатор SVM и намеренно заставьте решатель не сходиться к решению. Затем возобновите обучение классификатора, не перезапуская весь процесс обучения.

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

load ionosphere
rng(1); % For reproducibility

Обучите классификатор SVM. Задайте, что в стандартной программе оптимизации используется самое большее 50 итераций.

SVMModel = fitcsvm(X,Y,'IterationLimit',50);
DidConverge = SVMModel.ConvergenceInfo.Converged
DidConverge = logical
   0

Reason = SVMModel.ConvergenceInfo.ReasonForConvergence
Reason = 
'NoConvergence'

DidConverge = 0 указывает, что стандартная программа оптимизации не сходилась к решению. Reason указывает причину, по которой стандартная программа не сходилась. Поэтому SVMModel является частично обученным классификатором SVM.

Возобновите обучение классификатора SVM для другого 1500 итераций.

UpdatedSVMModel = resume(SVMModel,1500);
DidConverge = UpdatedSVMModel.ConvergenceInfo.Converged
DidConverge = logical
   1

Reason = UpdatedSVMModel.ConvergenceInfo.ReasonForConvergence
Reason = 
'DeltaGradient'

DidConverge указывает, что стандартная программа оптимизации сходится к решению. Reason указывает, что различие градиентов (DeltaGradient) достигла своего уровня допуска (DeltaGradientTolerance). Поэтому SVMModel - полностью обученный классификатор SVM.

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

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

load ionosphere

Обучите классификатор SVM. Задайте, что в стандартной программе оптимизации используется самое большее 100 итераций. Следите за алгоритмом, указывая, что программное обеспечение печатает диагностическую информацию каждый 50 итераций.

SVMModel = fitcsvm(X,Y,'IterationLimit',100,'Verbose',1,'NumPrint',50);
|===================================================================================================================================|
|   Iteration  | Set  |   Set Size   |  Feasibility  |     Delta     |      KKT      |  Number of   |   Objective   |   Constraint  |
|              |      |              |      Gap      |    Gradient   |   Violation   |  Supp. Vec.  |               |   Violation   |
|===================================================================================================================================|
|            0 |active|          351 |  9.971591e-01 |  2.000000e+00 |  1.000000e+00 |            0 |  0.000000e+00 |  0.000000e+00 |
|           50 |active|          351 |  8.064425e-01 |  3.736929e+00 |  2.161317e+00 |           60 | -3.628863e+01 |  5.551115e-17 |

SVM optimization did not converge to the required tolerance.

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

Оцените потерю реституции частично обученного классификатора SVM.

partialLoss = resubLoss(SVMModel)
partialLoss = 0.1197

Ошибка неправильной классификации обучающей выборки составляет приблизительно 12%.

Возобновите обучение классификатора для другого 1500 итераций. Укажите, что программное обеспечение печатает диагностическую информацию каждый 250 итераций.

UpdatedSVMModel = resume(SVMModel,1500,'NumPrint',250)
|===================================================================================================================================|
|   Iteration  | Set  |   Set Size   |  Feasibility  |     Delta     |      KKT      |  Number of   |   Objective   |   Constraint  |
|              |      |              |      Gap      |    Gradient   |   Violation   |  Supp. Vec.  |               |   Violation   |
|===================================================================================================================================|
|          250 |active|          351 |  2.097627e-01 |  1.965259e+00 |  1.211407e+00 |          102 | -7.577701e+01 |  1.956768e-15 |
|          500 |active|          351 |  3.625797e-03 |  9.547707e-02 |  5.710587e-02 |          103 | -7.819434e+01 |  2.337974e-15 |
|          750 |active|          351 |  5.810633e-04 |  2.683463e-02 |  1.500555e-02 |          103 | -7.820914e+01 |  2.724383e-15 |
|         1000 |active|          351 |  7.464431e-05 |  2.218816e-03 |  1.276094e-03 |          103 | -7.820958e+01 |  2.277258e-15 |
|         1067 |active|          351 |  4.748866e-05 |  9.882221e-04 |  5.178619e-04 |          103 | -7.820959e+01 |  2.257309e-15 |

 Exiting Active Set upon convergence due to DeltaGradient.
UpdatedSVMModel = 
  ClassificationSVM
             ResponseName: 'Y'
    CategoricalPredictors: []
               ClassNames: {'b'  'g'}
           ScoreTransform: 'none'
          NumObservations: 351
                    Alpha: [103x1 double]
                     Bias: -3.8827
         KernelParameters: [1x1 struct]
           BoxConstraints: [351x1 double]
          ConvergenceInfo: [1x1 struct]
          IsSupportVector: [351x1 logical]
                   Solver: 'SMO'


  Properties, Methods

Программное обеспечение возобновляется при итерации 1000 и использует тот же уровень подробностей, что и один набор, когда вы обучали модель используя fitcsvm. Распечатка указывает, что алгоритм сходился. Поэтому UpdatedSVMModel является полностью обученным ClassificationSVM классификатор.

updatedLoss = resubLoss(UpdatedSVMModel)
updatedLoss = 0.0769

Ошибка неправильной классификации обучающей выборки полностью обученного классификатора составляет приблизительно 8%.

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

свернуть все

Полный, обученный классификатор SVM, заданный как ClassificationSVM модель, обученная с fitcsvm.

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

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

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

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: resume(SVMModel,500,'Verbose',2) обучает SVMModel для 500 больше итераций и задает отображение диагностических сообщений и сохранение критериев сходимости при каждой итерации.

Уровень подробностей, заданный как разделенная разделенными запятой парами, состоящая из 'Verbose' и 0, 1, или 2. Verbose управляет объемом информации об оптимизации, отображаемой в Командном окне и сохраненной как структура, в SVMModel.ConvergenceInfo.History.

В этой таблице результирующие значения уровня подробностей.

ЗначениеОписание
0Программа не отображает и не сохраняет информацию о сходимости.
1Программа отображает диагностические сообщения и сохраняет критерии сходимости каждый numprint итерации, где numprint - значение 'NumPrint' аргумент пары "имя-значение".
2Программа отображает диагностические сообщения и сохраняет критерии сходимости при каждой итерации.

По умолчанию Verbose - значение, которое fitcsvm использует для обучения SVMModel.

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

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

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

Если вы задаете 'Verbose',1 и 'NumPrint', numprint, затем программное обеспечение отображает все диагностические сообщения оптимизации от SMO [1] и ISDA [2] каждый numprint итерации в Командном окне.

По умолчанию NumPrint - значение, которое fitcsvm использует для обучения SVMModel.

Пример: 'NumPrint',500

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

Совет

Если оптимизация не сходится, и решатель 'SMO' или 'ISDA', затем попытайтесь возобновить обучение классификатора SVM.

Ссылки

[1] Вентилятор, R.-E., P.-H. Чен и К.-Ж. Lin. «Работа набора с использованием информации второго порядка для обучения машин опорных векторов». Journal of Машинного обучения Research, Vol. 6, 2005, pp. 1889-1918.

[2] Кечман В., Т. -М. Хуан и М. Фогт. Итерационный алгоритм единичных данных для обучения машин ядра из огромных наборов данных: теория и эффективность. Машины опорных векторов: теория и приложения. Под редакцией Липо Ван, 255-274. Берлин: Springer-Verlag, 2005.

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

См. также

|

Введенный в R2014a