2014-01-02 2 views
1

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

ответ

0

После углубиться в код 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 голосов, тогда нет необходимости проходить и получать прогнозы от оставшихся деревьев (так как они будут неактуальны для изменения большинства голосов).

Смежные вопросы