决策树算法基础:ID3与C4.5

时间:2022-08-30 03:16:22

          设X是一个取有限个值得离散随机变量,其概率分布为P(X=xi)=pi,   i=1,2,…,n。则随机变量X的信息熵为

                                                                 决策树算法基础:ID3与C4.5

   条件熵H(Y|X)表示在已知随机变量X的条件下随机变量Y的不确定性。H(Y|X)的计算公式为

 决策树算法基础:ID3与C4.5

   所以决策树分支后信息总熵H(D|A)=P1*H1+P2*H2+...+Pn*Hn,(特征A条件下D的经验条件熵)

   所以信息增益ΔH=H(D)-H(D|A)

   H(D|A)越小,ΔH越大,该特征A越适合作为当前的决策节点。



选取最佳特征伪代码:

计算信息总熵H(D)

遍历每一个特征下的关于D的经验条件熵H(D|A)

计算每一个特征的信息增益ΔH

将信息增益ΔH最大的特征作为最佳特征选为当前决策节点


ID3算法伪代码:

如果第一个标签的数量等于所有的标签数量,说明这是一个单节点树,返回这个标签作为该节点类

如果特征只有一个,说明这是一个单节点树,用多数表决法投票选出标签返回作为该节点类

否则,按信息增益最大的特征A作为当前决策节点,即决策树父节点

如果该特征的信息增益ΔH小于阈值,则用多数表决法投票选出标签返回作为该节点类

否则,对于该特征A的每一个可能值ai,将原空间D分割为若干个子空间Di

对于若干个非空子集Di,将每个Di中实例数最大的类作为标记,构建子节点

以Di为训练空间,递归调用上述步骤


由于信息增益存在偏向于选择取值较多的特征的问题,而C4.5算法中,将ID3算法里的信息增益换成信息增益比,较好地解决了这个问题。


决策树的优点在于计算量简单,适合有缺失属性值的样本,适合处理不相关的特征。而缺点是容易过拟合,可以通过剪枝来简化模型,另外随机森林也解决了这个问题。


具体代码见github链接。https://github.com/AlanLin2015/Machine-Learning/tree/master/trees