adaboost

使用機器學習方法解決問題時,有較多模型可供選擇。 一般的思路是先根據數據的特點,快速嘗試某種模型,選定某種模型後, 再進行模型參數的選擇(當然時間允許的話,可以對模型和參數進行雙向選擇)

因爲不同的模型具有不同的特點, 所以有時也會將多個模型進行組合,以發揮‘三個臭皮匠頂一個諸葛亮的作用’, 這樣的思路, 反應在模型中,主要有兩種思路: Bagging和Boosting

Bagging

Bagging 可以看成是一種圓桌會議, 或是投票選舉的形式,其中的思想是:‘羣衆的眼光是雪亮的’,可以訓練多個模型,之後將這些模型進行加權組合,一般這類方法的效果,都會好於單個模型的效果。 在實踐中, 在特徵一定的情況下,大家總是使用Bagging的思想去提升效果。 例如kaggle上的問題解決,因爲大家獲得的數據都是一樣的,特別是有些數據已經過預處理。

bagging_ppt

以下爲Data Mining Concepts and Techniques 2nd 中的僞代碼

bagging

基本的思路比較簡單,就是:訓練時,使用replacement的sampling方法, sampling一部分訓練數據k次並訓練k個模型;預測時,使用k個模型,如果爲分類,則讓k個模型均進行分類並選擇出現次數最多的類(每個類出現的次數佔比可以視爲置信度);如爲迴歸,則爲各類器返回的結果的平均值。

在該處,Bagging算法可以認爲每個分類器的權重都一樣。

Boosting

在Bagging方法中,我們假設每個訓練樣本的權重都是一致的; 而Boosting算法則更加關注錯分的樣本,越是容易錯分的樣本,約要花更多精力去關注。對應到數據中,就是該數據對模型的權重越大,後續的模型就越要拼命將這些經常分錯的樣本分正確。 最後訓練出來的模型也有不同權重,所以boosting更像是會整,級別高,權威的醫師的話語權就重些。

以下爲Data Mining Concepts and Techniques 2nd 中adaboost僞代碼:

adaboost

 

訓練時:先初始化每個訓練樣本的權重相等爲1/d  d爲樣本數量; 之後每次使用一部分訓練樣本去訓練弱分類器,且只保留錯誤率小於0.5的弱分類器,對於分對的訓練樣本,將其權重 調整爲 error(Mi)/(1-error(Mi)) ,其中error(Mi)爲第i個弱分類器的錯誤率(降低正確分類的樣本的權重,相當於增加分錯樣本的權重);

與測試:每個弱分類器均給出自己的預測結果,且弱分類器的權重爲log(1-error(Mi))/error(Mi) ) 權重最高的類別,即爲最終預測結果。

在adaboost中,  弱分類器的個數的設計可以有多種方式,例如最簡單的就是使用一維特徵的樹作爲弱分類器。

adaboost在一定弱分類器數量控制下,速度較快,且效果還不錯。

我們在實際應用中使用adaboost對輸入關鍵詞和推薦候選關鍵詞進行相關性判斷。隨着新的模型方法的出現, adaboost效果已經稍顯遜色,我們在同一數據集下,實驗了GBDT和adaboost,在保證召回基本不變的情況下,簡單調參後的Random Forest準確率居然比adaboost高5個點以上,效果令人吃驚。。。。

Bagging和Boosting都可以視爲比較傳統的集成學習思路。 現在常用的Random Forest,GBDT,GBRank其實都是更加精細化,效果更好的方法。 後續會有更加詳細的內容專門介紹。

參考內容:

Data Mining Concepts and Techniques 2nd

Soft Margin for Adaboost


也可關注我的微博: weibo.com/dustinsea

或是直接訪問: http://semocean.com


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章