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 |  2.498002e-16 |

SVM optimization did not converge to the required tolerance.

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

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

partialLoss = resubLoss(SVMModel)
partialLoss = 0.1054

Учебная выборка misclassification ошибка составляет приблизительно 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 |  1.441556e-01 |  1.701201e+00 |  1.015454e+00 |          100 | -7.671009e+01 |  4.857226e-17 |
|          500 |active|          351 |  3.277736e-03 |  9.155364e-02 |  4.830095e-02 |          103 | -7.819815e+01 |  1.110223e-16 |
|          750 |active|          351 |  3.928360e-04 |  1.367091e-02 |  9.155316e-03 |          103 | -7.820938e+01 |  5.234528e-16 |
|         1000 |active|          351 |  4.802547e-05 |  1.551900e-03 |  7.765843e-04 |          103 | -7.820959e+01 |  2.602085e-16 |
|         1044 |active|          351 |  3.602828e-05 |  9.382457e-04 |  5.182592e-04 |          103 | -7.820959e+01 |  4.623038e-16 |

 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.8828
         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

Учебная выборка misclassification ошибка полностью обученного классификатора составляет приблизительно 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. Чен и C.-J. Лин. “Выбор рабочего набора с помощью информации о втором порядке в учебных машинах опорных векторов”. Журнал Исследования Машинного обучения, Издания 6, 2005, стр 1889–1918.

[2] Кекмен V, T.-M. Хуан и М. Вогт. “Итеративный Один Алгоритм Данных для Учебных Машин Ядра от Огромных Наборов данных: Теория и Производительность”. Машины опорных векторов: Теория и Приложения. Отредактированный Липо Ваном, 255–274. Берлин: Springer-Verlag, 2005.

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

Смотрите также

|

Введенный в R2014a