码迷,mamicode.com
首页 > 其他好文 > 详细

CART剪枝

时间:2017-12-13 01:58:47      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:mat   介绍   利用   反向   模型   子序列   数据   car   最优   

1. CART剪枝介绍

CART 剪枝算法从完全生长的决策树的底端剪去一些子树,使决策树变小(模型简单),从而能够对未知数据有更准确的预测。CART剪枝算法由两步组成:首先从生成算法产生的决策树\(T_0\)底端开始不断剪枝,直到\(T_0\)的根节点,形成一个子序列\({T_0,T_1,T_3,.....T_n}\),然后通过交叉验证在独立的验证集上对子树序列进行测试,从中选择最优子树。

2. 剪枝的两个过程

2.1 剪枝,形成一个子树序列

在剪枝过程中,计算子树的损失函数\[C_{\alpha}(T) = C(T) + \alpha|T|\]
其中,T为任意子树,\(C(T)\)为对训练数据的预测误差(如基尼系数),\(|T|\)为子树叶节点个数,\(\alpha >= 0\),\(C_{\alpha}(T)\)为参数是\(\alpha\)时的子树\(T\)的整体损失,参数\(\alpha\)权衡训练数据的拟合程度与模型的复杂度。
对于每一个给定的\(\alpha\),都有唯一的最优子树\(T_{\alpha}\)使得\(C_{\alpha}(T)\)最小。
下面是通过\(\alpha\)的变化来解释树的复杂度

\(\alpha\)比较大的时候,最优子树\(T_{\alpha}\)偏小
\(\alpha\)比较小时,最优子树\(T_{\alpha}\)偏大
\(\alpha = 0\)时,最优子树为未剪枝的\(T_0\)
\(\alpha\rightarrow+\infty\),最优子树为根结点树

具体的,从整体树\(T_0\)开始剪枝,对\(T_0\)的的任意内部结点\(t\),以\(t\)为单结点树的损失函数为\[C_{\alpha}(t) = C(t) + \alpha\]
\(t\)为根结点的子树\(T_t\)的损失函数是\[C_{\alpha}(T_t) = C(T_t) + \alpha|T_t|\]
\(\alpha=0\)或充分小时,有不等式\[C_{\alpha}(T_t) < C_{\alpha}(t)\]
\(\alpha\)增大时,必在某一点有\[C_{\alpha}(T_t) = C_{\alpha}(t)\]
此时可以计算得到\[\alpha = \frac{C(t) - C_{\alpha}(T_t)}{|T_t| - 1}\]
\(\alpha\)继续增大时,不等式反向,只要\(\alpha = \frac{C(t) - C_{\alpha}(T_t)}{|T_t| - 1}\)\(T_t\)\(t\)有相同的损失函数值,而\(t\)的结点少,因此\(t\)\(T_t\)更可取,对\(T_t\)进行剪枝。
通过上述方法,我们可以计算出\({(\alpha_0,T_0),(\alpha_1,T_1),....(\alpha_n,T_n)}\)

2.2 在剪枝得到的子树序列\({T_0,T_1,T_2,...T_n}\)中通过交叉验证选取最优子树\(T_{\alpha}\)

具体地,利用独立的验证数据集,测试子树序列\(T_0,T_1,....T_n\)中各棵子树的平方误差或基尼指数。依据平方误差或基尼指数最小来选择其中最优的决策树,其相应的\(\alpha\)也就确定了,得到最优决策树\(T_{\alpha}\)

CART剪枝

标签:mat   介绍   利用   反向   模型   子序列   数据   car   最优   

原文地址:http://www.cnblogs.com/lpworkstudyspace1992/p/8030186.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!