2.3 迴歸問題¶
AdaBoost算法在解決迴歸問題時的求解步驟和原理與2.2節中分類問題是很相似的。
(1)初始化$D$中全部樣本的權值分佈。 $$W = ({w_{11}}, \cdots ,{w_{1i}}, \cdots ,{w_{iN}}),{w_{1i}} = \frac{1}{N},i = 1,2, \cdots ,N$$ (2)進行$M$次迭代,其中第$m$次迭代的具體過程以下:
(a)使用設定好的學習算法對訓練集$D$進行學習,計算${h_m}$的偏差率。不過,在計算偏差率前,須要計算最大偏差${E_m}$和相對偏差${e_{m,i}}$:
$${E_m} = \max \left| {{y_i} - {h_m}({x_i})} \right|,i = 1,2, \cdots ,N$$ 相對偏差可使用線性偏差、平方偏差或者指數偏差。
線性偏差:${e_{m,i}} = \frac{{\left| {{y_i} - {h_m}({x_i})} \right|}}{{{E_m}}}$node
平方偏差:${e_{m,i}} = \frac{{{{({y_i} - {h_m}({x_i}))}^2}}}{{E_m^2}}$python
指數偏差:${e_{m,i}} = 1 - \exp \left( { - \frac{{\left| {{y_i} - {h_m}({x_i})} \right|}}{{{E_m}}}} \right)$jquery
而後計算偏差率$e_m$: $${e_m} = \sum\limits_{i = 1}^N {{w_{m,i}}{e_{m,i}}} $$ (b)計算${h_m}(x)$的係數: $${\alpha _m} = \frac{{{e_m}}}{{1 - {e_m}}}$$ (c)更新全部樣本的權重分佈: $$W = ({w_{m + 1,1}}, \cdots ,{w_{m + 1,i}}, \cdots ,{w_{m + 1,N}})$$ $${w_{m + 1,i}} = \frac{{{w_{m,i}}}}{{{Z_m}}}{\alpha _m}^{1 - {e_{m,i}}}$$ $${Z_m} = \sum\limits_{i = 1}^N {{w_{m,i}}{\alpha _m}^{1 - {e_{m,i}}}} $$ (3)在迴歸問題中,組合策略也與分類問題有所區別,採用的是對加權後的弱學習器取中位數的方法,最終的強迴歸器爲: $$H(x) = \left( {\sum\limits_{m = 1}^M {\ln (\frac{1}{{{\alpha _m}}})} } \right) \cdot g(x)$$ 式中,$g(x)$表示${\alpha _m}{h_m}(x),m = 1,2, \cdots ,M$序列中的中位數。linux