什么是决策树?

决策树算法实现分类问题可以被理解为不断地进行条件语句判断,最终实现分类,如下图:
决策树以及随机森林原理进行判断的分支很像树的枝干,被分出来的类别像是枝干上的叶子,所以将这个图称为决策树。所以,用决策树算法解决问题的第一步就是画出决策树。

决策树的结构

在画决策树之前,要先了解决策树的结构是怎样的。
决策树以及随机森林原理在分类阶段时,从根开始,按照决策树的分类属性逐层往下划分,直到叶节点,获得分类结果。

需要的一些基本概念

画出决策树的第一步即决定哪一个特征适合当作根节点。在这里,我们引入一些概念。

1、熵

在化学中,熵用来衡量一种物质内部的混乱程度,即这种物质的纯度。
在概率论中,设有一事件XX,则它的熵H(X)H(X)可以衡量事件XX发生的不确定性。也就是说,当一个事件发生的概率越大,它的熵值越小。
熵的公式为:
H(X)=i=1nP(X)log2(P(X))H(X)=-\sum_{i=1}^{n}P(X)log_{2}(P(X))
举例来说,假设这里有两组数据,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(p)=k=1Kpk(1pk)=1k=1Kpk2Gini(p)=\sum_{k=1}^{K}p_{k}(1-p_{k})=1-\sum_{k=1}^{K}p_{k}^2
从式子可以看出,当概率越小时,得到的Gini系数越大,这和熵值的定义是一样的。

怎样画出决策树?

基本想法

构造数的基本想法是随着树深度的增加,节点的熵迅速地降低。熵降低的速度越快越好,这样我们有望得到一颗高度最矮的决策树。

举例说明

下图为14组历史数据,记录了14天中小明是否出去打球的情况,以及当天的天气(outlook),温度(temperature),湿度(humidity)和是否刮风(windy)。
决策树以及随机森林原理首先,在没有给定任何天气信息时,根据历史数据,我们只知道新的一天打球的概率是9/14,不打球的概率是5/14。那么,此时的熵为:
决策树以及随机森林原理
接着,我们可以计算出分别以以上四个特征(天气,温度,湿度和是否刮风)为根节点时的最初的熵与经过分支之后的熵的变化值:
决策树以及随机森林原理
对于基于天气的划分,

  • 当outlook=sunny时,有2/5的概率打球,3/5的概率不打球,则可以算出熵值为0.4log2(0.4)0.6log2(0.6)=0.971-0.4log_2(0.4)-0.6log_2(0.6)=0.971
  • 同样地,outlook=overcast时,熵值为0;
  • outlook=rainy时,熵值为0.971。
    而根据历史数据统计,outlook取值为sunny,overcast,rainy的概率分别为5/14,4/14,5/14,所以当已知变量outlook的值时,信息熵为:
    5/14×0.971+4/14×0+5/14×0.971=0.6935/14\times0.971+4/14\times 0+5/14\times 0.971=0.693(类似于全概率事件)
    这样一来,系统熵就从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方法,用信息增益率为标准划分节点:
=gainH信息增益率=\frac{gain}{H}
因为属性很多,所以熵值一定很大,那么其信息增益率就会减小,就不会被选作根节点了。
除了用ID3和C4.5之外,CART方法用Gini系数作为标准也很常用。

用什么来评价一棵决策树的好坏?

评价函数:
C(T)=tleafNt×H(t)C(T)=\sum_{t\in leaf}N_t\times H(t)
其中,NtN_t是指第tt个叶节点上的样本个数,H(t)H(t)是指第tt个叶节点的熵(或Gini系数)。评价函数越小,说明得到的决策树越好。

决策树剪枝

如果不剪枝,最后形成的决策树很有可能一个叶节点对应一个样本,这对训练集来说准确率达到了百分之百,但在测试集中效果很差,即过拟合现象。
决策树以及随机森林原理预剪枝和后剪枝都可以防止过拟合现象。
在预剪枝中,可以规定一个深度限制为3,则决策树中划分出三层节点后就会停止;或者规定一个节点中的样本数少于50个时停止。
在后剪枝中,评价函数被改变为如上图所示,α\alpha越大,对叶节点数的要求越严格。

由决策树到随机森林

森林:建立多个决策树放到一起,形成一个森林,将测试数据依次输入这多个决策树,得到最终结果。假设有三棵树,输入测试数据后依次得到1,1,0,那么对于分类问题来说,得到的结果为1;对于回归问题来说,得到的结果可以是平均数0.67。
随机:

  • 1、样本的选择随机性:假设有从1到10共十个样本,从这个样本中有放回地抽取六个样本,用这六个样本建立第一个决策树,而不是用所有的样本,这样可以避免过拟合。像以上这样取十次,建立十个决策树,则构成了一个随机森林。
  • 2、特征的选择随机性:像之前的那个例子一样,不一定哪个特征对最终结果有利或有害,所以构建每个决策树时并不用到所有特征,而是无放回地抽取其中几个特征。比如从总的八个特征中选出六个特征参与某个决策树的构建。

相关文章: