参考
https://www.cnblogs.com/ModifyRong/p/7744987.html
李航《统计学习方法》
提升树:
以决策树为基函数的提升方法为提升树

表示为决策树的加法模型,同时采用前向分布算法:
fM(x)=∑Mm=1T(x;Θm);
其中,M为树的个数,T(x;Θm)为决策树,Θm为决策树参数;
首先确定初始提升树f0(x)=0,第步的模型是:
fm(x)=fm−1(x)+T(x;θm)),其中fm−1(x)为当前模型,通过经验风险极小化确定下一颗决策树参数Θm:
Θ^m=argminΘm∑i=1NL(yi,fm−1(xi)+T(xi;Θm))
回归树及参数
已知一个训练数据集:
T=(x1,y1),(x2,y2),...,(xN,yN),xi∈χ⊆Rn,
如果将输入空间χ划分为J个不相交的区域R1,R2,...,RJ,并且在每个区域上确定输出的常量cj,那么树可以表示为:
T(x;Θ)=∑j=1JcjI(x∈Rj)
其中,参数Θ=(R1,c1),(R2,c2),...,(Rj,cJ)表示树的区域划分和各区域上的常数,J是回归树的复杂度,即叶节点个数。
CART TREE的生成过程实际上就是一个选择特征的过程。
假设我们目前总共有 M 个特征。
第一步我们需要从中选择出一个特征j,做为二叉树的第一个节点。然后对特征j的值选择一个切分点m.一个样本的特征j的值 如果小于m,则分为一类,如果大于m,则分为另外一类。如此便构建了CART树的一个节点。其他节点的生成过程和这个是一样的。现在的问题是在每轮迭代的时候,如何选择这个特征j,以及如何选择特征j的切分点m:
寻找切分点的公式:
mins[minc1∑xi∈R1(yi−c1)2+minc2∑xi∈R2(yi−c2)2]
即:选择合适的切点,使得平方损失最小
提升树的损失函数
在前向算法的第m步,给定当前模型fm−1(xi),需求解
Θ^m=argminΘm∑i=1NL(yi,fm−1(xi)+T(xi;Θm))
得到Θ^m,即第m棵树的参数。
平方损失函数:L(y,f(x))=(y−f(x))2即:
L(y,fm−1(x)+T(x;Θm))=[y−fm−1(x)−T(x;Θm)]2=[r−T(x;Θ)]2
上式中r为残差,所以提升树在第一部以后只需要拟合当前模型的残差即可
算法步骤:
输入:训练数据
T=(x1,y1),(x2,y2),...,(xN,yN),xi∈χ⊆Rn,yi∈γ⊆R
输出:提升树fM(x)
1.初始化f0(x)=0;
2.对m=1,2,...,M:
(a)计算残差:rmi=yi−fm−1(xi),i=1,2,...,N
(b)拟合残差rmi学习一个回归树,得到T(x;Θm)
(c)更新fm(x)=fm−1(x)+T(x;Θm)
3.得到回归提升树:
fM(x)=∑m=1MT(x;Θm)
例:《统计学习方法》149-150看完全明白了
梯度提升:利用损失函数的负梯度在当前模型的值作为回归问题提升树算法中的残差的近似值去拟合一个回归树,GBDT每一轮迭代的时候都去拟合损失函数在当前模型下的负梯度。这样每轮训练的时候都能够让损失函数尽可能快的减小,尽快的收敛达到局部最优解或者全局最优解。
整理的有点乱。。