OpenCV Случайная лесная связь

Может ли кто-нибудь сказать мне, разрешает ли код случайного леса OpenCV связи (т. Е. Нет четкого большинства голосов) путем случайного выбора или существует более детерминированный механизм? Я не могу найти ответ на форумах OpenCV, в книге O’Reilly OpenCV или в Google.

1

Решение

После более глубокого изучения кода OpenCV () я нашел следующий соответствующий код:

if( nclasses > 0 ) //classification {

int max_nvotes = 0;
cv::AutoBuffer<int> _votes(nclasses);
int* votes = _votes;
memset( votes, 0, sizeof(*votes)*nclasses );
for( k = 0; k < ntrees; k++ ) {
CvDTreeNode* predicted_node = trees[k]->predict( sample, missing );
int nvotes;
int class_idx = predicted_node->class_idx;
CV_Assert( 0 <= class_idx && class_idx < nclasses );

nvotes = ++votes[class_idx];
if( nvotes > max_nvotes ) {
max_nvotes = nvotes;
result = predicted_node->value;
}
}
}

Итак, что он делает:

  1. Пробежаться по каждому дереву и получить прогноз
  2. Обновите счетчик голосов для этого конкретного класса прогноза
  3. Сравните количество голосов для этого конкретного класса прогноза с максимальным количеством голосов (max_nvotes)
  4. Обновите максимальное количество голосов, где это необходимо

Таким образом, идея случайного разрыва связей напрямую не интегрирована в этот фрагмент кода, но следует иметь в виду, что деревья в ансамбле случайных лесов генерируются случайным образом. Таким образом, теоретически процесс разрыва связи является случайным, поскольку порядок деревьев (и порядок их предсказаний) является случайным. Еще одна вещь, на которую стоит обратить внимание, это то, что ничья идет в первый класс, чтобы получить максимальное количество голосов.

Кроме того, если учитывается большинство голосов, то можно замкнуть цикл for, если какой-либо из классов превышает более половины числа деревьев. Таким образом, если имеется 50 деревьев и любой из классов имеет более 25 голосов, то нет необходимости проходить и получать прогнозы по оставшимся деревьям (поскольку они не будут иметь значения для изменения большинства голосов).

0

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

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

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