adaboost做分类的时候,分错的点会在下一轮获得更大的权重。那么用adaboost做回归的时候,这个权重是怎么来的?因为回归并不存在分对分错的情况。
1个回答
Adaboost做回归时误差率、权重系数如何选择:
先看看回归问题的误差率的问题,对于第$m$个弱学习器,计算他在训练集上的最大误差:
$$E_m=max\left | y_i-G_m(x_i) \right |\quad i=1,2,...,N$$
然后计算每个样本的相对误差:
$$e_{mi}=\frac{\left | y_i-G_m(x_i) \right |}{E_m}$$
这里是误差损失为线性时的情况,如果我们用平方误差,则
$$e_{mi}=\frac{\left ( y_i-G_m(x_i) \right )^2}{E_m^2}$$
最终得到第$m$个弱学习器的误差率:
$$e_m=\sum_{i=1}^Nw_{mi}e_{mi}$$
我们再来看看如何得到弱学习器权重系数 \alpha 。这里有:
$$\alpha_m=\frac{e_m}{1-e_m}$$
对于更新更新样本权重$D$,第$m+1$个弱学习器的样本集权重系数为:
$$w_{m+1,i}=\frac{w_{mi}}{Z_m}\alpha_m^{1-e_{mi}}$$
这里$Z_m$是规范化因子:
$$Z_m=\sum_{i=1}^{N}w_{mi}\alpha_m^{1-e_{mi}}$$
最后是结合策略,和分类问题稍有不同,采用的是对加权的弱学习器取中位数的方法,最终的强回归器为:
$$f(x)=\sum_{i=1}^{N}(ln\frac{1}{\alpha_m})g(x)$$
其中,$g(x)$是所有$\alpha_m G_m(x),m=1,2,....M$的中位数。
-------------------------------------------------
AdaBoost回归算法总结起来就是:
输入:训练数据集$T = \left\{ \left( x_{1}, y_{1} \right), \left( x_{2}, y_{2} \right), \cdots, \left( x_{N}, y_{N} \right) \right\}$,其中$x_{i} \in \mathcal{X} \subseteq R^{n}, y_{i} \in \mathcal{Y} = \left\{ +1, -1 \right\}, i = 1, 2, \cdots, N$
输出:回归器$G\left(x\right)$
1. 初始化训练数据的权值分布
$$D_{1}=\left(w_{11},w_{12},\cdots,w_{1N}\right), \quad w_{1i} = \dfrac{1}{N}, \quad i=1,2,\cdots,N$$
2. 对$m=1,2,\cdots,M$
2.1 使用具有权值分布$D_{m}$的训练数据集学习,得到基本分类器$G_{m}\left(x\right)$
2.2 计算训练集上的最大误差
$$E_m=max\left | y_i-G_m(x_i) \right |\quad i=1,2,...,N$$
2.3 计算每个样本的相对误差(如果采用平方误差):
$$e_{mi}=\frac{\left ( y_i-G_m(x_i) \right )^2}{E_m^2}$$
2.4 计算回归误差率:
$$e_m=\sum_{i=1}^Nw_{mi}e_{mi}$$
2.5 计算弱学习器的系数
$$\alpha_m=\frac{e_m}{1-e_m}$$
2.6 更新样本集的权重分布为
$$w_{m+1,i}=\frac{w_{mi}}{Z_m}\alpha_m^{1-e_{mi}}$$
其中, $Z_{m}$是规范化因子
$$Z_k=\sum_{i=1}^{N}w_{ki}\alpha_k^{1-e_{ki}}$$
3. 构建基本分类器的线性组合
$$f(x)=\sum_{m=1}^{M}(ln\frac{1}{\alpha_m})g(x)$$
其中,$g(x)$是所有$\alpha_mG_m(x),m=1,2,....M$的中位数。
参考来源:http://www.cnblogs.com/pinard/p/6133937.html
SofaSofa数据科学社区DS面试题库 DS面经