резюме

Возобновите учебный классификатор машины вектора поддержки (SVM)

Синтаксис

UpdatedSVMModel = resume(SVMModel,numIter)
UpdatedSVMModel = resume(SVMModel,numIter,Name,Value)

Описание

пример

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