背景
学习周志华机器学习,看到了这句话 “信息增益准则对取值较多属性有偏好的理解”,但不太能理解?所以记录一下
信息熵
一个样本集合的纯度——可以用信息熵来描述,信息熵的计算是怎么样的呢?我们现在有一个样本集合D,样本分为N个种类,其中第k类样本个数占总样本的比例为pk{p}_{k}pk,那么对于集合D来讲,它的信息熵为:
Ent(D)=−∑k=1Npklog2pk
Ent(D)=-\sum\limits_{k=1}^{N}{{{p}_{k}}{{\log }_{2}}{{p}_{k}}}
Ent(D)=−k=1∑Npklog2pk
信息熵越小,纯度越高。pk{p}_{k}pk是一个概率(比例)。在[0,1]之间,取对数就是个负值,多个负值相加在取反,最后得到的就是一个正数。当只有1类时,信息熵最小,可以算出来等于0,所以信息熵越小,纯度越高。
信息增益
信息增益表示由于特征(属性)A而使得数据集的分类不确定性减少的程度,信息增益大的特征具有更强的分类能力。怎么来计算信息增益呢?比如我想计算用属性a来对D进行划分得到的信息增益。
必须先搞清楚一些东西,才好理解。样本集合D每个样本都有M个属性,每个属性a可能取值个数为V,aaa={a1{a}_{1}a1,a2{a}_{2}a2,…,av{a}_{v}av},用属性a来对D进行划分得到的信息增益可以这样计算:
Gain(D,a)=Ent(D)−∑v=1V∣Dv∣∣D∣Ent(Dv) Gain(D,a)=Ent(D)-\sum\limits_{v=1}^{V}{\frac{\left| {{D}^{v}} \right|}{\left| D \right|}Ent({{D}^{v}})} Gain(D,a)=Ent(D)−v=1∑V∣D∣∣Dv∣Ent(Dv)
其中Dv{D^v}Dv代表集合D中属性a的取值是av{a}_{v}av的样本组成的集合,这个比例代表的就是所有样本中属性a的取值是av的样本占总样本的比例。
举个例子,我现在有一个西瓜集合(D),里面有300个样本,总共有两类(N=2),每个样本的属性集合为{色泽,纹理,敲声,根蒂},M=4,现在我打算计算用色泽来划分,色泽有{乌黑,青绿,浅白},V=3。300个样本里面150个乌黑,100个青绿,50个浅白的。
∣Dv∣∣D∣\frac{\left| {{D}^{v}} \right|}{\left| D \right|}∣D∣∣Dv∣的取值就分别是1/2,1/3,1/6。Ent(Dv){Ent(D^v)}Ent(Dv)按上面的信息熵公式计算。
从信息增益公式可以看出来他对取值可能较多的属性有偏好,我们分析一下,上面说了Ent(∗){Ent(*)}Ent(∗)是肯定大于0的,前面的比例也是一个正数,所以后面的累加项每一项都始终是正数。前面的Ent(D)是固定的,要让增益越大越好,我们考虑下极端情况,就是有一个属性,他在每个样本上的取值都不同,那么后面的累加项就全是0(因为用这个属性来分的话,每个样本就是一个种类,上面信息熵公式我们说了只有一个种类的集合的纯度最高,信息熵为0),所以信息增益准则对取值可能较多的属性有偏好。