Обучить существующую модель opencv новым данным

Я использую деревья решений opencv для создания классификатора. Я хотел бы знать, возможно ли переобучить эту модель (которую можно сохранить и загрузить в файл .yml), добавив новые данные. Версия Opencv, которую я использую — 2.4.

Я думал о чем-то вроде этого

CvDTree dtree;
dtree.load("existingTree.yml");
dtree.train(newValues, CV_ROW_SAMPLE, newResponses);

newValues ​​содержит только новые образцы, а newResponses содержит классы для этих значений. Это будет генерировать новое дерево решений, обученное со старыми значениями первого процесса обучения и новыми?

Я не нашел никакой информации в документации opencv по этому поводу.

0

Решение

Краткий ответ: нет

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

Другой способ взглянуть на это — подумать о Случайном Лесе, который образован ансамблем деревьев. Учитывая, что ваш новый набор данных не слишком отличается от данных, которые модель уже видела ранее. Если вы хотите, вы можете обучить новое дерево и добавить его в группу ранее обученных деревьев. Во время прогнозирования вы можете усреднить прогноз всех деревьев, чтобы получить общий прогноз.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]