背景知识:
回归树
D=(x1,y1),(x2,y2),...(xN,yN)
选择第j个变量
x(j)
和它取的值s,作为切分变量和切分点,假设已将输入空间划分为M个单元
R1,R2...,RM
, 并且在每个单元
Rm
上有一个固定的输出值
cm
,于是回归树模型可表示为
f(x)=∑Mm=1cmI(x∈Rm
定义损失函数,例如
∑xi∈Rm(y−f(xi))2
定义最优值
ĉ m
,
ĉ m=ave(yi|xi∈Rm)
并定义两个区域:
R1(j,s)={x|x(j)≤s} R2(j,s)={x|x(j)>s}
寻找最优切分变量j和最优切分点s.求解
minj,s=[minc1∑x1∈R1(j,s)(yi−c1)2+minc2∑x1∈R2(j,s)(yi−c2)2]
求解方法:固定变量j,找到最佳划分点s
遍历变量j
1,GBDT概述
GBDT也是迭代,使用了前向分布算法,但是弱学习器限定了只能使用CART回归树模型,同时迭代思路和Adaboost也有所不同。
在GBDT的迭代中
1,上一轮迭代得到的强学习器是
ft(x)
,损失函数是
L(y,ft−1(x))
.
2,本轮的目的是找到一个CART回归树模型的弱学习器
ht(x)
,让本轮的损失函数
L(y,ft(x))=L(y,ft−1(x)+ht(x))
最小
2,GBDT的负梯度拟合
负梯度表示为:
利用 (xi,rti),(i=1,2...m) ,可以拟合一颗CART回归树。对应的叶结点区域 Rtj,j=1,2,...,J ,J为叶子结点的个数
针对每一个叶子节点里的样本,求出损失函数最小时的弱学习器的取值
从而得出决策树拟合函数入下:
从而得到强学习器的表达式如下:
无论是分类问题还是回归问题,都可以通过损失函数的负梯度拟合,区别仅仅在于损失函数的不同
3,回归算法和分类算法的损失函数:
回归算法:
a) L(y,f(x))=(y−f(x))2
b) L(y,f(x))=|y−f(x)| 对应的梯度误差为 sign(yi−f(xi))
c)Huber损失,对于远离中心的异常点,采用绝对损失,而中心附近的点采用均方差。这个界限一般用分位数点度量。
d)分位数损失
L(y,f(x))=∑y≥f(x)θ|y−f(x)|+∑y<f(x)(1−θ)|y−f(x)|
分类算法:
a)指数损失函数: L(y,f(x))=exp(−yf(x))
b)对数损失函数:
二元分类: L(y,f(x))=log(1+exp(−yf(x)))
多元分类: L(y,f(x))=−∑Kk=1yklogpk(x)
如果样本输出类别为k,则 yk=1 ,第k类的概率 pk(x) 的表达式为:
4,GBDT的正则化
第一种:
未正则化前: fk(x)=fk−1(x)+hk(x)
正则化后: fk(x)=fk−1(x)+vhk(x), v∈(0,1]
第二种:
子采样比例,不放回的抽取部分样本,选择小于1的比例可以减少方差,即防止过拟合,但是会增加样本拟合的偏差,因此取值不能太低。取值在[0.5, 0.8]
第三种:
是对于弱学习器即CART回归树进行正则化剪枝。
5,优缺点
优点:
1) 可以灵活处理各种类型的数据,包括连续值和离散值。
2) 在相对少的调参时间情况下,预测的准备率也可以比较高。这个是相对SVM来说的。
3)使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如Huber损失函数和Quantile损失函数。
缺点:
1)由于弱学习器之间存在依赖关系,难以并行训练数据。不过可以通过自采样的SGBT来达到部分并行。