目录
1、简介
决策树分为分类决策树和回归决策树,前者可用于处理离散型数据,后者可用于处理连续型数据。
分类决策树的代表方法为:
- ID3 算法:以信息增益为准则来生成树
- C4.5算法:以信息增益率为准则来生成树
- CART算法:以基尼系数为准则为生成树
回归决策树的代表方法为:
- CART算法:以平方误差函数作为损失函数生成树
可以看出决策树的主要的三个算法为ID3算法、C4.5算法和CART算法,其中前两者用于分类任务,后者既可以用于分类任务也可以用于回归。
2、分类决策树构建
主要分为三步
- 特征选择
- 决策树生成
- 决策树剪枝
2.1.特征选择
特征选择也即选择最优划分属性,从当前数据的特征中选择一个特征作为当前节点的划分标准。我们希望在不断划分的过程中,决策树的分支节点所包含的样本尽可能属于同一类,即节点的“纯度”越来越高。而选择最优划分特征的标准不同,也导致了决策树算法的不同。
为了找到最优的划分特征,我们需要先了解一些信息论的知识:
信息熵(经验熵)
从概率统计的角度看,熵是对随机变量不确定性的度量,也可以说是对随机变量的概率分布的一个衡量。熵越大,随机变量的不确定性越大。对同一个随机变量,当它的概率分布为均匀分布时,不确定性最大,熵也最大。对有相同概率分布的不同的随机变量,取值越多的随机变量熵越大。(这是精华)
信息熵:假设样本集合D中第k类样本所占的比例为,则D的信息熵定义为:
Ent(D)越小,即信息熵越小,则D的纯度越高。
注:
1)约定p=0时,plog(p)=0;
2)当D只含一类时,那么这一类的概率就为1,根据计算公式可得Ent(D)=0,即纯度最高。
3)当D中所有类所占比例相同(对于一个随机变量,概率分布为均匀分布时),那么每个类别的概率为1/γ,根据计算公式有:
此时纯度最低。
信息增益
假设离散属性a有V个不同的取值,若使用a来对样本集D进行划分,则会产生V个分支节点, (加有双竖杠表示分支节点样本的数量),为子集中属于类k的集合(加有双竖杠表示每个分支节点中属于第k类的样本的数量)。则可计算该分支节点的信息熵,有:
上式也称为条件熵,也就是在特征a划分下各个节点的信息熵,H(D|a)。之后再根据每个节点上的样本占比给分支节点赋予权重,可计算出以属性a作为划分属性所获得的信息增益为:
1)一般而言,信息增益越大,则意味着用属性a来进行划分所获得的"纯度提升"越大,因此,我们可用信息增益来进行决策树的划分属性选择。
2)著名的ID3 决策树学习算就是以信息增益为准则来选择划分属性。
3)可以看出信息增益的计算:
信息增益 = 原节点的信息熵 – 按a属性划分后每个节点的权值 × 每个节点的信息熵
增益率
实际上,信息增益准则对可取值数目较多的特征有所偏好,举个较为极端的例子可能更好理解:如果特征a的取值能将每一个样本都分到一个节点当中去的时候(如编号等特征),这样每一个节点的信息熵都是0,意味着该情况下的信息增益达到了最大值,然而这样的划分无疑是不具备泛化能力的。
基于此,著名的C4.5决策树算法就使用“增益率”来选择最优划分属性:
IV(a)实际上是衡量以特征a的不同取值将数据集D分类后的不确定性的度量,求的是以特征a为随机变量的熵。如果特征a的取值越多,那么不确定性通常会更大,熵IV(a)越大,则1/IV(a)也会越小。如上面所述的极端情况,以编号为特征进行分类,那么每一个编号值下面就只有唯一的一个样本,则每一个编号取值的概率都是1/D,服从均匀分布,此时熵会非常大。
因此,相当于是在信息增益的基础上乘上了一个惩罚系数:1/IV(a)。即:
Gain_ratio(D,a) = Gain(D,a) * 惩罚系数
特征个数较多时,惩罚参数较小;特征个数较少时,惩罚参数较大,惩罚参数越大越好。
需注意的是,增益率准则对可取值数目较少的属性有所偏好,因此, C4.5算法并不是直接选择增益率最大的候选划分属性,而是使用了一个启发式:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。
基尼指数
CART分类决策树用“基尼指数”来选择划分属性,基尼指数的计算公式如下:
Gini反映了从数据集D中随机抽取两个样本,其类别标记不一样的概率。显然,Gini指数越小,说明类别标记不一样的概率越小,说明随机选取两个样本更有可能是同一类,则纯度越高。
那基尼指数的公式是如何得到的?
假设有K个类,样本点属于第k类的概率为pi,则随机抽取两个样本,类别不一样的概率计算如下:
若使用特征a来对样本集D进行划分,则会产生V个分支节点, ,基尼指数定义为:
选择使上式最小的属性a作为划分属性。
2.2.决策树生成
注:上图中CART为分类决策树
ID3
ID3I算法的核心是在决策树各个节点上根据信息增益来选择进行划分的特征,然后递归地构建决策树。
具体方法:
(1)从根节点开始,对节点计算所有可能的特征的信息增益,选择信息增益值最大的特征作为节点的划分特征;
(2)由该特征的不同取值建立子节点;
(3)再对子节点递归地调用以上方法,构建决策树;
(4)到所有特征的信息增益都很小或者没有特征可以选择为止,得到最终的决策树
ID3的局限:
- 没有剪枝
- 采用信息增益作为选择最优划分特征的标准,然而信息增益会偏向那些取值较多的特征(这也是C4.5C4.5采用信息增益率的原因)
C4.5
C4.5与ID3相似,但对ID3进行了改进,在这里不再详细描述C4.5的实现,就讲一下有哪些基于ID3的改进:
- 用信息增益率来选择划分特征,克服了用信息增益选择的不足
- 在构造树的过程中进行剪枝
- 可对连续值与缺失值进行处理
2.3.剪枝
留出位置以后添加
3、回归决策树的构建
回归树是可以用于回归的决策树模型,一个回归树对应着输入空间(即特征空间)的一个划分以及在划分单元上的输出值。与分类树不同的是,回归树对输入空间的划分采用一种启发式的方法,会遍历所有输入变量,找到最优的切分变量和最优的切分点,即选择第个特征 和它的取值将输入空间划分为两部分,然后重复这个操作。
而如何找到最优的和是通过比较不同的划分的误差来得到的。一个输入空间的划分的误差是用真实值和划分区域的预测值的最小二乘来衡量的,即 :
其中,是每个划分单元的预测值,这个预测值是该单元内每个样本点的值的均值,即:
将输入空间划分为M个单元R1,R2,...,Rm,
那么,和的求解可以用下式进行:
梳理一下上述内容,最小二乘回归树的生成方法如下:
(1)选择最优的切分变量和最优的切分点:即遍历所有特征,对固定的特征扫描所有取值,找到使下式达到最小值的对(,)
(2)用选定的对 (,)划分区域,并确定该区域的预测值;
(3)继续对两个子区域调用上述步骤,直至满足停止条件;
(4)将输入空间划分为M个区域 R1,R2,...RM ,生成决策树:
一个简单的例子
为了便于理解,下面举一个简单实例。训练数据见下表,目标是得到一棵最小二乘回归树。
step1.选择最优切分变量与最优切分点
在本数据集中,只有一个变量,因此最优切分变量自然是x。
接下来我们考虑9个切分点,你可能会问,为什么会带小数点呢?类比于篮球比赛的博彩,倘若两队比分是96:95,而盘口是“让1分 A队胜B队”,那A队让1分之后,到底是A队赢还是B队赢了?所以我们经常可以看到“让0.5分 A队胜B队”这样的盘口。在这个实例中,也是这个道理。
损失函数定义为平方损失函数,将上述9个切分点一依此代入下面的公式,求取使下式值最小的切分点s.
其中
例如,取 s=1.5。此时 ,这两个区域的预测输出值分别为:
因此可以得到下表:
对每一个切分点,把c1,c2的值代入到,求取最小值。
例如对切分点1.5,计算R1空间的loss,为
再计算R2空间的loss,为=15.72
所以m(1.5) = 0+15.72= 15.72
按照该方法可以得到下表:
显然取 s=6.5时,m(s)最小。因此,第一个划分变量j=x,s=6.5
step2
step3
因为我们只剩成了3个区域,对于x>6.5区域是基于第一个最优点s=6.5划分的,因此对于>6.5的区域其预测值为7,8,9,10这四个点的平均值,也就是step2中1中所述的C2
参考: