集成算法原理简介
1,集成算法
集成學習(ensemble learning)從概念上講,它并不是一個單獨的機器學習算法,而是通過構建并結合多個機器學習器來完成學習任務。也就是我們常說的“博采眾長”。集成學習可以用于分類問題集成,回歸問題集成,特征選取集成,異常點檢測集成等等,讓機器學習效果更好。
2,Bagging模型
Bagging模型全稱:bootstrap aggregation(并行訓練一堆分類器),訓練多個分類器取平均,最典型的代表就是隨機森林(很多個決策樹并行放在一起,數據采樣隨機,特征選擇隨機,都是有放回的隨機選取)。
由于二重隨機性(數據采樣隨機,特征選擇隨機),使得每個樹基本上都不會一樣,保證泛化能力,最終的結果也會不一樣。理論上越多的樹效果會越好,但實際上基本超過一定數量就差不多上下浮動了。
隨機森林優勢:
(1)能夠處理很高維度(feature很多)的數據,并且不用做特征選擇。
(2)在訓練完后,它能夠給出哪些feature比較重要
(3)容易做成并行化方法,速度比較快
(4)可以進行可視化展示,便于分析
然后求平均:
3,Boosting模型
從弱學習器開始加強,通過加權來進行訓練,典型代表有AdaBoost, Xgboost。
加入一棵樹使預測結果解決前面的殘差值(串行),通過累加逐步使整體效果優化。
3.1 AdaBoost
初始時數據的權重相同,Adaboost會根據前一次的分類效果調整數據權重(如果某個數據在這次分錯了,那么在下一次就會給它更大的權重),最終的結果是每個分類器根據自身的準確性來確定各自的權重(分類器效果好的權重大),然后再合體。
Adaboost工作流程:
相當于每一次切一刀,最終合在一起,這樣弱分類器就升級了。
3.2 Xgboost
事實上對于樹模型為基學習器的集成方法在建模過程中可以分為兩個步驟:一是確定樹模型的結構,二是確定樹模型的葉子節點中的輸出值。
3.2.1 定義樹的復雜度:
首先把樹拆分成結構部分q和葉子節點輸出值w,在這里w是一個向量,表示各葉子節點中的輸出值。在這里就囊括了上面提到的兩點,確定樹結構q和葉子結點的輸出值w。從下圖中可以看出,q(x)實際上是確定輸入值最終會落到哪個葉子節點上,而w將會給出相應的輸出值。
具體表現示例如下,引入正則化懲罰項 Ω(ft)來控制樹的復雜度,從而實現有效的控制模型的過擬合,這是xgboost中的第一個重要點。式子中的T為葉子節點數。
3.2.2 XGBoost中的Boosting Tree模型
3.2.3 目標函數
預測值:
目標函數(以平方差為例):
最優函數解(損失值的期望值最小):
集成算法的表示:
Xgboost算法也是一種提升算法(每加一顆樹,使整體效果提升)。
這里的函數相當于樹結構,現在還剩下一個問題,如何選擇每一輪加入什么f來使得目標函數盡量最大地降低。
考慮正則化懲罰項,則目標函數的表達式為:
在計算過程中產生的常數項都歸入constant中,引入平方差化簡上式:
構造的每一個樹,都將前面所有的樹看成一個整體,通過殘差優化使得新構造的樹滿足殘差最小。
3.2.4 目標函數的求解
不考慮常數項(對優化過程沒影響)可得:
n代表樣本數,T代表葉子節點,上式將樣本上的遍歷轉化為葉子節點上的遍歷,i代表節點中的樣本數,I代表節點。
整理上式如下:
對上式求偏導:
G和H有具體的損失函數求得。
利用上述評價標準計算增益進行分割:
4,Stacking模型
可以堆疊各種各樣的分類器(KNN,SVM,RF等等),分階段操作:第一階段輸入數據特征得出各自結果,第二階段再用前一階段結果訓練得到分類結果。
堆疊在一起確實能使得準確率提升,在一定程度上可以防止過擬合,但是速度是個問題,集成算法是競賽與論文神器,當更關注于結果時不妨來試試集成算法。
總結
- 上一篇: 逻辑回归算法原理简介
- 下一篇: 聚类算法原理简介