传统的机器学习方法——决策树(下)

1 决策树的剪枝

1.1 剪枝介绍

在决策树学习中将已生成的树进行简化的过程称为剪枝。具体地,剪枝从已生成的树上裁掉一些子树或叶结点,并将其根结点或父结点作为新的叶结点,从而简化分类树模型,这就是决策树的剪枝。

1.2 损失函数

1.2.1 定义

决策树的剪枝往往通过极小化决策树整体的损失函数或代价函数来实现。设树T的叶结点个数为 |T|,t 是树 T 的叶结点,该叶结点有 Nt 个样本点,其中 k 类的样本点有 Ntk 个,k=1,2,…,K, Ht(T) 为叶结点 t 上的经验熵,α>=0为参数,则决策树学习的损失函数可以定义为损失函数
其中经验熵为:
经验熵
在损失函数中,将式子右端的第1项记作
1
这时有
2
上式中,C(T) 表示模型对训练数据的预测误差,即模型与训练数据的拟合程度,|T| 表示模型复杂度,参数 α>=0 控制两者之间的影响。较大的促使选择较简单的模型(树),较小的 α 促使选择较复杂的模型(树)。α=0 意味着只考虑模型与训练数据的拟合程度,不考虑模型的复杂度。

1.2.2 损失函数的优点

剪枝,就是当 α 确定时,选择损失函数最小的模型,即损失函数最小的子树。当 α 值确定时,子树越大,往往与训练数据的拟合越好,但是模型的复杂度就越高;相反,子树越小,模型的复杂度就越低,但是往往与训练数据的拟合不好,损失函数正好表示了对两者的平衡。

1.3 剪枝算法

输入:生成算法产生的整个树 T,参数 α;
输出:修建后的子树 Tα。

  1. 计算每个结点的经验熵;
  2. 递归地从树的叶结点向上回缩。
    设一组叶结点回缩到父结点之前与之后的整体树分别为 Tb 与 Ta ,其对应的损失函数值分别时 Cα(Tb) 与 Cα(Ta) ,如果 Cα(Ta)<=Cα(Tb) ,则进行剪枝,即将父结点变成新的叶结点。
  3. 返回2,直至不能继续为止,得到损失函数最小的子树 Tα。
    剪枝

2 CART算法

2.1 算法介绍

CART算法由以下两步组成:

  1. 决策树的生成:基于训练数据集生成决策树,生成的决策树要尽量大;
  2. 决策树剪枝:用验证数据集对已生成的树进行剪枝并选择最优子树,这时用损失函数最小作为剪枝的标准。

2.2 CART生成

2.2.1 介绍

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

2.2.2 回归树的生成

假设 X 与 Y 分别为输入和输出变量,并且 Y 是连续变量,给定训练数据集
训练数据集
考虑如何生成回归树。
一个回归树对应着输入空间的一个划分以及在划分的单元上的输出值。假设已将输入空间划分为 M 个单元 R1,R2 ,…,Rm,并且在每个单元 Rm 上有一个固定的输出值 Cm,于是回归树模型可表示为
回归树模型
当输入空间的划分确定时,可以用平方误差来表示回归树对于训练数据的预测误差,用平方误差最小的准则求解每个单元上的最优输出值。
平方误差如下:
平方误差

2.2.2.1 最小二乘回归树生成算法

输入:训练数据集 D;
输出:回归树 f(x)。
在训练数据集所在的输入空间中,递归地将每个区域划分为两个区域并决定每个子区域上的输出值,构建二叉决策树:

  1. 选择最优切分变量 j 与切分点 s ,求解:
    1
    遍历变量 j ,对固定的切分变量 j 扫描切分点 s ,选择使上式达到最小值的对 (j,s)。
  2. 用选定的对 (j,s) 划分区域并决定相应的输出值:
    2
  3. 继续对两个子区域调用步骤 1 ,2 ,直至满足停止条件。
  4. 将输入空间划分为 M 个区域 R1,R2,…,Rm,生成决策树:
    4

2.2.3 分类树的生成

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

2.2.3.1 基尼指数

分类问题中,假设有 K 个类,样本点属于第 k 类的概率为 Pk,则概率分布的基尼指数定义为
2
对于二类分类问题,若样本点属于第1个类的概率是 p,则概率分布的基尼指数为
2
对于给定的样本集合 D,其基尼指数为
3
这里,Ck是 D 中属于第 k 类的样本子集,K 是类的个数。
如果样本集合 D 根据特征 A 是否取某一可能 α 被分割成 D1和 D2 两部分,即
3
则在特征 A 的条件下,集合 D 的基尼指数定于为
6
基尼指数表示集合 D 的不确定性,基尼指数值越大,样本集合的不确定性也就越大,这一点与熵相似。

2.3 CART生成算法

输入:训练数据集 D ,停止计算的条件;
输出: CART 决策树。
根据训练数据集,从根结点开始,递归地对每个结点进行以下操作,构建二叉决策树:

  1. 设结点的训练数据集为D,计算现有特征对该数据集的基尼指数,此时,对每一个特征,对其可能取得每个值a,根据样本点对A=a的测试为“是”或“否”将D分割成两部分,利用基尼指数公式计算A=a时的基尼指数。

  2. 对所有可能的特征A以及他们所有可能的切分点a中,选择基尼指数最小的特征及其对应的切分点作为最有特征与最优切分点。依最优特征与最优切分点,从现结点生成两个子结点,将训练数据集依特征分配到两个子结点中去。

  3. 对两个子结点递归地调用1,2,直到满足停止条件。

  4. 生成CART决策树。

3 CART剪枝

CART剪枝算法:
输入:CART算法生成的决策树 T0;
输出:最优决策树 Tα。
(1)设k=0, T=T0
(2)设α=+∞
(3)自下而上地对各个内部结点t计算C(Tt),|Tt| 以及
5
这里,Tt 表示以 t 为根结点的子树,C(Tt) 是对训练数据的预测误差,|Tt| 是 Tt 的叶结点个数。
(4)自上而下地访问内部结点 t ,如果有 g(t) = α ,进行剪枝,并对叶结点 t 以多数表决法表决其类,得到树 T 。
(5)设 k=k+1, αk=α, Tk=T。
(6)如果 T 不是由根结点单独构成的树,则回到步骤(4).
(7)采用交叉验证法在子树序列 T0,T1,…,Tn 中选取最优子树Tα。

参考文献:
李航. 统计学习方法[M]. 北京:清华大学出版社,2012

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值