《机器学习实战》读书笔记 第三章 决策树(part 1)

part 1 信息量、香农熵、信息增益

所谓决策树算法,就是一次次根据某个特征进行分类,比如“20个问题猜出ta是谁”游戏,你可以问“是男的吗”“是直的吗”“是哥大的吗”之类的问题,每次得到答案,你的范围就缩小一些,如此循环往复以至于——得到一个确定结果为止。(不过决策树算法并不一定采用二分法)

听起来很简单的样子,但重点是,首先应选择哪个特征进行划分?其次?再次?

划分数据集的原则是:使无序的数据更加有序。划分数据集前后的信息增益(信息的变化)越大,说明数据变得越有序,因此我们选择信息增益最大的特征进行划分。

要理解度量信息增益的方法,先引入两个概念:信息量和香农熵(以下简称熵)

信息量是某事件发生概率的以2为底的对数的相反数。(书上这个公式少了个负号哦亲!)




为何这样定义?
1)事件发生概率越小,包含的信息量越大。
for一个sample,如果我知道选择题答案中C的概率是60%,那么我就蒙C,这样对的概率就比较大。这时候你偷偷告诉我正确答案:选C,这个信息的信息量就比较小,因为我蒙也能蒙的差不多。
但是如果你告诉我答案是A、B或D,信息量就大了。这是因为A、B或D发生的概率比较小,一般人是蒙不对滴~

2)为何对数以2为底?因为这样定义的话,信息量的单位就是“比特”。我们知道比特是计算机存储信息的最小单位,是二进制中的一位数字。以2为底求对数,就可以知道一个十进制数需要多少位二进制数来描述,也就是这个信息要占用多少比特啦。

熵是一个系统中信息的期望值,用于描述系统的平均不确定程度。


熵有一个重要的性质需要提一下:系统内各个事件发生概率相等时,系统最不确定,熵最大。系统内某事件发生概率为1时,系统是完全确定的,熵为0。

现在编个程序计算一下各种信息量和熵。注意书上的代码是错的哦,if下一行应该有缩进的。这么明显的错误应该连新手都不会犯。。。总之,代码一定要自己写不要照书抄。有人问为什么这本书这么多错还要看它,没办法谁让它火呢,要不是这本书我都不知道机器学习这回事。。

先算一个最经典的吧:

当然啦,二进制数字的信息量和熵肯定是1比特哦

再来一个

可见把一个系统内的事件以相等的倍数复制的话,信息量和熵都是不变的哦。因为每个事件的概率没变嘛。

改变一下概率看看:

概率较大的0信息量变小,概率较小的1信息量变大,系统的熵变小(因为系统不确定性变小了)

顺便说一下,只有两个事件的系统的熵函数(HP曲线)形状有点像一个倒扣下来的抛物线,在0.5处取得极值(容易想象,就不画了)


十进制数字的信息量和熵是3.32比特。

拉丁字母的熵呢?

我也不知道为什么打印出来是这个顺序。。

假如每个字母的频率相等的话,拉丁字母的熵就是4.7啦。但是在不同语言中每个字母的频率都不同的,而且每个字母的出现并不是独立事件(要受到上下文的影响),所以要用比较复杂的方法计算。目前普遍使用的是n-gram模型,这个以后讲自然语言处理的时候再详细说吧~

最后, 决策树在进行属性选择划分前和划分后的熵的差值就是 信息增益~

分类之后各个小系统的熵之和怎么计算呢? 方法是把各个小系统的熵加权求和,权重就是各个小系统占大系统的比例(假设小系统1有a个样本,小系统2有b个样本,大系统共n个样本,那么权重就是a/n和b/n了)。

~本章较长,未完待续~


















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值