决策树构建中节点的选择靠的就是信息增益了。
信息增益是一种有效的特征选择方法,理解起来很简单:增益嘛,肯定是有无这个特征对分类问题的影响的大小,这个特征存在的话,会对分类系统带来多少信息量,缺了他行不行?
既然是个增益,就是个差了,减法计算一下,谁减去谁呢?
这里就用到了信息熵的概念,放到分类系统里面,信息熵如何计算呢?
分类系统里面无非是样本xi以及样本的分类结果yi,假设这个分类系统有k类,那么作为训练集来说,分类情况基本就定了,是按照样本的各个特征定的。那么在这些样本的信息的前提下,分类器有个结果,就自然包含了一种信息量在里面,可以用信息熵E(S)计算出来。
当然大家都知道熵表达的是不确定度,分布约均匀,越不确定,熵越大。
那么当把特征f引入的时候,会不会对系统的信息量有所影响呢?也就引入f之后的系统不确定度E(S|f)是多少呢?其实是个条件熵。也就是加入条件f之后,不确定度减少了多少?信息熵的有效减少量是多少?
为了计算条件熵,我们可以固定f的值,也就是根据f在训练集中呈现的值,计算条件熵E(S|f)。简单的说就是,把根据f划分的各个小系统的信息熵加权求和,权重就是各个小系统占系统S的比例(假设f有两个值0、1,选0的时候有a个样本,样本当然有类别y;f是1的时候有b个样本;a+b=n(样本总数);那么权重就是a/n和b/n了;每个小系统的信息当然跟大系统求法一样了)。
那么增益IG(f)=E(S)-E(S|f).
选择 f*=argmax(IG(f))的f作为第一个根节点,然后递归下去吧。
-----------
关于信息增益进行特征选择的问题,拿c类分类问题再理解下,如果一个特征都不参考,那么每个样本属于每个类的概率当然是1/c,此时整个系统的信息熵是最大的logc,一个极端的情况,加入特征A后,那么很明确的就将每个样本分到某个类别中去了,概率分布(1,0,0,0....),是c维的。
那么此时整个系统的信息熵是不是就是最小的0了,此时加入A后的信息增益为1-0=1。当然,很少会有这么管用的特征,所以就比较信息增益大的特征,用来特征选择。
来源:https://www.cnblogs.com/ransw/p/4137526.html