機器學習之整合演算法

|舊市拾荒|發表於2019-08-04

一、整合演算法

目的:讓機器學習效果更好,單個機器學習演算法不行,就用多個機器演算法整合。

Bagging模型:訓練多個分類器取結果的平均

  

Boosting模型:從弱學習器開始加強,通過加權來進行訓練(加入一棵樹,要比原來強)

 

Stacking模型:聚合多個分類或迴歸模型(可以分階段來做)

二、Bagging模型:

全稱: bootstrap aggregation(說白了就是並行訓練一堆分類器),最典型的代表就是隨機森林(決策樹的升級版,多個決策樹組合起來)

隨機:資料取樣隨機,特徵選擇隨機(可以命名為二重隨機性)

森林:很多個決策樹並行放在一起

  

在隨機森林模型中,如果是分類任務,那就對結果取眾數(如上圖所示),如果是預測任務,就對結果取平均值。

構造樹模型:

  

由於二重隨機性,使得每個樹基本上都不會一樣,最終的結果也會不一樣。之所以要進行隨機,是要保證泛化能力,如果樹都一樣,那麼最終結果就都是一樣的,那就沒意義了!

隨機森林相比於決策樹優勢:

(1)它能夠處理很高維度(feature很多)的資料,並且不用做特徵選擇。
(2)在訓練完後,它能夠給出哪些feature比較重要,比如在下圖中特徵重要性最低的三個特徵就可以去掉。
(3)容易做成並行化方法,速度比較快。
(4)可以進行視覺化展示,便於分析。

  

理論上越多的樹訓練的效果就會越好,但實際上基本超過一定數量最終的效果就差不多上下浮動了。

  

三、Boosting模型

典型代表:AdaBoost, Xgboost。

Adaboost會根據前一次的分類效果調整資料權重,如果某一個資料在這次分錯了,那麼在下一次我就會給它更大的權重。最終的結果:每個分類器根據自身的準確性來確定各自的權重,再合體。

Adaboost工作流程:每一次切一刀!最終合在一起,弱分類器這就升級了!

  

四、Stacking模型

堆疊方式:很暴力的那種,拿來一堆直接上(各種分類器都來了),可以堆疊各種各樣的分類器(KNN,SVM,RF,DT等等)

Stacking是一種分層模型整合框架。以兩層為例,第一層由多個基學習器組成,其輸入為原始訓練集,第二層的模型則是以第一層基學習器的輸出作為訓練集進行再訓練,從而得到完整的stacking模型。

分階段:第一階段得出各自結果,第二階段再用前一階段結果訓練 。

  

堆疊在一起確實能使得準確率提升,但是顯然速度是個問題。整合演算法是競賽與論文神器,當我們更關注於結果時不妨來試試!

 

相關文章