隨機森林、bagging、boosting、adaboost、xgboost

AdaBoost原理

原始的AdaBoost算法是在算法開始的時候,爲每一個樣本賦上一個權重值,初始的時候,大家都是一樣重要的。在每一步訓練中得到的模型,會使得數據點的估計有對有錯,我們就在每一步結束後,增加分錯的點的權重,減少分對的點的權重,這樣使得某些點如果老是被分錯,那麼就會被“重點關注”,也就被賦上一個很高的權重。然後等進行了N次迭代(由用戶指定),將會得到N個簡單的分類器(basic learner),然後我們將它們組合起來(比如說可以對它們進行加權、或者讓它們進行投票等),得到一個最終的模型。

關鍵字:樣本的權重分佈

 

隨機森林

隨機森林,解決決策樹泛化能力弱的缺點。(可以理解成三個臭皮匠頂過諸葛亮)

而同一批數據,用同樣的算法只能產生一棵樹,這時Bagging策略可以幫助我們產生不同的數據集Bagging策略來源於bootstrap aggregation從樣本集(假設樣本集N個數據點)中重採樣選出Nb個樣本(有放回的採樣,樣本數據點個數仍然不變爲N),在所有樣本上,對這n個樣本建立分類器(ID3\C4.5\CART\SVM\LOGISTIC),重複以上兩步m次,獲得m個分類器,最後根據這m個分類器的投票結果,決定數據屬於哪一類。

隨機森林在bagging的基礎上更進一步:

1.  樣本的隨機:從樣本集中用Bootstrap隨機選取n個樣本

2.  特徵的隨機:從所有屬性中隨機選取K個屬性,選擇最佳分割屬性作爲節點建立CART決策樹(泛化的理解,這裏面也可以是其他類型的分類器,比如SVM、Logistics

3.  重複以上兩步m次,即建立了m棵CART決策樹

4.  這m個CART形成隨機森林,通過投票表決結果,決定數據屬於哪一類(投票機制有一票否決制、少數服從多數、加權多數)

隨機森林分類效果(錯誤率)與兩個因素有關:

  • 森林中任意兩棵樹的相關性:相關性越大,錯誤率越大;
  • 森林中每棵樹的分類能力:每棵樹的分類能力越強,整個森林的錯誤率越低。

  減小特徵選擇個數m,樹的相關性和分類能力也會相應的降低;增大m,兩者也會隨之增大。所以關鍵問題是如何選擇最優的m(或者是範圍),這也是隨機森林唯一的一個參數。

 

GBDT

GBDT採用基函數的線性組合,不斷減小訓練過程產生的殘差來達到將數據分類或者回歸的算法。

gbdt通過多輪迭代,每輪迭代產生一個弱分類器,每個分類器在上一輪分類器的殘差基礎上進行訓練。對弱分類器的要求一般是足夠簡單,並且是低方差和高偏差的。弱分類器一般會選擇爲CART TREE(也就是分類迴歸樹)。由於上述高偏差和簡單的要求 每個分類迴歸樹的深度不會很深。最終的總分類器 是將每輪訓練得到的弱分類器加權求和得到的(也就是加法模型)。

讓損失函數沿着梯度方向的下降。這個就是gbdt 的 gb的核心了。 利用損失函數的負梯度在當前模型的值作爲迴歸問題提升樹算法中的殘差的近似值去擬合一個迴歸樹。gbdt 每輪迭代的時候,都去擬合損失函數在當前模型下的負梯度。

gbdt 無論用於分類還是迴歸一直都是使用的CART 迴歸樹。這裏面的核心是因爲gbdt 每輪的訓練是在上一輪的訓練的殘差基礎之上進行訓練的。這裏的殘差就是當前模型的負梯度值 。這個要求每輪迭代的時候,弱分類器的輸出的結果相減是有意義的。殘差相減是有意義的。如果選用的弱分類器是分類樹,類別相減是沒有意義的。上一輪輸出的是樣本 x 屬於 A類,本一輪訓練輸出的是樣本 x 屬於 B類。 A 和 B 很多時候甚至都沒有比較的意義,A 類- B類是沒有意義的。這裏我們將原始類別標籤進行one-hot編碼,對每一個類別都進行一次GBDT迴歸,具體參見https://www.cnblogs.com/ModifyRong/p/7744987.html#top

 

xgboost

 

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