Weka中InfoGainAttributeEval工作原理及自建决策树正确性问询
关于Weka InfoGainAttributeEval结果与决策树构建的问题解答
InfoGainAttributeEval工作原理
InfoGainAttributeEval是Weka中基于信息增益的属性评估器,核心逻辑来自ID3、C4.5决策树的特征选择规则,具体计算步骤如下:
- 先计算当前数据集关于类别标签的熵:
Ent(S) = -Σ(p(c) * log2 p(c)),其中p(c)是类别c在数据集S中的占比 - 对每个待评估属性A,计算按A的所有取值拆分数据集后的条件熵:
Ent(S|A) = Σ((|S_v|/|S|) * Ent(S_v)),其中S_v是属性A取第v个值对应的子集 - 信息增益
Gain(S,A) = Ent(S) - Ent(S|A),代表用属性A拆分数据集后,类别不确定性的下降幅度 - InfoGainAttributeEval最终输出每个属性的信息增益值,数值越高代表该属性对区分类别的能力越强,默认会按增益值从高到低排序属性。
全空右子节点决策树的合理性判断
决策树出现所有右子节点为空的情况,可通过两个维度验证正确性:
- 先对照InfoGainAttributeEval的输出排序:决策树根节点应为信息增益最高的属性,后续每层节点也需要优先选择当前子集下信息增益最高的属性,若你选的属性顺序和增益排序一致,结构的前提逻辑成立。
- 再对照数据集结构:如果所有属性按你设定的阈值拆分后,右分支对应的子集里所有样本类别完全一致,或已经没有剩余样本,那么右子节点无需继续拆分(即你所说的空节点)是完全合理的。这种情况通常出现在数据集特征区分度较高,单侧分支就能完全覆盖某一类别的所有样本。
如果要进一步确认,可直接用Weka自带的J48(C4.5实现)分类器在相同数据集上训练,对比生成的决策树结构和你手动构建的是否一致即可。
内容的提问来源于stack exchange,提问作者Encipher
相关产品推荐
相关产品推荐

