上一篇文章我们介绍了信息增益,本文介绍增益率。
我们知道信息增益可以帮助我们构建决策树,但是信息增益准则有一个缺点。具体是什么缺点呢?
在上面的表格中,我们试着对编号这一列计算信息增益,会发现编号产生的信息增益为0.998,远大于色泽产生的信息增益。这可以说明编号可以帮助我们更好的判断西瓜好坏吗?答案是否定的,因为这样构建的决策树显然不具有泛化能力,无法对新样本进行有效预测。
为什么会出现这种现象?
仔细思考后,会发现,信息增益准则对可取值数据较多的属性有所偏好,为减少这种偏好可能带来的不利影响,于是有了著名的C4.5决策树算法。这种算法使用增益率来选择最优划分属性。
增益率的公式为:,其中,。
成为属性a的固有值。属性a的可能取值数目越多(即V越大),则的值通常会越大。
我们试着算一下色泽和触感的,分别为:1.580和0.874。可以用下面的代码进行计算:
# total代表正样本总数
# num_list里面的每个元素代表该属性的每个分类的数目,
# 比如:色泽这个属性,有青绿、乌黑、浅白三个类别,每个类别的数目分别为6,6,5
import math
total = 17
num_list = [6, 6, 5]
a = 0
for i in num_list:
ratio = i / total
a += (ratio) * math.log(ratio, 2)
IV = -a
print(IV)
需要注意的是,增益率准则对可取值数目较少的属性有所偏好,因此C4.5算法并不是直接选择增益率最大的候选划分属性,而是使用了一个启发式:先从候选划分属性中找到信息增益高于平均水平的属性,再从中选择增益率最高的。
从这里也能看得出,我们在使用算法时,不会仅仅使用一种算法去做预测,在以后的项目实战中,很可能会将几种算法进行融合,以达到较好的效果。