决策树之 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:
- 能够处理连续型和离散型的数据。
- 能够处理包含缺失值的数据。
- 对生成的决策树进行了减枝。
- 使用信息增益率作为属性选择的标准。
信息增益率
信息增益率定义为:
其中,分母
信息增益
信息熵:
另外,属性 A 划分 S 的信息熵
如果属性 A 是离散型的数据,则:
如果属性 A 是连续型的数据,则:
(将属性A的值按递增的顺序排序,对相邻的两个值取中间值(平均值),
缺失值和减枝
缺失值处理:
缺失值处理的方法有两种:
一种,是抛弃含有缺失值的数据,这种适合于只含少量缺失值的情况。
另一种,是填充。C4.5 算法不是直接填充缺失值,而是用概率知识把信息增益率的求解作些变化:
Gain(A)= 属性 A 在数据集中不空的比率×(Entropy(S)−EntropyA(S)) 。SplitE(A)=−∑i=1k|Si||S|log2|Si||S|−|Sunknow||S|log2|Sunknow||S|
(其中,Sunknow 是含缺失值的数据组成的样本集。)
减枝处理:
- 减枝的目的是消除过度拟合,提高决策树的品质。
- 减枝的原则是去除预测准确度低的子树、降低决策树的复杂度、让决策树更加浅显易懂。
- 减枝的方法有两个:一种,在构建决策树之前给出限定条件,限定树的生长;另一种,在决策树完全生长以后,对不良子树进行减枝。
- C4.5 采用后一种方法:从底往上,如果用某个使用频率很高的子节点(或者叶子节点)替换该决策节点后,可以使得整棵树的预测误差率降低,则进行相应的减枝。
- 然而怎么求预测误差率呢?(以后再补上。)
C4.5 步骤
- 对数据集进行预处理,对连续型属性求数据的最佳分裂点。
- 计算每个属性的信息增益率,选取信息增益率最大的属性作为决策节点的划分属性。
- 对决策节点属性的每个可能取值所对应的样本子集递归地执行步骤2,直到划分的每个子集中的观测数据都属于同一个类标号,最终生成决策树。
- 对完全生长的决策树进行剪枝,得到优化后的决策树。
- 从剪枝后的决策树中提取分类规则,对新的数据集进行分类。
C4.5的优缺点
优点:产生的分类规则易于理解,准确率较高。
缺点:
- 在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效。
- 精度不够高。商业上用 C5.0 而非 C4.5,就是因为它的预测精度还不能很好的满足用户的需求。
- C4.5 只适合于能够驻留于内存的数据集,当训练集大得无法在内存容纳时,程序无法运行。