[机器学习]决策树(decision tree)--5.增益率

上一篇文章我们介绍了信息增益,本文介绍增益率。

我们知道信息增益可以帮助我们构建决策树,但是信息增益准则有一个缺点。具体是什么缺点呢?

西瓜数据集

在上面的表格中,我们试着对编号这一列计算信息增益,会发现编号产生的信息增益为0.998,远大于色泽产生的信息增益。这可以说明编号可以帮助我们更好的判断西瓜好坏吗?答案是否定的,因为这样构建的决策树显然不具有泛化能力,无法对新样本进行有效预测。

为什么会出现这种现象?

仔细思考后,会发现,信息增益准则对可取值数据较多的属性有所偏好,为减少这种偏好可能带来的不利影响,于是有了著名的C4.5决策树算法。这种算法使用增益率来选择最优划分属性。

增益率的公式为:Gainratio(D,a)=\frac{Gain(D,a)}{IV(a)} ,其中,IV(a) = -\sum_{v=1}^V \frac{\vert D^v  \vert }{D} \log_2 \frac{\vert D^v  \vert}{D}

IV(a)成为属性a的固有值。属性a的可能取值数目越多(即V越大),则IV(a)的值通常会越大。

我们试着算一下色泽和触感的IV(a),分别为: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算法并不是直接选择增益率最大的候选划分属性,而是使用了一个启发式:先从候选划分属性中找到信息增益高于平均水平的属性,再从中选择增益率最高的。

从这里也能看得出,我们在使用算法时,不会仅仅使用一种算法去做预测,在以后的项目实战中,很可能会将几种算法进行融合,以达到较好的效果。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容