机器学习 深度学习 NLP 搜索推荐 等 索引目录
新的一年,新年快乐~
好久没有上来了,这两个月一直在忙paper的事儿,然后今天再看以前学习的知识,竟然有些生疏,所以学习是一个持之以恒的事儿,希望自己能够坚持下去。因为自己也是新手吧,很多知识可能理解的也不够到位,希望自己能够和大家一起学习,熟练掌握这些知识。
Boosting系列算法里主要的算法有AdaBoost算法和提升树系列算法,而提升树系列算法里广泛应用的算法是GBDT(Gradient Boosted Decision)和XGBoost。GBDT是以决策树(CART树)为基函数的梯度提升算法,XGBoost是对GBDT的改进,本次主要来复习一下GBDT的相关理论知识,主要内容参考邹老师的PPT。
梯度提升算法的目标是寻找最优 F ( x ) F(x) F(x)(即,损失函数Loss Function),使得损失函数在训练集上的期望最小。它的基本思想是每一步以来损失函数的梯度方向产生一个弱模型,并将其加权累加到总模型中,即:
F m ( x ⃗ ) = F m − 1 ( x ⃗ ) + a r g m i n f ∈ H ∑ i = 1 n L ( y i , F m − 1 ( x i ⃗ ) + f ( x i ) ) ( 式 1 ) F_{m}(\vec{x})=F_{m-1}(\vec{x})+\underset{f\in H}{arg min}\sum_{i=1}^{n}L(y_{i},F_{m-1}(\vec{x_{i}})+f(x_{i})) (式1) Fm(x)=Fm−1(x)+f∈Hargmini=1∑nL(yi,Fm−1(xi)+f(xi))(式1)
上式中, f ( ⋅ ) f(\cdot) f(⋅)是基函数, L ( ⋅ ) L(\cdot) L(⋅)是损失函数,其典型定义为典型定义为
L ( y , F ( x ⃗ ) ) = 1 2 ( y − F ( x ⃗ ) 2 ( 式 2 ) L(y,F(\vec{x}))=\frac{1}{2}(y-F(\vec{x})^{2} (式2) L(y,F(x))=21(y−F(x)2(式2)
L ( y , F ( x ⃗ ) ) = ∣ y − F ( x ⃗ ) ∣ ( 式 3 ) L(y,F(\vec{x}))=\left | y-F(\vec{x}) \right |(式3) L(y,F(x))=∣y−F(x)∣(式3)
从式(1)可以看出,梯度提升算法主要问题就是找出最优基函数 f ( ⋅ ) f(\cdot) f(⋅),使用贪心法来选择最优基函数比较困难,故采用梯度下降法来近似计算:
将样本带入基函数f得到一组 f ( x 1 ) , f ( x 2 ) , . . . . , f ( x n ) f(x_1),f(x_2),....,f(x_n) f(x1),f(x2),....,f(xn)向量,从而损失函数L退化为向量 L ( y 1 , f ( x 1 ) ) , L ( y 2 , f ( x 2 ) ) , . . . , L ( y n , f ( x n ) ) L(y_1,f(x_1)),L(y_2,f(x_2)),...,L(y_n,f(x_n)) L(y1,f(x1)),L(y2,f(x2)),...,L(yn,f(xn))
F m ( x ⃗ ) = F m − 1 ( x ⃗ ) − γ m ∑ i = 1 n ▽ f L ( y i , F m − 1 ( x i ⃗ ) ) ( 式 4 ) F_{m}(\vec{x})=F_{m-1}(\vec{x})-\gamma _{m}\sum_{i=1}^{n}\bigtriangledown _{f}L(y_{i},F_{m-1}(\vec{x_{i}})) (式4) Fm(x)=Fm−1(x)−γmi=1∑n▽fL(yi,Fm−1(xi))(式4)
式中, γ \gamma γ为梯度下降的步长,使用线性搜索求最优步长:
γ m = a r g m i n γ ∑ i = 1 n L ( y i , F m − 1 ( x i ⃗ ) − γ ▽ f L ( y i , F m − 1 ( x i ⃗ ) ) ) ( 式 5 ) \gamma _{m}=\underset{\gamma }{arg min}\sum_{i=1}^{n}L(y_{i},F_{m-1}(\vec{x_{i}})-\gamma\bigtriangledown _{f}L(y_{i},F_{m-1}(\vec{x_{i}})) ) \ (式5) γm=γargmini=1∑nL(yi,Fm−1(xi)−γ▽fL(yi,Fm−1(xi))) (式5)
提升算法的步骤:
1)初始给定模型为常数
2)对于 m = 1 m=1 m=1到 M M M
梯度提升的典型基函数即决策树(尤其是CART),GBDT是梯度提升(GB)和决策树(DT)的结合,这里的决策树是弱回归树,这就限制了DBDT以CART回归树作为基函数,进而将核心问题转化为,如何使用数据-------拟合一棵CART树?
对于CART分类树的介绍已在前面的一篇决策树的博文里面讲过,这里不再赘述。GBDT中使用的是CART回归树,回归树的生成步骤和分类树类似,但是每个结点不再是类别,而是预测值,这个预测值是该结点中所有样本的平均值。CART分类树的
最佳切分点选择原则是Gini指标,选择Gini指数最小的特征及其对应的切分点作为最优特征与最优切分点,而CART回归树中的衡量标准是最小平方残差,其思想是,让组内方差最小,对应组间方差最大,即树分裂的左枝和右枝差异化最大。
邹博老师的PPT里内容讲的很全面,这里就贴一下邹博老师的关于GBDT的课件内容:
GBDT和随机森林(random forest)都是由多棵树组成,最终的结果都是由多棵树一起决定,它们都是属于集成学习(ensemble learning)的范畴。集成学习下有两个重要的策略Bagging和Boosting。
1)随机森林属于Bagging算法,每个分类器都随机从原样本中做有放回的采样,然后分别在这些采样后的样本上训练分类器,然后再把这些分类器组合起来,采用多数投票等来决定最终结果,GBDT属于Boosting算法,通过迭代地训练一系列的分类器,每个分类器采用的样本分布都和上一轮的学习结果有关 ,最终将所有结果加权累加起来。
2)组成随机森林的树可以为回归树,也可以是分类树;但GBDT只能是回归树;
3)组成随机森林的树可以并行生成;而组成GBDT的树与上一轮的树相关,只能串行生成;
下一篇就来复习一下XGBoost,以及两者之间的主要区别。
借此感谢一下邹博老师,我学术上的男神老师~