什么是决策树?
决策树算法实现分类问题可以被理解为不断地进行条件语句判断,最终实现分类,如下图:进行判断的分支很像树的枝干,被分出来的类别像是枝干上的叶子,所以将这个图称为决策树。所以,用决策树算法解决问题的第一步就是画出决策树。
决策树的结构
在画决策树之前,要先了解决策树的结构是怎样的。在分类阶段时,从根开始,按照决策树的分类属性逐层往下划分,直到叶节点,获得分类结果。
需要的一些基本概念
画出决策树的第一步即决定哪一个特征适合当作根节点。在这里,我们引入一些概念。
1、熵
在化学中,熵用来衡量一种物质内部的混乱程度,即这种物质的纯度。
在概率论中,设有一事件,则它的熵可以衡量事件发生的不确定性。也就是说,当一个事件发生的概率越大,它的熵值越小。
熵的公式为:
举例来说,假设这里有两组数据,A组数据为:1,2,3,4,5,4,6,1,7,8;B组数据为:1,2,1,1,1,1,1,1,1,1。那么我们可以很清楚地判断出A组数据的不纯度比较高,也就是熵值比较高。
那么,怎么用熵的公式来证明的确是A组数据的熵值较高呢?
首先,我们可以求出在A中随机挑出各个数字的概率,那么在A组数据中,挑出各个数据的概率不是0.1就是0.2,而在B组数据中,选到1的概率达到了0.9。将这些概率代到熵的公式中去以后,由于对数函数的性质,概率越小,得到的对数值的绝对值越大,所以A组数据中得到的对数值都比较大,而B组数据中由于有0.9的存在,使得熵远远小于A组的熵。
总而言之,当一组数据中的纯度越高,熵值就越小。
2、Gini系数
从式子可以看出,当概率越小时,得到的Gini系数越大,这和熵值的定义是一样的。
怎样画出决策树?
基本想法
构造数的基本想法是随着树深度的增加,节点的熵迅速地降低。熵降低的速度越快越好,这样我们有望得到一颗高度最矮的决策树。
举例说明
下图为14组历史数据,记录了14天中小明是否出去打球的情况,以及当天的天气(outlook),温度(temperature),湿度(humidity)和是否刮风(windy)。首先,在没有给定任何天气信息时,根据历史数据,我们只知道新的一天打球的概率是9/14,不打球的概率是5/14。那么,此时的熵为:
接着,我们可以计算出分别以以上四个特征(天气,温度,湿度和是否刮风)为根节点时的最初的熵与经过分支之后的熵的变化值:
对于基于天气的划分,
- 当outlook=sunny时,有2/5的概率打球,3/5的概率不打球,则可以算出熵值为;
- 同样地,outlook=overcast时,熵值为0;
- outlook=rainy时,熵值为0.971。
而根据历史数据统计,outlook取值为sunny,overcast,rainy的概率分别为5/14,4/14,5/14,所以当已知变量outlook的值时,信息熵为:
这样一来,系统熵就从0.940下降到了0.693,信息增益gain(outlook)=0.940-0.693=0.247。
同样可以计算出gain(temperature)=0.029,gain(humidity)=0.152,gain(windy)=0.048。
gain(outlook)最大,即outlook在第一步使系统的信息熵下降得最快,所以决策树的根节点就取outlook。
以什么标准来确定节点?
在上面的例子中,我们用信息增益gain来确定下一个节点是什么特征,我们一般称这种方法为ID3。
但是这种方法有个缺点,就是当历史数据中有一些特征中存在的属性较多,但每个属性对应的样本个数很少时,ID3很难画出真正的决策树。
比如在历史数据中增加一列特征ID,表示第几天,那么ID这个特征中包含的属性有1,2,……,14,每个属性都只包含一个样本,那么如果要将ID作为根节点来划分的话,根据上例的分析可以得出信息熵已经归零,即它的信息增益一定是最大的。
所以,我们可以使用C4.5方法,用信息增益率为标准划分节点:
因为属性很多,所以熵值一定很大,那么其信息增益率就会减小,就不会被选作根节点了。
除了用ID3和C4.5之外,CART方法用Gini系数作为标准也很常用。
用什么来评价一棵决策树的好坏?
评价函数:
其中,是指第个叶节点上的样本个数,是指第个叶节点的熵(或Gini系数)。评价函数越小,说明得到的决策树越好。
决策树剪枝
如果不剪枝,最后形成的决策树很有可能一个叶节点对应一个样本,这对训练集来说准确率达到了百分之百,但在测试集中效果很差,即过拟合现象。预剪枝和后剪枝都可以防止过拟合现象。
在预剪枝中,可以规定一个深度限制为3,则决策树中划分出三层节点后就会停止;或者规定一个节点中的样本数少于50个时停止。
在后剪枝中,评价函数被改变为如上图所示,越大,对叶节点数的要求越严格。
由决策树到随机森林
森林:建立多个决策树放到一起,形成一个森林,将测试数据依次输入这多个决策树,得到最终结果。假设有三棵树,输入测试数据后依次得到1,1,0,那么对于分类问题来说,得到的结果为1;对于回归问题来说,得到的结果可以是平均数0.67。
随机:
- 1、样本的选择随机性:假设有从1到10共十个样本,从这个样本中有放回地抽取六个样本,用这六个样本建立第一个决策树,而不是用所有的样本,这样可以避免过拟合。像以上这样取十次,建立十个决策树,则构成了一个随机森林。
- 2、特征的选择随机性:像之前的那个例子一样,不一定哪个特征对最终结果有利或有害,所以构建每个决策树时并不用到所有特征,而是无放回地抽取其中几个特征。比如从总的八个特征中选出六个特征参与某个决策树的构建。