在构建决策树时,每个节点我们都会选择最佳特征,然后为该特征选择最佳分割位置。然而,当当前节点/集合中所有样本的最佳特征值均为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))
}
回答:
这是根本不可能的。你应该选择能够最大程度提高模型确定性的阈值。使用将所有实例都归入同一分支的阈值不会增加模型的确定性,因此这不是最佳分割。只有当该特征的杂质/熵已经为0时才会发生这种情况,但这也是决策树创建叶节点的停止标准。