决策树之 C4.5

C4.5 是对 ID3 的一个优化,它依据信息增益率来进行属性选择。
关于决策树。请參见:http://blog.csdn.net/bone_ace/article/details/46299681
关于 ID3,请參见:http://blog.csdn.net/Bone_ACE/article/details/46312215


关于 C4.5

C4.5 主要针对 ID3 的缺陷作了一些优化改进,相当于是一个“升级版”的 ID3:

  1. 可以处理连续型和离散型的数据。
  2. 可以处理包括缺失值的数据。
  3. 对生成的决策树进行了减枝。

  4. 使用信息增益率作为属性选择的标准。


信息增益率

信息增益率定义为:

GainRatio(A)=Gain(A)SplitE(A)

当中。分母 SplitE(A) 叫做分裂信息,公式定义为:
SplitE(A)=i=1k|Si||S|log2|Si||S|

信息增益 Gain(A) 的求解和 ID3 一样:
Gain(S,A)=Entropy(S)EntropyA(S)


信息熵:

Entropy(S)=i=1mpilog2pi

另外,属性 A 划分 S 的信息熵 EntropyA(S) 的求解添加了对连续型数据的处理。
假设属性 A 是离散型的数据。则:
EntropyA(S)=i=1k|Si||S|Entropy(Si)

假设属性 A 是连续型的数据,则:
EntropyA(S)=|SL||S|Entropy(SL)+|SR||S|Entropy(SR)

(将属性A的值按递增的顺序排序,对相邻的两个值取中间值(平均值),SLSR就是这个中间值左右两部分子集。文字解释比較拗口难懂,详细的使用见后面的样例。)


缺失值和减枝

缺失值处理:

缺失值处理的方法有两种:
一种,是抛弃含有缺失值的数据,这样的适合于仅仅含少量缺失值的情况。


还有一种,是填充。C4.5 算法不是直接填充缺失值,而是用概率知识把信息增益率的求解作些变化:

  1. Gain(A)= 属性 A 在数据集中不空的比率×(Entropy(S)EntropyA(S))
  2. SplitE(A)=i=1k|Si||S|log2|Si||S||Sunknow||S|log2|Sunknow||S|

    (当中。Sunknow是含缺失值的数据组成的样本集。)

减枝处理:

  • 减枝的目的是消除过度拟合,提高决策树的品质。
  • 减枝的原则是去除预測精确度低的子树、减少决策树的复杂度、让决策树更加浅显易懂。
  • 减枝的方法有两个:一种,在构建决策树之前给出限定条件,限定树的生长。还有一种,在决策树全然生长以后。对不良子树进行减枝。
  • C4.5 採用后一种方法:从底往上。假设用某个使用频率非常高的子节点(或者叶子节点)替换该决策节点后。可以使得整棵树的预測误差率减少,则进行相应的减枝。
  • 然而怎么求预測误差率呢?(以后再补上。


C4.5 步骤

  1. 对数据集进行预处理,对连续型属性求数据的最佳分裂点。
  2. 计算每一个属性的信息增益率,选取信息增益率最大的属性作为决策节点的划分属性。

  3. 对决策节点属性的每一个可能取值所相应的样本子集递归地执行步骤2。直到划分的每一个子集中的观測数据都属于同一个类标号,终于生成决策树。
  4. 对全然生长的决策树进行剪枝,得到优化后的决策树。
  5. 从剪枝后的决策树中提取分类规则。对新的数据集进行分类。


C4.5的优缺点

长处:产生的分类规则易于理解。准确率较高。

缺点:

  • 在构造树的过程中,须要对数据集进行多次的顺序扫描和排序,因而导致算法的低效。

  • 精度不够高。商业上用 C5.0 而非 C4.5。就是由于它的预測精度还不能非常好的满足用户的需求。
  • C4.5 仅仅适合于可以驻留于内存的数据集,当训练集大得无法在内存容纳时,程序无法执行。


转载请注明出处。谢谢。(原文链接:http://blog.csdn.net/bone_ace/article/details/46322815

posted on 2017-08-18 17:54  yjbjingcha  阅读(229)  评论(0编辑  收藏  举报

导航