Boosting和BDT公式推导
原理:
提升方法(Boosting)
提升方法:加法模型+前向分布算法。
加法模型
一些个基模型加权累加,可以是任何模型。
其中,\(b(x;\gamma_m)\) 为基函数,\(\gamma_m\) 为基函数的参数,\(\beta_m\)为基函数的系数。
在给定训练数据 \(\lbrace(x_i,y_i)^N_{i=1}\rbrace\) 及损失函数\(L(y,f(x))\)的条件下,学习加法模型\(f(x)\)成为经验风险极小化问题:
前向分布算法求解这一优化问题的思路:因为学习的是加法模型,可从前向后,每次只学习一个基函数模型和系数,逐步逼近优化目标函数(3),则可以简化优化复杂度。具体的每步只需要优化如下损失函数:
前向分步算法
拿这个\(f(x)=0\) 基础模型举例
输入:
- 训练数据 \(T=\lbrace (x_1,y_1),(x_2,y_2),...,(x_N,y_N)\rbrace\);
- 损失函数 \(L(y,f(x))\)
- 基函数集合 \(\lbrace b(x;y) \rbrace\)
输出:
1、 初始化 \(f_0(x)=0\) 基础模型
2、 对 $ m=1,2,...,M $
- a. 极小化算是函数\[\begin{equation}\begin{split} (\beta_m,\gamma_m)=arg\min_{\beta_m\gamma_m}\sum_{i=1}^M L(y_i,f_{m-1}(x_i)+\beta b(x_i;\gamma)) \end{split}\end{equation} \]
上一步的模型加当前要学习的模型,在损失函数极小化后得到参数 \(\beta_m,\gamma_m\) 是当前这步的基模型对应的参数集。
- b. 更新,在m-1步的基础上构建新的精度更高的模型:
3、不断累加得到加法模型
把一个整体的函数学习问题,转化为一个循环迭代过程,每一步只学习其中一部分 \(f_{m-1}(x_i)+\beta b(x_i;\gamma)\)
提升决策树(BDT,Boosting Decision Tree):
其实就是boosting集成了树模型。
在这Boosting基础上定两个约束:
- 基模型=决策树模型
- \(\beta_m\)都约束为1:每一颗决策树权重都为1
提升决策树模型:
其中:\(T(x;\Theta_m)\) 表示决策树;\(\Theta_m\)为决策树的参数;M为树的个数。
学习过程:
采用前向分步算法,首先确定初始提升决策树 $f_0(x)=0 $ (单根节点=0的树), 第m步的模型是
其中,\(f_m-1(x)\) 为当前模型,通过经验分享极小化确定下一颗决策树的参数\(\Theta_m\),
已知训练数据集 \(T=\lbrace(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\rbrace , x_i \in \chi \subseteq R^n\), \(\chi\) 为输入空间,Y为输出空间。
如果将输入控件\(\chi\) 划分为J个互不相交的区域 \(R_1,R_2,...R_j\) (树模型本质离散化) ,并且在每个区域上确定输出的常量 \(c_j\) 。那么决策树可表示为:
每一个区域判断x属不属于Rj,用cj进行输出,不是输出0
结构上是一颗树,但在公式表示上,我只关心x落在哪个叶子节点上。
其中,参数\(\Theta = \lbrace(R_1,c_1),(R_2,c_2),...,(R_j,c_j)\rbrace\) 表示决策树的区域划分和各区域上的常量值。J 是决策树的复杂度即叶子节点个数。
提升决策树使用以下前向分步算法:
在前向分步算法的第m步,给定当前模型 \(f_{m-1}(x)\),需要求解
得到 \(\hat\Theta_m\), 即第m颗树的参数。
当采用平方误差损失函数时,
其损失变为
其中,r是当前模型拟合数据的残差(residual)。对回归问题的提升决策树,只需要简单地拟合当前模型的残差。
对比公式(14)和(15)中的r,如果把r作为一个实际输出的话,公式(15)就是在r这个实际输出上去学习一个决策树模型。换句话说,在当前步T的学习过程中,不是奔着y去学习的,而学习的是实际输出y与上一个模型已经学号的部分的差值(没学好的那部分)。
回归问题的提升决策树的算法过程:
- 输入:训练数据集 \(T=\lbrace(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\rbrace\)
- 输出:
提升决策树 \(f_M(x)\)
(1)初始化 \(f_0(x)=0\)
(2)对 \(m=1,2,...,M\)- a. 按照式(15)计算残差
\[r_{m i}=y_i - f_m-1(x_i) , i=1,2,...,N \]- b.拟合残差\(r_{m i}\) 学习一个回归树,得到\(T(x;\Theta_m)\)
- c.更新 \(f_m(x)=f_{m-1}(x)+T(x;\Theta_m)\)
得到回归提升决策树