我们最初的ID3定义被限制为取离散值的属性。首先,学习到的决策树要预测的目标属性必须是离散的。其次,树的决策结点的属性也必须是离散的。可以简单地删除第二个限制,以便把连续值得的决策属性加入到决策树中。这可以通过动态地定义新的离散值属性来实现,即先把连续值的值域分割为离散的区间集合。例如,对于连续值的属性A,算法可动态地创建一个新的布尔属性Ac,如果A>c,那么为Ac真,否则为假。惟一的问题是如何选取最佳的阈值c。
举例来说,假定我们希望在表3-2的学习任务中包含连续值的属性Temperature来描述训练样例。对于与决策树的特定结点关联的训练样例,进一步假定其属性Temperature和目标属性PlayTennis的值如下:
Temperature: 40 48 60 72 80 90
PlayTennis: No No Yes Yes Yes No
对属性Temprature,应该定义什么样的基于阈值的布尔属性呢?我们无疑会选择产生最大信息增益的阈值c。首先按照连续属性A排序样例,然后确定目标分类不同的相邻实际,于是我们可以产生一组候选阈值,它们的值是相应的A值之间的中间值。可以证明产生最大信息增益的c值必定位于这样的边界中(Fayyad 1991)。然后可以通过计算与每个候选阈值关联的信息增益评估这些候选值。在当前的例子中,有两个候选阈值,它们对应于目标属性PlayTennis变化时属性Temperature的值:(48+60)/2和(80+90)/2。然后计算每一个候选属性——Temperature> 54和Temperature> 85的信息增益,并选择最好的(Temperature> 54)。现在这个动态创建的布尔属性便可以和其他候选的离散值属性一同“竞争”,以用于增长决策树。Fayyad & Irani(1993)讨论了这种方法的一个扩展,即把连续的属性分割成多个区间,而不是基于单一阈值的两个区间。Utgoff & Brodley(1991)和Murthy et al.(1994)讨论了通过对几个连续值属性的线性组合定义阈值参数的方法。