提升树是以分类树或回归树为基本分类器的提升方法,提升树被认为是统计学习中性能最好的方法之一。
提升树模型
提升树采用向前分步算法,首先确定初始提升树f0(x) = 0,第m步的模型是:
fm(x) = fm-1(x)+T(x;θm)(CART)
其中,fm-1(x)为当前模型,通过经验风险极小化确定下一颗决策树的参数θm:
参数θ表示书的区域划分和个区域上的常数。J是回归树的复杂度即叶节点个数。(在这里找了好久树的参数是什么意思看书的时候太大意了,还以为书中没提,后来才看到。。)
回归问题的提升树算法为:
输入:训练数据集T = {(x1,y1),(x2,y2),…,(xN,yN)},
输出:提升树fM(x).
(1)初始化f0(x) = 0.
(2)对m = 1,2,…,M.
(a)计算残差:
(b)拟合残差通过残差学习一个回归树,得到T(x;θm)。
©更新fm(x) = fm-1(x)+T(x;θm)
(3)得到回归问题提升树:
例子:
有这样的数据集:
学习这个回归树问题的提升树模型。
以上这些都是教怎么去拟合第一颗回归树模型为CART里面的ms我的理解为他就是找到损失最小的区域以及使得最小损失区域的切分点。
根据各切分点算ms,并找到最小的ms。
通过最小的ms拟合第一个回归树T1(x)
f1(x) = T1(x) + f0(x)
到此才开始提升树算法的步骤
计算残差
算平方误差,需要知道每个回归模型的误差,同时也作为一个判断作为迭代结束的条件。
第二步求T2(x),方法与求T1(x)相同只是拟合的是残差表中的数据。
同样需要计算ms,这个ms根据拟合残差得到的回归树计算,同样找到最小的ms作为切分点以及最小误差切分点划分的区域,得到第二棵拟合的回归树,在根据加法模型将f1(x)与T2(x)相加得到f2(x),可以看到f2(x)划分更精确,算出平方损失误差为0.79更低了。
继续更新得到:
T3(X),T4(X),T5(X),T6(X)相加在一起算出平方损失误差为0.17
此时我们在之前设一个阈值比如为0.18误差小于0.18则不再迭代。最终得到最后的回归树。
最后还有个问题,就是阈值我们设多少为好,越小就会过拟合,设的大了当然还不好,因此有个想法为可以有一个测试集进行测试,这样就可以判别回归树是否可以。但还需考证。