决策树
决策这一节相对KNN算法来说难了点,因为本节需要先理解熵和信息增益的概念,理解后再看就比较容易了。不过我也是先看的代码,在看代码的过程中没明白它为什么要这么做,然后再去查相关的书籍,再把熵和信息增益的概念理解了,再去看代码,就明白了。
基本概念
基本概念不懂没关系,先去看源码。然后再回顾和总结。
香农熵(也叫信息熵)简称熵,其计算公式如下:
H=−∑ni=1p(xi)log2p(xi) H = − ∑ i = 1 n p ( x i ) l o g 2 p ( x i )
其中的 p(xi) p ( x i ) 是该类别的概率。
熵越小纯度越高,熵越大越杂乱无章。比如左手一把盐,右手一瓶水,此时熵很小,但如果把盐倒到水里,那么此时熵就很大了。
决策树的根结点的熵是最大的,我们的目标就是进行分类,让节点的熵变成0,就表示节点都是同一类的了,需要关注的是在这个过程中使熵变小的最快的分类是最优分类,我们要做的就是找到这样的分类。
信息熵和信息增益
信息熵计算
例子1
以MLiA书上的数据,计算信息熵和信息增益的过程
如上图的数据集,最终的类别只有两类:是鱼类和不是鱼类,分别占2/5和3/5。
按公式 H=−∑ni=1p(xi)log2p(xi) H = − ∑ i = 1 n p ( x i ) l o g 2 p ( x i ) (MLiA P35)可知,这里的n=2,即共2个类别, x1 x 1 表示是鱼类; x2 x 2 表示不是鱼类。 p(xi) p ( x i ) 表示某一类的概率,所以:
p(x1)=2/5=0.4,p(x2)=3/5=0.6 p ( x 1 ) = 2 / 5 = 0.4 , p ( x 2 ) = 3 / 5 = 0.6