Adaboost也是一種原理簡單,但很實用的有監督機器學習演算法,它是daptive boosting的簡稱。說到 boosting演算法,就不得提一提bagging演算法,他們兩個都是把一些弱分類器組合起來來進行分類的方法,統稱 為整合方法(ensemble method),類似於投資,“不把雞蛋放在一個籃子”,雖然每個弱分類器分類的不那麼 準確,但是如果把多個弱分類器組合起來可以得到相當不錯的結果,另外要說的是整合方法還可以組合不同的 分類器,而Adaboost和boosting演算法的每個弱分類器的類型都一樣的。他們兩個不同的地方是:boosting的每 個弱分類器組合起來的權重不一樣,本節的Adaboost就是一個例子,而bagging的每個弱分類器的組合權重是 相等,代表的例子就是random forest。Random forest的每個弱分類器是決策樹,輸出的類別有多個決策樹分 類的類別的眾數決定。今天的主題是Adaboost,下面來看看Adaboost的工作原理:
既然Adaboost的每 個弱分類器的類型都一樣,那麼怎麼組織安排每個分類器呢?如(圖一)所示:
(圖一)
(圖一)是Adaboost的原理示意圖,左邊矩形表示資料集,中間表示根據特徵閾值來做分 類,這樣每一個弱分類器都類似於一個單節點的決策樹,其實就是閾值判斷而已,右邊的三角形對每個弱分類 器賦予一個權重,最後根據每個弱分類器的加權組合來判斷總體類別。要注意一下資料集從上到下三個矩形內 的長條圖不一樣,這表示每個樣本的權重也發生了變化,樣本權重的一開始初始化成相等的權重,然後根據弱 分類器的錯誤率來調整每個弱分類器的全總alpha,如(圖一)中的三角形所示,alpha 的計算如(公式一)所 示:
(公式一)
從(公式一 )中也能感覺出來,弱分類器權重alpha和弱分類器分類錯誤率epsilon成反比,如果不能看出反比關係,分子 分母同時除以epsilon就可以了,而ln是單調函數。這很make sense,當然分類器的錯誤率越高,越不能器重它 ,它的權重就應該低。同樣的道理,樣本也要區分對待,樣本的權重要用弱分類器權重來計算,其實也是間接 靠分類錯誤率,如(公式二)所示:
(公式二)