决策树学习整理

参考资料:

《机器学习方法》 李航

一、概述

决策树可以视为一个if-then规则的集合。决策树的路径(即if-then规则的集合)具有一个重要的性质:互斥且完备,即,每个实例有且只有一条规则能够覆盖。

决策树学习的损失函数通常是正则化的极大似然函数(?),目标是最小化损失函数。从所有可能的决策树中选取最优决策树是NP完全问题(?),现实中决策树的学习算法通常采用启发式方法(根据经验,可能得到的不是最好的结果),近似求解这个最优化问题,这样得到的决策树是次最优的。

决策树递归地选择最优特征,根据该特征分割训练数据。自上而下地生成决策树之后,还需要对已生成的决策树自下而上地剪枝,提升泛化能力。可以通过去掉过于细分的叶结点,使其回退到父结点,甚至更高的结点,然后将父结点或者更高的结点作为新的叶结点。

如果特征数量很多,可以在决策树开始学习的时候进行特征选择,只留下对训练数据有足够分类能力的特征。

决策树学习算法包括:特征选择;决策树的生成;决策树的剪枝。

决策树可视为条件概率分布模型P(Y|X),深浅不同的决策树对应不同复杂程度的概率模型。决策树的生成对应模型的局部选择(只考虑局部最优),剪枝对应模型的全局选择(考虑全局最优)。

二、特征选择

我们要选择对训练数据具有分类能力的特征。如果一个特征进行分类的结果和随机分类的结果没有很大的差别,说明这个特征没有分类能力,我们可以去掉这样的特征。通常特征选择的准则是信息增益(或信息增益比)。

1. 熵

熵是一种随机变量不确定性的度量。设X是一个离散型随机变量,取值有限,概率分布为

P(X=x_i)=p_i, i=1,2,3,...,n

随机变量X的熵为

H(X)=-\sum_{i=1}^n{p_i}logp_i

条件熵H(Y|X)表示已知随机变量X的条件下随机变量Y的不确定性,定义为给定X的条件下Y的条件概率分布的熵对X的期望

H(Y|X)=\sum _{i=1}^{n}{p_i}H(Y|X=x_i) 

2. 信息增益

信息增益是得知特征X的信息而使类别Y的信息的不确定性减少的程度,使用经验熵和经验条件熵之差表示,

g(D,A)=H(D)-H(D|A)

3. 信息增益比

使用信息增益作为划分特征的依据,容易倾向选择取值较多的特征,使用信息增益比可以对该问题进行校正。特征A对数据集D的信息增益比定义为,特征A的信息增益与特征A 的熵之比

g_{R}(D,A)=\frac{g(D,A)}{H_{A}(D)}

三、生成决策树

1. ID3算法

ID3算法的核心是在决策树的各个结点上使用信息增益准则选择特征。从根结点开始,对结点计算所有可能的特征的信息增益,选择信息增益最大的特征作为结点的特征,对子结点递归地调用该方法,直到所有的特征的信息增益都很小,或者没有特征可以选择。

ID3算法只有树的生成,没有剪枝,所以生成的树容易过拟合。

2. C4.5算法

对ID3进行改进,使用信息增益比选择特征,其他并无二致。

四、剪枝

决策树的剪枝通过极小化决策树整体的损失函数(实际上就是加上了正则项的损失函数)来实现。在分类问题中,决策树的损失函数定义为

C_{\alpha}(T)=\sum_{t=1}^{|T|}N_tH_t(T)+\alpha|T|

|T|是这棵树的叶结点的个数,N_t是叶节点中的样本数,H_t(T)是叶节点t的经验熵,\alpha为正则化参数。这个损失函数就是,度量拟合效果的指标+正则化参数*正则项。

树的剪枝算法:

输入:生成算法得到的树T,参数\alpha

输出:修剪后的子树T_\alpha

(1)计算每个结点的经验熵;

(2)递归地从树的叶结点向上回缩,即,如果剪枝后损失函数的值减小,则剪枝,否则不剪。

剪枝的过程只考虑剪枝前和剪枝后两个树的损失函数之差,其计算可以在局部进行,所以决策树的剪枝算法可以由一种动态规划的算法(?)实现。

