參考url:
https://jakevdp.github.io/PythonDataScienceHandbook/05.08-random-forests.html
無參數算法隨機森林,是一種集成方法,通過集成多個比較簡單的評估器形成累計效果,即若干評估器的多數投票(majority vote)的最終效果往往優於單個評估器投票的效果。
1、隨機森林的誘因:決策樹
隨機森林是建立在決策樹基礎上的集成學習器。
決策樹采用非常直觀的方式對事物進行分類或打標簽:只需問一系列問題就可以進行分類了。
二叉樹分支方法可以非常有效地進行分類:在一顆結構合理的決策樹中,每個問題基本上都可將種類可能性減半,即使是對大量種類進行決策時,也可以很快地縮小選擇范圍。
決策樹的難點在於如何設計每一步的問題,在實現決策樹的機器學習算法中,問題通常因分類邊界是與特征軸平行的形式分割數據而造成的,即決策樹的每個節點都根據一個特征的閾值將數據分成兩組。
1、創建一顆決策樹
在這組數據上構建的簡單決策樹不斷將數據的一個特征或另一個特征按照某種判定條件進行分割。
每分割一次,都將新區域內點的多數投票結果標簽分配到該區域上。
在一地刺分割之后,上半個分支里的所有數據點都沒有變化,因此這個分支不需要繼續分割。除非一個節點只包含一種顏色,那么每次分割都需要按照兩種特征中的一種對每個區域進行分割。
2、決策樹與過擬合
過擬合正是決策樹的一般屬性——決策樹非常容易陷得很深,因此往往會擬合局部數據,而沒有對整個數據分布的大局觀,即模型訓練的是數據的不同子集。
2、評估器集成算法:隨機森林
通過組合多個過擬合評估器來降低過擬合程度的想法其實一種集成學習方法,稱為裝袋算法。
裝袋算法使用並行評估器對數據進行有放回抽取集成,每個評估器都對數據過擬合,通過求均值可以獲得更好的分類結果。
隨機決策樹的集成算法就是隨機森林。
如果用隨機方法(stochasticity)確定數據的分割方式,決策樹擬合的隨機性會更有效,這樣做可以讓所有數據在每次訓練時都被擬合,但擬合的結果卻仍然是隨機的。
在Scikit-Learn里對隨機決策樹集成算法的優化是通過RandomForestClassifier評估器實現的,它會自動進行隨機化決策,即只要選擇一組評估器,它們就可以非常快速地完成(如果需要可以並行計算)每棵樹的擬合任務。
3、隨機森林回歸
隨機森林也可以用作回歸(處理連續變量,而不是離散變量)。
隨機森林回歸的評估器是RandomForestRegressor。
真是模型是平滑曲線,而隨機森林模型是鋸齒線。
從圖中可以看出,無參數的隨機森林模型非常適合處理多周期數據,不需要我們配置多周期模型。
4、案例:用隨機森林識別手寫數字
5、隨機森林總結
隨機森林是一種強大的機器學習方法,它的優勢在於:
(1)因為決策樹的原理很簡單,所以它的訓練和預測速度都非常快。另外,多任務可以直接並行計算,因為每棵樹都是完全獨立的。
(2)多棵樹可以進行概率分類:多個評估器之間的多數投票可以給出概率的估計值(使用Scikit-Learn的predict_proba()方法)
(3)無參數模型很靈活,在其他評估器都欠擬合的任務中表現突出。
隨機森林的主要缺點在於其結果不太容易解釋,即想要總結分類模型的意義,隨機森林可能不是最佳選擇。