前言
在《统计学习方法》这本书中介绍了基于分类问题的AdaBoost方法,其中更新样本权重采用的是 y i ! = G ( x i ) y_i != G(x_i) yi?!=G(xi?),其实当时就思考这样一个问题:如果用于回归任务,那么这个更新样本权重该如何计算?本文基于此问题展开讨论。对此问题有疑问的请参考博客提升方法(boosting)和AdaBoost详解
。
AdaBoost 回归算法
我们都知道回归预测得到的结果是数值,比如 房子价格,每一个房产样本都有一个房产价格,这个价格是一个数值,不同的房产价格可能是不一样的,且价格繁多,不像分类问题,类别较固定,所以使用AdaBoost算法做回归问题时不能单单的用分类问题的AdaBoost 算法,其重点在于如何更新样本权重及分类器权重,参考资料有如下一种思路:
- 首先聊聊误差率问题,对于第m个若学习器,计算它在训练集上的最大误差:
E m = m a x ∣ y i ? G m ( x i ) ∣ E_m=max|y_i - G_m(x_i)| Em?=max∣yi??Gm?(xi?)∣
为什么不取全体样本误差总值? - 计算每个样本的相对误差:
e m i = ∣ y i ? G m ( x I ) ∣ E m e_{mi}=\frac{|y_i - G_m(x_I)|}{E_m} emi?=Em?∣yi??Gm?(xI?)∣?
也可以用平方误差:
e m i = ∣ y i ? G m ( x I ) ∣ 2 E m 2 e_{mi}=\frac{|y_i - G_m(x_I)|^2}{E_m^2} emi?=Em2?∣yi??Gm?(xI?)∣2? - 得到最终得到第m个弱分类器的误差率:
e m = ∑ i = 1 N w m i e m i e_m = \sum_{i=1}^{N}w_{mi}e_{mi} em?=i=1∑N?wmi?emi? - 由此得到弱学习器权重系数:
a m = e m 1 ? e m a_m = \frac{e_m}{1-e_m} am?=1?em?em??
这里有一个问题, e m e_{m} em?一定小于1嘛。
- 样本权重更新公式为:
w m + 1 , i = w m i Z m a m 1 ? e m i w_{m+1,i}=\frac{w_{mi}}{Z_m}a_{m}^{1-e_{mi}} wm+1,i?=Zm?wmi??am1?emi??
其中 Z m Z_m Zm?是一个规范化因子:
Z m = ∑ i = 1 N w m i a m 1 ? e m i Z_m=\sum_{i=1}^{N}w_{mi}a_{m}^{1-e_{mi}} Zm?=i=1∑N?wmi?am1?emi??
这有点像样本误差除以所有误差,计算当个样本误差占比,这个用来作为样本权重。 - 最后是结合策略,和分类问题稍有不同,采用的是对加权的弱学习器取中位数的方法,最终的强回归器为:
f ( x ) = ∑ m = 1 M ( l n ( 1 a m ) ) g ( x ) = [ ∑ m = 1 M ( l n ( 1 a m ) ) ] g ( x ) \begin{aligned} f(x)&=\sum_{m=1}^{M}(ln(\frac{1}{a_m}))g(x) \\ &= \bigg[\sum_{m=1}^{M}(ln(\frac{1}{a_m}))\bigg]g(x) \end{aligned} f(x)?=m=1∑M?(ln(am?1?))g(x)=[m=1∑M?(ln(am?1?))]g(x)?
其中, g ( x ) g(x) g(x)是所有 a m G m ( x ) , m = 1 , 2 , . . . , M a_mG_m(x),m=1,2,...,M am?Gm?(x),m=1,2,...,M的中位数,这样分析,那么在上述公式中对于 m m m的不同取值 g ( x ) g(x) g(x)都是相同的分类器,只不多是前面的权重不同而已。感觉取中位数的依据是什么呢?取中位数的时候分类器是不是先排序?难道是按照训练分类器的先后顺序?其他分类器的权重相加也有点看不懂依据?继续参考其他博客 - 当然有些博客采用分类问题的加权平均法:
f ( x ) = ∑ m = 1 M ( l n 1 a m ) G m ( x ) f(x)=\sum_{m=1}^{M}(ln\frac{1}{a_m})G_m(x) f(x)=m=1∑M?(lnam?1?)Gm?(x)
加权平均法比较好理解,这里你也可以定义自己的组合策略
参考博客
adaboost做回归预测的时候,是怎么调整样本权重的?
机器学习校招笔记3:集成学习之Adaboost