part 1 信息量、香农熵、信息增益
概率较大的0信息量变小,概率较小的1信息量变大,系统的熵变小(因为系统不确定性变小了)
十进制数字的信息量和熵是3.32比特。
我也不知道为什么打印出来是这个顺序。。
所谓决策树算法,就是一次次根据某个特征进行分类,比如“20个问题猜出ta是谁”游戏,你可以问“是男的吗”“是直的吗”“是哥大的吗”之类的问题,每次得到答案,你的范围就缩小一些,如此循环往复以至于——得到一个确定结果为止。(不过决策树算法并不一定采用二分法)
听起来很简单的样子,但重点是,首先应选择哪个特征进行划分?其次?再次?
划分数据集的原则是:使无序的数据更加有序。划分数据集前后的信息增益(信息的变化)越大,说明数据变得越有序,因此我们选择信息增益最大的特征进行划分。
要理解度量信息增益的方法,先引入两个概念:信息量和香农熵(以下简称熵)
信息量是某事件发生概率的以2为底的对数的相反数。(书上这个公式少了个负号哦亲!)
为何这样定义?
1)事件发生概率越小,包含的信息量越大。
for一个sample,如果我知道选择题答案中C的概率是60%,那么我就蒙C,这样对的概率就比较大。这时候你偷偷告诉我正确答案:选C,这个信息的信息量就比较小,因为我蒙也能蒙的差不多。
但是如果你告诉我答案是A、B或D,信息量就大了。这是因为A、B或D发生的概率比较小,一般人是蒙不对滴~
2)为何对数以2为底?因为这样定义的话,信息量的单位就是“比特”。我们知道比特是计算机存储信息的最小单位,是二进制中的一位数字。以2为底求对数,就可以知道一个十进制数需要多少位二进制数来描述,也就是这个信息要占用多少比特啦。
熵是一个系统中信息的期望值,用于描述系统的平均不确定程度。
熵有一个重要的性质需要提一下:系统内各个事件发生概率相等时,系统最不确定,熵最大。系统内某事件发生概率为1时,系统是完全确定的,熵为0。
现在编个程序计算一下各种信息量和熵。注意书上的代码是错的哦,if下一行应该有缩进的。这么明显的错误应该连新手都不会犯。。。总之,代码一定要自己写不要照书抄。有人问为什么这本书这么多错还要看它,没办法谁让它火呢,要不是这本书我都不知道机器学习这回事。。
再来一个
改变一下概率看看:
概率较大的0信息量变小,概率较小的1信息量变大,系统的熵变小(因为系统不确定性变小了)
顺便说一下,只有两个事件的系统的熵函数(HP曲线)形状有点像一个倒扣下来的抛物线,在0.5处取得极值(容易想象,就不画了)
十进制数字的信息量和熵是3.32比特。
拉丁字母的熵呢?
我也不知道为什么打印出来是这个顺序。。
假如每个字母的频率相等的话,拉丁字母的熵就是4.7啦。但是在不同语言中每个字母的频率都不同的,而且每个字母的出现并不是独立事件(要受到上下文的影响),所以要用比较复杂的方法计算。目前普遍使用的是n-gram模型,这个以后讲自然语言处理的时候再详细说吧~
最后,
决策树在进行属性选择划分前和划分后的熵的差值就是
信息增益~
分类之后各个小系统的熵之和怎么计算呢?
方法是把各个小系统的熵加权求和,权重就是各个小系统占大系统的比例(假设小系统1有a个样本,小系统2有b个样本,大系统共n个样本,那么权重就是a/n和b/n了)。
~本章较长,未完待续~