《機器學習實戰(基於scikit-learn和TensorFlow)》第七章內容學習心得

本章主要講述了「集成學習」和「隨機森林」兩個方面。html

重點關注:bagging/pastingboostingstacking三個方法。git

首先,提出一個思想,若是想提高預測的準確率,一個很好的方法就是用集成的方法。讓多種預測器儘量相互獨立,使用不一樣的算法進行訓練。最後以預測器中的預測結果的多數做爲最終結果或者將平均機率最高的結果做爲最後的結果。github

還有沒有其餘的方法呢,有的。算法

  • Bagging/Pasting方法:每一個預測器使用的算法相同,可是在不一樣的訓練集隨機子集上進行訓練,採樣時將樣本放回就是bagging方法,採樣時樣本不放回就是pasting方法。下圖就是一個pasting/bagging訓練集採樣和訓練。

image

      當訓練完成後,咱們的集成函數通常就採用統計的方法便可。顯然,咱們能夠得出這樣的結論,就是每一個預測器單獨的誤差都高於在原始訓練集上的誤差,可是經過聚合集成,咱們將會下降誤差與方差,得出更精準的答案。決策樹通常採用上述方法進行訓練。固然,隨機森林也能夠採用上述方法。函數

sklearn中有相關bagging與pasting的工具包,這裏再也不作贅述,請自行查閱相關文檔。提示:使用BaggingClassifier類進行調用。工具

  • Boosting方法:是指幾個弱學習器合成一個強學習器的任意的集成方式。目前最流行的方法就是AdaBoost(自適應提高法)和梯度提高法。

     Adaboost方法,思想就是更多地關注前序擬合不足地訓練實例。從而使得新地預測器不斷地愈來愈專一於難纏的問題。能夠發現,該方法是一種存在時序關係的方法,咱們必需要獲得前者地訓練的狀況,而後對數據中對前者狀態的分類器擬合很差的數據再次進行訓練,而後循環往復。故此,能夠得出,這個方法不能並行計算,在拓展方面,不如bagging、boosting。學習

相關推導,請看Scorpio.Lu博主的文章:http://www.javashuo.com/article/p-tkpgxxsp-bh.htmlui

     梯度提高法:該方法是逐步在集成中添加預測器,每一個都對其前序作出改正,讓新的預測器對前一個的預測器的殘差進行擬合。具體的推導,請見劉建平Pinard博主的文章:http://www.javashuo.com/article/p-coowgizi-dv.htmlspa

  • Stacking方法:訓練一個模型執行聚合集成全部預測器的預測,而後以預測器的預測做爲輸入再進行最後的預測。訓練混合器的經常使用方式就是使用留存集。首先,將訓練集分爲兩個子集,第一個子集訓練第一層的預測器。而後,用第一層的預測器在第二個子集上進行預測。而後將在第二個子集上預測的值做爲輸入特徵,建立一個新的訓練集,保留目標值。在新的訓練集上訓練混合器,讓其學習根據第一層的預測來預測目標值。經過該方法,能夠訓練多種不一樣的混合器。
相關文章
相關標籤/搜索