在ID3决策树算法中,我们实现了基于离散属性的决策树构造。C4.5决策树在划分属性选择、连续值、缺失值、剪枝等几方面做了改进,内容较多,今天我们专门讨论连续值的处理和Python实现。
1. 连续属性离散化
C4.5算法中策略是采用二分法将连续属性离散化处理:假定样本集D的连续属性有n个不同的取值,对这些值从小到大排序,得到属性值的集合
。把区间
的中位点
作为候选划分点,于是得到包含n-1个元素的划分点集合
基于每个划分点t,可将样本集D分为子集和
,其中
中包含属性
上不大于t的样本,
包含属性
上大于t的样本。
对于每个划分点t,按如下公式计算其信息增益值,然后选择使信息增益值最大的划分点进行样本集合的划分。
在ID3算法中的西瓜数据集中增加两个连续属性“密度”和“含糖率”,下面我们计算属性“密度”的信息增益。
从数据可以看出,17个样本的密度属性值均不同,因此该属性的候选划分点集合由16个值组成: