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