boosting家族之综合理论篇
文章目錄
概述
先驗知識
集成學習
boosting家族簡述
boosting家族——AdaBoosting
boosting家族——GBDT
boosting家族——XGBoost
RandomForest 與 GBDT 的區別
參考
概述
boosting往上了說,是集成學習的分支。往下分,有AdaBoost和GBDT以及xgboost和lightBgm。此文是我這個boosting小白對boosting家族的理論知識的學習的的大致學習記錄。
先驗知識
先驗知識中,線性回歸、決策樹以及基本的特征工程相關的知識就不贅述了。主要學習下集成學習的來龍去脈。
集成學習
集成學習適合機器學習的幾乎所有的領域:回歸、分類、推薦、排序等等。
后文中:
1.什么是集成學習?
在機器學習的有監督學習算法中,我們的目標是學習出一個穩定的且在各個方面表現都較好的模型,但實際情況往往不會這么理想。可能模型A在某個方面變現優于模型B,但模型B又不是處處都表現不好。也就是說:每個弱分類器具備一定的“準確性”,分類器之間具備“差異性”。
上面提到的模型A、B常被稱為基學習器(注意,基學習器與弱學習器(weak learner)其實并不是同等概念,基學習器范圍大于弱學習器)。
構建并結合多個學習器來完成學習任務,被稱為集成學習。
集成學習潛在的思想是即便某一個弱分類器得到了錯誤的預測,其他的弱分類器也可以將錯誤糾正回來。
2.為什么理論上集成學習效果會更好?
形象的說:集成學習的結果通過投票法(voting)產生,“少數服從多數”。也就是說,假設有5個若學習器,對于啊a,b,c三個事物的分類,分別有四個學習器結果相同,一個不相同。我們假設正確結果掌握在絕大多數“人”手中,那么投票會使得正確率由80%提升到100%。
抽象的說:【“西瓜”書P172、P173】
總結:也就是我們常說的“博采眾長”。
3.集成學習的思路、核心點、要點
思路:通過迭代地訓練一系列的分類器,每個分類器采用的樣本的選擇方式都和上一輪的學習結果有關。具體是如何關聯的,不同的集成學習算法有不同的實現。
集成學習的一個主要假設是:基學習器的誤差相互獨立。但是這可能嗎?同一任務中的不同基學習器的目標是一樣的,再次再次它們的誤差也不可能相互獨立。所以說,事實上每個基學習器的“準確率”和多樣性是沖突的。如何產生并結合“好而不同”的基學習器,就是集成學習研究的核心。
-可通過為每個基學習器拆分相互有一定交叉的子集,使得誤差盡量大一些(但是不可完全獨立的拆分子集)
要點:
每個基學習器好于“隨機猜測”
基學習器盡量誤差相互獨立
基學習器各有優點,要有差異(Diversity)
選用不同的基學習器
4.集成學習的大致陣營
主要可以分為三大類,Boosting、Bagging、Stacking。
強依賴關系、必須串行生成的順序方法(順序構建多個學習器):Boosting(主要關注降低偏差)為代表
不存在強依賴關系、可同時生成的并行化方法(主要是減少運算時間):Bagging(主要關注降低方差)、Stacking
Boosting的代表有AdaBoost, GBDT, XGBoost。而Bagging的代表則是隨機森林 (Random Forest)。Stacking的
當模型越復雜時,擬合的程度就越高,模型的訓練偏差就越小。但此時如果換一組數據可能模型的變化就會很大,即模型的方差很大。所以模型過于復雜的時候會導致過擬合。當模型越簡單時,即使我們再換一組數據,最后得出的學習器和之前的學習器的差別就不那么大,模型的方差很小。還是因為模型簡單,所以偏差會很大。
(作者:于菲 鏈接:https://www.zhihu.com/question/45487317/answer/99153174)
5.集成學習之結合策略
參考[7]
6.集成學習的缺點
計算復雜度大
一般而言,所得到的模型比較難解釋
boosting家族簡述
在順序方法中,我們順序地構建多個學習器。在構建后面的學習器中,我們它能夠“糾正”前面的學習器的錯誤,從而提高聚合后的準確度。
基于圖形的理解見參考[3]
思路:
從初始訓練集得到基學習器,根據其表現,對訓練樣本進行調整,后續計算中,之前分類錯誤的樣本有較高的可能性被選到。(就像錯題集,但是這里是把你的錯題給其他人做,其他人多了,總會有人做對的。)然后拿調整后的樣本訓練下一個基學習器,直到達到預設的基學習器個數,最后再對這些個基學習器的結果進行加權求和。
重采樣與重賦權:
1.Boosting算法要求基學習器能對特定數據分布進行學習,這可以通過”重賦權法“或者”重采樣法“來處理。即在訓練過程的每一輪中,根據樣本分布為每個訓練樣本重新賦予一個權重。對于無法接受帶權重樣本的基學習算法,可以通過“重采樣法”來處理,即在每一輪學習中,根據樣本分布對訓練集合重新進行采樣,再用重采樣而得的樣本集對基學習器進行訓練。
2.Boosting算法在訓練的每一輪都要檢查當前生成的基學習器是否滿足設置的基本條件,如果不滿足就直接拋棄當前基學習器,且學習過程停止。在這種情形下,初始設置的學習輪數T也許還遠未達到,可能導致最終集成中只包含很少的基學習器而性能不佳。若采用“重采樣”則可能獲得**“重啟動”的機會以避免訓練過程過早停止**。即在拋棄不滿足條件的當前基學習器之后,可以根據當前分布重新對訓練樣本進行采樣,再基于新的采樣結果重新訓練出基學習器,從而使學習過程可以持續到預設的T輪完成
從偏差-方差角度來看,Boosting主要關注降低偏差(廣義的偏差(bias)描述的是預測值和真實值之間的差異,方差(variance)描述距的是預測值作為隨機變量的離散程度)。因此Boosting能基于泛化性能相當弱的學習器構建出很強的集成。
Boosting方法的學習思想和模型結構上可以保證其不容易產生過擬合(除非Weak Learner本身出現過擬合)
boosting家族——AdaBoosting
1995年由Freund和Schapire提出。
算法推理:“西瓜”書175,或者此鏈接
整體思路之圖片版:借用下涵子涵的圖(兄dei,要不再練練字。。。)
整體思路之文字版:http://www.52caml.com/head_first_ml/ml-chapter6-boosting-family/
最終模型的產出:
加大 分類誤差率小 的弱分類器的權值,使其在表決中起較大的作用;減小分類誤差率大的弱分類器的權值,使其在表決中起較小的作用。
boosting家族——GBDT
梯度提升決策樹(Gradient Boosting Decison Tree, 以下簡稱GBDT)
boosting tree(提升樹)+ gradient boost(梯度提升算法)【提升樹是迭代多棵回歸樹來共同決策。】
概述:
1.GBDT(Gradient Boosting Decision Tree) 又叫 MART(Multiple Additive Regression Tree),是一種迭代的決策樹算法,該算法由多棵決策樹組成,所有樹的結論累加起來做最終答案。它在被提出之初就和SVM一起被認為是泛化能力較強的算法。GBDT中的樹是回歸樹(不是分類樹),GBDT用來做回歸預測,調整后也可以用于分類。
2.回顧下Adaboost,其利用前一輪迭代弱學習器的誤差率來更新訓練集的權重,這樣一輪輪的迭代下去。GBDT也是迭代,使用了前向分布算法,但是弱學習器限定了只能使用CART(分類與回歸樹)模型,同時迭代思路和Adaboost也有所不同。
**參考[5]和參考[6]**真的寫得很不錯,我的實力“造”不出那樣的輪子,推薦多次閱讀
**參考[5]和參考[6]**真的寫得很不錯,我的實力“造”不出那樣的輪子,推薦多次閱讀
**參考[5]和參考[6]**真的寫得很不錯,我的實力“造”不出那樣的輪子,推薦多次閱讀
要點
GBDT中的回歸樹的每一個節點都會得一個預測值
提升樹是迭代多棵回歸樹來共同決策
提升樹利用加法模型和前向分步算法實現學習的優化過程。
boosting家族——XGBoost
與gbdt相比,具體的優點有:
1.損失函數是用泰勒展式二項逼近,而不是像gbdt里就是一階導數
2.對樹的結構進行了正則化約束,防止模型過度復雜,降低了過擬合的可能性
3.節點分裂的方式不同,gbdt是用的gini系數,xgboost是經過優化推導后的
gboost中的基學習器除了可以是CART(gbtree)也可以是線性分類器(gblinear)。下面所有的內容來自原始paper,包括公式。
。。。我真的看不下去了。。。
還是改天慢慢看參考[5]
這兩天先具體的實踐下XGBoost,實踐調優的過程中慢慢回來補這部分的博客。
RandomForest 與 GBDT 的區別
相同點:
1.都由很多棵樹組成
2.最終的結果是由多棵樹一起決定的
不同點:
1.RandomForest中的樹可以是分類樹,也可以是回歸樹,而GBDT只能由回歸樹(CART)組成,這也說明GBDT各個樹相加是有意義的
2.RandomForest中的樹是并行生成的,而GBDT是串行生成的,GBDT中下一顆樹要去擬合前一顆樹的殘差,所以GBDT中的樹是有相關關系的,而RandomForest中的樹的相關性依賴于Boostrap生成的樣本子集的相關性
3.RandomForest 對異常值不敏感,GBDT敏感
4.RandomForest是通過降低模型方差來提高性能的,而GBDT是通過降低偏差來提高性能
參考
[1].《機器學習》-周志華
[2].《實用機器學習》-孫亮/黃倩
[3].博客園——機器學習中的數學(3)-模型組合(Model Combining)之Boosting與Gradient Boosting
[4]建議閱讀此文,綜合
[5]集成學習總結,綜合
[6]博客園——梯度提升樹(GBDT)原理小結
[7]博客園——集成學習的結合策略
[8]博客園——使用sklearn進行集成學習——理論
————————————————
版權聲明:本文為CSDN博主「haixwang」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/HaixWang/article/details/79949195
總結
以上是生活随笔為你收集整理的boosting家族之综合理论篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梯度提升树(GBDT)原理小结
- 下一篇: linux下安装python(安装pyt