1. 程式人生 > >一文搞懂:Adaboost及手推演算法案例

一文搞懂:Adaboost及手推演算法案例

boosting

Boosting 演算法的特點在於:將表現一般的弱分類器通過組合變成更好的模型。代表自然就是我們的隨即森林了。 GBDT和Adaboost是boost演算法中比較常見的兩種,這裡主要講解Adaboost。

Adaboost

Adaboost演算法的核心就是兩個權重。對於資料有一個權重,權重大的資料計算的損失就大;然後對於每一個弱分類器有一個權重,這個權重就是每一個弱分類器最終投票的比重。 【先給出Adaboost關鍵的公式】: $\alpha_1=\frac{1}{2}ln(\frac{1-\epsilon_1}{\epsilon_1})$ 分類器的投票權重 $W_i=W_ie^{-\alpha_i y_i \hat{h}(x_i)}$ 更新樣本的權重 【隨即森林中最終投票每一個弱分類器的比重相同】 大概流程就是,現在有一個數據集,然後每個資料的比重都相同,然後訓練了好幾個不同的弱分類器。 1. 挑選錯誤率最低的弱分類器,然後通過【某種演算法】得到這個弱分類器最終投票的比重,然後通過【某種演算法】更新每一個數據的比重; 2. 因為每一個數據的比重更新了,所以再選擇一個錯誤率最低的弱分類器,然後通過【某種演算法】得到這個弱分類器最終投票的比重,然後通過【某種演算法】更新每一個數據的比重; 3. 重複這個過程。
演算法的流程:

這裡給一個具體計算的例子: 假設這裡有10個數據: 加號和減號分別代表不同的類別。然後每個類別有5個樣本。 下面會給出3個弱分類器: 這三個分類器分別是$h_1(x),h_2(x),h_3(x)$ 圖中畫圈的資料就是分類錯誤的資料。可以發現每個弱分類器都分錯了3個。下面開始Adaboost的演算法。 先計算三個弱分類器的錯誤率,因為一開始每個樣本的權重都是0.1,每個分類器又都錯了3個樣本,所以錯誤率都是0.3。這裡就隨機選取第一個分類器作為錯誤率最低的那個好了。 我們這裡通過第一個【某種演算法】計算第一個弱分類器在最終的投票權重: $\alpha_1=\frac{1}{2}ln(\frac{1-\epsilon_1}{\epsilon_1})=0.5*ln(\frac{0.7}{0.3})=0.4236$ 然後通過這個$\alpha_1=0.4236$來更新每一個樣本的權重。這也就是上面提到的第二個【某種演算法】: $W(i)=W(i)*e^{-\alpha y_i \hat {h}(x_i)}$ 這啥意思的,現在假設第一個樣本+1,這個樣本的權重是0.1(更新前),然後這個樣本在第一個分類器中是非類正確的,所以$y_i \hat{h}(x_i)=1$,所以這個樣本更新後的權重就是$0.1e^{-0.4236}=0.0655$ 當然,對於+3這個樣本,第一個分類器就分類錯誤,所以$y_i \hat{h}(x_i)=-1$,所以呢這個樣本更新後的權重就是:$0.1e^{0.4236}=0.1527$ 下面經過第一個分類器之後的樣本的權重:
然後再計算每一個分類器的基於更新之後樣本權重的錯誤率: 這一次選的是第二個分類器,然後計算它的$\alpha_2$,然後再更新每一個樣本的權重值: 然後是再尋找錯誤率最低的分類器: 到這一步的時候,我們已經有了$\alpha_1,\alpha_2,\alpha_3$,所以我們的adaboost已經得到了所有分類器的投票權重,所以最終的模型投票公式就是: **** 喜歡的話請關注我們的微信公眾號~【你好世界煉丹師】。 - 公眾號主要講統計學,資料科學,機器學習,深度學習,以及一些參加Kaggle競賽的經驗。 - 公眾號內容建議作為課後的一些相關知識的補充,飯後甜點。 - 此外,為了不過多打擾,公眾號每週推送一次,每次4~6篇精選文章。 微信搜尋公眾號:你好世界煉丹師。期待您的關注。 ![](http://helloworld2020.net/wp-content/uploads/2020/06/預設標題_橫版二維碼_2020-06-21-