AdaBoost-DTree

根据AdaBoost的思想,
(LXTML笔记)Gradient Boosted Decision Tree
我们希望在生成多个分类器gt的时候,增加一个类似于adaboost的权重ut,即gt=A(D,ut),在最后组成最终分类器G的时候,增加权重at=at(ut),这是整体的思路。

那么现在的问题是如何嵌入一个ut,使得gt=DTree(D,ut),注意到之前的Random-Forest等算法中的gt仅仅是DTree(D).

(LXTML笔记)Gradient Boosted Decision Tree

如上图所示,本来加入ut应该是在Ein中进行的,但是这不一定能很好地解出,所以这里讲其看成一个black box。注意到ut在adaboost是怎么引进来的,他是由boost抽样引进的,所以,我们采用红框所示的抽样方法。即对每一组数据(xn,yn)un的比例概率来抽取,这样的话可以近似地处理Ein且不用改最优化的框架(仅仅是“改”了数据)。

(LXTML笔记)Gradient Boosted Decision Tree

权重at仍采用和adaboost一样的操作。

adaboost-DT用于二分类问题

(LXTML笔记)Gradient Boosted Decision Tree

如上更新,注意到由于是二分类问题yn是±1,那么ut可以有很好地表达式,这个结果和我们要回传的G长得十分类似。

(LXTML笔记)Gradient Boosted Decision Tree

如上图所示,用一种粗糙的解释,实际上上上图中橙色框的部分表示的是一种类似于SVM中的margin,我们希望margin越大越好,即如上图灰色框所示,我们最终希望ut+1越下越好,那么我们可以再弱一些,我们希望能deresasesn=1Nun(t).
(LXTML笔记)Gradient Boosted Decision Tree

(LXTML笔记)Gradient Boosted Decision Tree
采用的是GD,对exp在原点附近泰勒展开后得知我们需要使得n=1Nun(t)(ynh(xn))最小化,其中h(xn)是变量,进一步化简,
(LXTML笔记)Gradient Boosted Decision Tree

这里的推导说明,实际上最小化EADA相当于最小化Einu(t),所以推来推去,我们发现了最好的gt实际上就是可以通过adaboost来解决的,即gt+1utgt来获得,忘记的同学可以回到adaboost去查看。

(LXTML笔记)Gradient Boosted Decision Tree

得到最优的gt之后,接下来,我们要处理最优的步长,由上面的推导,我们能得出最优的步长就是ln1ϵtϵt!实在是震精!

Gradient Boosting for Regression

(LXTML笔记)Gradient Boosted Decision Tree
推广上面adaboost-DT的loss项,可以推广到一般形式,下面将考虑regression问题,即考虑squared-error。

(LXTML笔记)Gradient Boosted Decision Tree

按照上面的推导的话遇到了一个问题,如果要min只要直接取h(xn)=+就好了,不过实际上h(xn)仅仅是代表一个方向而已(想一想GD),长度应该是由步长控制的,所以,我们尝试对h(xn)做点限制,增加一个(h(xn)2)
(LXTML笔记)Gradient Boosted Decision Tree

通过配方,我们发现了一个惊人的事实,如果假设h是线性的话,那么直接对{(xn,ynsn)}做LR即可以得到一个最优解!

(LXTML笔记)Gradient Boosted Decision Tree

得到最优h之后,考虑步长,稍微做点代数边形,我们发现一个事实,最优的步长也是可以通过线性回归获得,而且是一元!

对算法重新总结一下即
(LXTML笔记)Gradient Boosted Decision Tree

相关文章: