一、整合演算法
目的:讓機器學習效果更好,單個機器學習演算法不行,就用多個機器演算法整合。
Bagging模型:訓練多個分類器取結果的平均
Boosting模型:從弱學習器開始加強,通過加權來進行訓練(加入一棵樹,要比原來強)
Stacking模型:聚合多個分類或迴歸模型(可以分階段來做)
二、Bagging模型:
全稱: bootstrap aggregation(說白了就是並行訓練一堆分類器),最典型的代表就是隨機森林(決策樹的升級版,多個決策樹組合起來)
隨機:資料取樣隨機,特徵選擇隨機(可以命名為二重隨機性)
森林:很多個決策樹並行放在一起
在隨機森林模型中,如果是分類任務,那就對結果取眾數(如上圖所示),如果是預測任務,就對結果取平均值。
構造樹模型:
由於二重隨機性,使得每個樹基本上都不會一樣,最終的結果也會不一樣。之所以要進行隨機,是要保證泛化能力,如果樹都一樣,那麼最終結果就都是一樣的,那就沒意義了!
隨機森林相比於決策樹優勢:
(1)它能夠處理很高維度(feature很多)的資料,並且不用做特徵選擇。
(2)在訓練完後,它能夠給出哪些feature比較重要,比如在下圖中特徵重要性最低的三個特徵就可以去掉。
(3)容易做成並行化方法,速度比較快。
(4)可以進行視覺化展示,便於分析。
理論上越多的樹訓練的效果就會越好,但實際上基本超過一定數量最終的效果就差不多上下浮動了。
三、Boosting模型
典型代表:AdaBoost, Xgboost。
Adaboost會根據前一次的分類效果調整資料權重,如果某一個資料在這次分錯了,那麼在下一次我就會給它更大的權重。最終的結果:每個分類器根據自身的準確性來確定各自的權重,再合體。
Adaboost工作流程:每一次切一刀!最終合在一起,弱分類器這就升級了!
四、Stacking模型
堆疊方式:很暴力的那種,拿來一堆直接上(各種分類器都來了),可以堆疊各種各樣的分類器(KNN,SVM,RF,DT等等)
Stacking是一種分層模型整合框架。以兩層為例,第一層由多個基學習器組成,其輸入為原始訓練集,第二層的模型則是以第一層基學習器的輸出作為訓練集進行再訓練,從而得到完整的stacking模型。
分階段:第一階段得出各自結果,第二階段再用前一階段結果訓練 。
堆疊在一起確實能使得準確率提升,但是顯然速度是個問題。整合演算法是競賽與論文神器,當我們更關注於結果時不妨來試試!