说起决策树,不禁想到了第一次用决策树解决问题时的场景。当时是解决机械领域一个轴承故障分类问题,效果很好,也是从那开始开始决策树走进了我的心里。当时对原理理解的不清楚,但后来学了原理之后才发现我还可以把模型改进的更好。
众所周知,决策树是一种简单高效并且具有强解释性的模型,被广泛应用于数据分析领域。在建树之前我们需要考虑一些问题,比如这棵树是怎么生成的?数中节点的位置怎么确定?根据什么进行分类等等。要弄懂决策树最关键的要弄懂信息增益
决策树
什么是决策树
顾名思义,决策树就是一棵树。一颗决策树包含一个根节点、若干个内部结点和若干个叶结点;叶结点对应于决策结果,其他每个结点则对应于一个属性测试;每个结点包含的样本集合根据属性测试的结果被划分到子结点中;根结点包含样本全集,从根结点到每个叶子结点的路径对应了一个判定测试序列。举个例子来说明决策树的构建过程:
例如有人给你介绍男朋友,你会先问对方的年龄,如果大于30就直接拒绝了,如果小于等于30,则可以继续进行下面的条件。然后,对长相提出要求,如果长相丑,那就不见,如果不丑,在问收入,以此类推。
以上就是决策树做的一个过程。那么问题来了。为什么把年龄和长相放在前面?当然是因为重要喽,判断的因素从前往后重要性依次减少,而决策树就需要对判断因素的重要程度进行排序,这就需要用到后面要说的信息增益。
再举一个例子
比如银行在贷款时,需要根据年龄、是否有工作、是否有自己的房子等因素来判断是否要给这个人贷款。凭我们的主观意识来判断的话,肯定是房子这个因素最重要,满足了房子这个条件我们可能会考虑年龄和工作
可能青年的、有工作的会更愿意贷款。但是以上只是依靠经验做出的判断,而决策树判别的时候不是靠经验分的,它是经过科学的计算得出的结果,实际的划分是
那么银行贷款到底是如何划分的。哪个是最主要的,最重要的?怎么得到最主要的。依然是依靠信息增益。
信息的度量——信息熵
在理解信息增益之前,先来看信息熵。什么叫信息熵?先举个例子。
假设有32支球队,我们对这32支球队过去的历史一无所知,每个球队取胜的概率都为1/2,我们怎么猜才能猜到谁是冠军?最少要猜几次才能知道结果?如何去猜?
我们可以在 一无所知的情况下,一半一半的猜。
首先我们可以猜:冠军在1-16之内吗? 如果它不在,那么它肯定在17-32之间。如果我现在告诉你在1-16之间,那么你接下来会猜在1-8之间,依次类推,用5次就可以猜到最后的结果。即log32=5(log是以2为底的对数)。这就引出了信息熵。
式子如下:
p(xi)是选择该分类的概率。
什么意思?继续拿上面的球队为例,带入上式。
因为每只球队的获胜概率都是一样的1/32,所以 p(xi)皆为1/32。
所以就有
H=-(1/32log(1/32)+1/32log(1/32)+1/32log(1/32)+……)=5
带入上式得出的数为5,即信息熵为5bit。
但是实际中呢,信息熵肯定会比5小,因为一些数据我们是可以知道的,比如过去几年的胜负情况。假如我们知道了胜负情况,并且根据胜负情况可知A队获胜的概率为1/6,B队为1/5,C队为1/10……那么带入信息熵公式可得
H=-(1/6log(1/6)+1/5log(1/5)+1/10log(1/10)+……)<5
这个数一定是小于5的。
也就是说,当我们知道的信息越多的时候,我们的代价就会减少,这个代价就叫做信息熵。
做个总结:
信息和消除不确定性是相联系的,信息熵越大不确定性越大,信息熵越小不确定性越小。由上面的例子可知信息熵越大就越难看出那个能夺冠。
信息增益
现在来思考上面的问题
为什么要把房子放在第一位?因为房子因素重要,把它放在第一位可以减少更多的不确定性,以此类推。
而如何计算出减少的信息熵对因素进行排序就要用到信息增益。
什么是信息增益呢?在划分数据集之前之后信息发生的变化成为信息增益,知道如何计算信息增益,我们就可以计算每个特征值划分数据集获得的信息增益,获得信息增益最高的特征就是最好的选择。
简单地说,信息增益的作用就是对影响因素的重要程度进行排序。公式为:
特征A对训练集D的信息增益g(D,A) , 定义为集合D的信息熵H(D)与特征A在给定条件下的信息条件熵H(D|A)之差。
其中
还是来举个例子吧。
以上面谈到的贷款为例
先计算总的信息熵H(D),即计算贷款是否成功(目标值)的信息熵。我们发现有9个是贷款成功的,6个是不成功的。所以带入公式可得
H(D) = - (9/15log(9/15)+6/15log(6/15)) = 0.971 # 9个通过贷款申请,6个未通过贷款申请
接下来计算g(D,A),以年龄为例
即计算g(D,年龄)=H(D)-H(D|年龄)
H(D)已经计算得出为0.971,关键是计算H(D|年龄),由上面的公式可知
H(D|年龄)=5/15H(青年)+5/15H(中年)+5/15H(老年) #年龄中青年、中年、老年各占5/15
H(青年)=-2/5log(2/5)-3/5log(3/5)
H(中年)=-3/5log(3/5)-2/5log(2/5)
H(老年)=-4/5log(4/5)-1/5log(1/5)
由此可得出g(D,年龄)。
同理可以计算出g(D,有无工作) 、g(D,有无房子)和g(D,信贷情况) 。
其中哪一个最大,则认为哪个信息增益最大、最有特征。从而对因素的重要程度进行排序,生成树。
所以信息增益是决策树分类的依据之一。
常见的决策树算法
- ID3 信息增益最大的准则
- C4.5 信息增益比最大的准则
- Cart
- 回归树:平法误差最小
- 分类树:基尼系数最小的准则,在sklearn中可以选择划分的默认原则。