五、CART算法

CART即分类与回归树,同样由特征选择、树的生成、剪枝组成,既可以用于分类,也可以用于回归。CART假设决策树是二叉树,递归地二分特征,由决策树生成(使用训练数据集,生成的树要尽可能大)和决策树剪枝(使用验证数据集,使用最小化损失函数作为剪枝的标准)组成。

1. CART生成:回归树

决策树生成的过程就是递归地构建二叉决策树的过程。对于回归树,使用平方误差最小准则,对于分类树,使用基尼指数最小化准则。

构建决策树的过程,采用启发式算法划分输入空间,寻找最优分割变量和最优分割点,目标为求解优化问题

\min\limits_{j,s} \left[ \min\limits_{c_1}\sum\limits_{x_i\in R_1(j,s)}(y_i-c_1)^2+\min\limits_{c_2}\sum\limits_{x_i\in R_2(j,s)}(y_i-c_2)^2 \right]

在训练数据集所在的输入空间中,递归地将每个区域划分为两个子区域。划分的方法是,遍历特征j,对固定的切分特征j扫描切分点s,选择使上式最小的\left (j,s \right )对。

c_1,c_2就是对应划分区域的因变量均值。这样生成的回归树称为最小二乘回归树。

2. CART生成:分类树

分类树使用基尼指数选择最优特征,同时决定该特征的最优二值分割点。

基尼指数:在分类问题中,如果有K个类别,样本点属于第k类的概率为p_k,该概率分布的基尼指数为

Gini(p)=\sum\limits_{k=1}^Kp_k(1-p_k)

基尼指数与熵相似,取值越大说明样本集合的不确定性越大。在构建CART分类树的过程中,递归地计算每个特征A和其每一个可能的取值a,计算每个划分下的样本集合的基尼指数;选择最小的基尼指数对应的特征和切分点作为最优特征和最优切分点,从现结点生成2个子结点,分配样本。

3. CART剪枝

CART剪枝算法有两步:从生成的决策树T_0底端开始剪枝,直到T_0的根结点,形成一个子树序列\left \{T_0,T_1,\cdots,T_n \right \};使用交叉验证法在独立的验证集上测试子树序列,选择最优子树。

剪枝使用的损失函数为

C_\alpha(T)=C(T)+\alpha\left|T \right |

Breiman等人证明:可以用递归地方法对树剪枝。将\alpha从小增加,产生从小到大的0=\alpha_0< \alpha_1<\cdots<\alpha_n<+\infty序列,由此可以得到一系列的小区间;剪枝得到的子树序列对应着区间\alpha\in \left[\alpha_i,\alpha_{i+1} \right),i=0,1,\cdots,n的最优子树序列\left\{ T_0,T_1,\cdots, T_n \right \},序列中的子树是嵌套的。

对于以t为根结点的子树T_t,一定存在一个\alpha,使得剪枝后的子树与以t为单结点树的损失函数值相同,而这个单结点树更简单,所以对T_t剪枝。

\alpha=\frac{C(t)-C(T_t)}{\left|T_t \right|-1}时,单结点树和剪枝后的子树损失函数值相同,以此作为序列中不同剪枝子树对应的\alpha。计算T_0中每一个内部节点t对应的最优\alpha值(记为g(t)=\frac{C(t)-C(T_t)}{\left|T_t \right|-1}),在T_0中按照g(t)最小剪枝,得到T_1(表示是除了T_0外最复杂的树),同时将最小的g(t)设为\alpha_1,则T_1为区间\left [\alpha_1,\alpha_2\right)的最优子树。

如此剪枝下去,不断增加\alpha的值,产生新的区间,直到到达根结点。然后,利用验证数据集来测试子树序列\left\{ T_0,T_1,\cdots, T_n \right \},均方误差最小或者基尼指数最小的决策树就认为是最优的决策树。另外,\left\{ T_0,T_1,\cdots, T_n \right \}对应正则化参数序列\left\{ \alpha_0,\alpha_1,\cdots, \alpha_n \right \},当最优子树T_k确定时。对应的最优正则化参数\alpha_k也确定了,即得到最优决策树T_\alpha

  • 56
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值