集成學習入門
作者:Sagar Howal
編譯:weakish
編者按:Towards Data Science博主Sagar Howal簡明扼要地介紹了集成學習的常用技術。
使用多種不同的模型通常比使用單一模型更可靠。在單個數據集上使用多個協同工作的模型稱為集成(Ensemble)。這一方法稱為集成學習(Ensemble Learning)。
投票
你可以使用多種不同的演算法訓練你的模型,然後加以集成以預測最終輸出。比如,你可以使用隨機森林分類器、SVM分類器、線性回歸,等等。模型互相競爭,然後你可以使用的類來挑選最佳表現。
硬投票(hard voting)按照簡單多數原則選擇最終預測。而軟投票(soft voting)僅在所有的分類器都可以為輸出計算概率時才可以使用。軟投票通過對單獨演算法計算出的概率取均值得到最佳結果。
代碼:
以上代碼使用了SVM、線性回歸、隨機森林三種分類器,並進行硬投票。
一般而言,的精確度比單獨分類器要高。確保使用了差異足夠大的分類器,這樣類似的錯誤不會累積。
Bagging和Pasting
除了在單一數據集上運行多個模型以外,你還可以在一個數據集的多個隨機子集上運行單個模型。有放回的隨機取樣稱為Bagging(bootstrapaggregaing,引導聚類)。如果這對你而言太不形象的話,你可以想像忽略數據集中的部分隨機條目,然後基於剩下的條目建模。Pasting與此類似,只不過它不允許為同一預測反覆取樣訓練實例。
代碼:
參數指定使用Bagging。改為則使用Pasting。
如果分類器可以計算預測概率,那麼BaggingClassifier會自動進行軟投票。可以計算預測概率的分類器帶有方法。
一般而言,Bagging的結果比Pasting要好很多。
袋外驗證
在訓練集上使用Bagging時,模型只包括63%的實例,這意味著分類器看不到37%的實例。這些實例可以用於驗證,類似交叉驗證。
只需在之前的代碼樣例的類中加上參數即可使用這一功能。
代碼:
目前我們取樣的僅僅是實例。對具有大量特徵的數據集而言,有其他的技術。
隨機補丁和隨機子空間
隨機補丁同時取樣訓練實例和特徵。在中設定特定的參數即可使用:
隨機子空間保留所有樣本,並取樣特徵:
隨機森林
集成決策樹可得隨機森林。隨機森林內部進行Bagging操作。隨機森林創建若干決策樹,有時創建數千決策樹,並為指定數據集計算可能最佳的模型。在分叉節點時,隨機森林並不考慮所有特徵,而是在所有特徵的子集中選擇最佳特徵。這是用更高的偏置交換更低的差異,從而得到更好的模型。
代碼:
參數:
是森林中的決策樹數量限制。
用於設置端節點的最大值,這樣演算法不會因為深深鑽入單一特徵而過擬合。
指定使用的計算機核心數目。意味著使用所有的核心。
可以通過網格搜索變動參數的值以改善該模型。
AdaBoost
儘管AdaBoost技術的數學機制挺嚇人的,它的理念還是很簡單的。首先你選取一個基本分類器,在給定數據集上做出預測。記錄錯誤分類的實例。然後增加錯誤分類的權重。第二個分類器基於更新的權重在訓練集上進行訓練。
簡單來說,運行一個分類器並做出預測。運行另一個分類器擬合之前錯誤分類的實例並做出預測。重複此過程直到擬合所有/大部分訓練實例。
AdaBoost不使用決策樹,而使用決策樹樁(Decision Stump),決策樹樁可以看成的決策樹,即,由一個決策節點和兩個葉節點組成的樹。AdaBoost的參數設定決策樹樁的數目。
代碼
Scikit-learn使用了Adaboost的多類版本,稱為SAMME(多類指數損失函數逐步添加模型,Stagewise Additive Modelling using a Multiclass Exponential Loss Function)。如果預測器可以計算概率(具備方法),Scikit Learn使用SAMME.R(R代表實數),該演算法基於概率,更不容易過擬合。
如果發生了過擬合,嘗試正則化你的基本估計量。
梯度提升
類似AdaBoost,梯度提升同樣基於加入集成的後續預測模型。和AdaBoost不同,梯度提升並不更新訓練實例的權重,梯度提升讓新模型去擬合殘差。
簡單來說,用一個模型擬合給定的訓練集。計算殘差,這些殘差將成為新的訓練實例,並在其之上訓練一個新模型。所有模型相加以做出預測。
代碼
學習率()參數收縮每棵樹的分布。和需要折衷。降低的值會增加集成中的樹的數量。這稱為收縮(Shrinkage)。注意,過大可能導致過擬合。需要仔細監測這一折衷。
XGBoost
XGBoost是最近出現的、最受推崇的強大梯度提升方法。XGBoost不在葉節點處做出強硬的「是」和「否」決策,而是給每個做出的決定分配一個正值或負值。所有樹都是一個弱學習者,提供比隨機猜測稍好的決策。但將它們收集起來加以平均後,XGBoost表現非常好。
代碼
TAG:論智 |