exponenta event banner

резюме

Возобновить работу классификатора вектора поддержки обучения (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. Чен и К.-Ж. Лин. «Выбор рабочего набора с использованием информации второго порядка для тренировочных машин поддержки векторов». Журнал исследований машинного обучения, том 6, 2005, стр. 1889-1918.

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

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

См. также

|

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