引言
一個人的力量是渺小的,但是一群人聚集到一起,就有了群體智慧。如在我們的城市的社會分工中,有的人是工程師,政客,有的人是建築勞工,有的人是教師,也有罪犯等等,每個人對這座城市都貢獻着價值,整座城市也就井然有序,盎然向上,由于每個人對社會的作用不同,甚至有的為負貢獻如罪犯等,如果有一個決策機關如政府的存在,就可以使數以百萬人口的城市運作起來,而不是一盤散沙的存在。這種集聚群體智慧的思想,衍生出了一些優秀的算法,如bagging(減小方差),boosting(減小偏差)算法。
內建學習思想
內建學習算法的主要思想是利用弱分類器組合成為一個強分類器。通過一些既定的模型規則,如設定不同的弱分類器有不同的權重,同時在模型訓練的過程中,逐漸疊代優化,使組合成的強分類器在一個既定的評價名額下更優。
內建算法分類
序列內建方法(boosting)
序列內建方法(boosting),序列方法的原理是通過權重配置設定機制,比如AdaBoost通過修改資料集不同樣本的權重與弱分類器對最終強分類器貢獻的權重,做到弱分類器權重多數表決的效果,即增大錯誤率小的分類器的權重,減小錯誤率較大的分類器的權重的方法進行權重組合。而梯度提升樹GBDT通過拟合殘差的方式逐漸減小殘差,将每一步生成的模型疊加得到新的模型,可以提高整體的預測效果。如下圖所示:
并行內建方法(bagging)
并行內建方法(bagging),其中參與訓練的基礎學習器并行生成(例如 Random Forest)。并行方法的原理是利用基礎學習器之間的獨立性,通過平均或者投票等機制可以顯著降低錯誤率。如下圖所示:
內建學習算法特點
- 利用多個分類器,弱分類器可以是同一種集合的算法也可以是不同類型集合的算法,将其聚合起來,以提高準确率。是以在某種意義上,內建學習并不是一個學習算法,而是訓練弱分類器的一種上層算法,并将各弱分類器利用既定規則集合起來的一種政策,一種決策思想。
- 內建學習無論是bagging還是boosting,都既可以做回歸任務,也可以應用于分類任務。
- 針對于分類算法,原理其實很簡單,就是每一個樹訓練出來的結果(葉子),我們選擇數量最多的(多數服從少數原理),即可以做到內建的效果。
- 針對于回歸算法,就是每一個樹訓練出來的結果(葉子),我們把他們的結果加和求平均,就得到一個平均值,那就達到了回歸算法的效果。
各種強勢內建算法登場
我們最常見的Bagging算法即随機森林RF算法。
我們常見的Boosting算法有AdaBoost,梯度提升樹GBDT,Xgboost,以及微軟亞洲研究院重磅開源的LightGBM。