При построении дерева решений на каждом узле мы выбираем лучшую функцию, а затем лучшую позицию разделения для этой функции. Однако, когда все значения для наилучшей функции равны 0 для образцов в текущем узле/наборе, что мне делать? Все образцы сохраняются сгруппированными в одну сторону (ветвь < = 0), и происходит бесконечный цикл. Например:Построение дерева решений
#left: 1500, #right: 0
затем,
#left: 1500, #right: 0
и так далее ...
Просто для справки, я отслеживаю следующий псевдокод.
GrowTree(S)
if (y_i = C for all i in S and some class C) then {
return new leaf(C)
} else {
choose best splitting feature j and splitting point beta (*)
I choose the one that gives me the max entropy drop
S_l = {i : X_ij < beta}
S_r = {i : X_ij >= beta}
return new node(j, beta, GrowTree(S_l), GrowTree(S_r))
}
Можете ли вы показать нам свой код для построения дерева? – Reti43
Отредактировал мой вопрос. – Jobs
«Однако, когда все значения для наилучшей функции равны 0 для образцов». кажется, что все образцы, достигающие этого узла, имеют один и тот же класс (можете ли вы проверить?). если это так, узел бесполезен и не должен быть создан. –