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

#c #opencv #decision-tree

#c #opencv #дерево решений

Вопрос:

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

Я думал о чем-то подобном

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

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

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

Комментарии:

1. из интуиции должно быть возможно создавать образцы из существующего dt, которые (используемые в новом обучении) должны быстро создавать то же самое дерево. Но на самом деле просто интуиция

Ответ №1:

Короткий ответ: Нет

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

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