1. 算法
有了上一節的基礎,我們現在來學習如何集成所有天氣學家的意見,綜合輸出結果。
顧名思義,隨機森林的“森林”,就是指集成許多棵決策樹,每一棵樹都有一個自己的分類結果,現在這些樹聚集在一起“開會”,進行“投票”,比如我們要預測某一個樣本點的類別,90%的樹認為這個樣本點是“0”,剩下10%的樹認為這個樣本點是“1”。現在你覺得這個樣本點的類別是“0”還是“1”呢?
現在我們了解了,那“隨機”又是什么意思呢?
我們前面用過一個天氣學家的例子,每一個參與投票的天氣學家都是不同語言,不同學術背景,不同研究方法,他們每個人的結論雖然可能不相同,但都有一定的道理和可信度。也就是說,雖然是許多棵決策樹湊在一起開會,但如何保證不同的樹能夠得出不同的且具有一定可信度的結果呢?這就是“隨機”的含義了,包含以下兩點:
1. 隨機選擇樣本(放回抽樣);
2. 隨機選擇特征;
1. 隨機有放回抽樣
隨機抽樣就是指,在構建決策樹的時候,每棵樹的訓練樣本集都是總訓練樣本集中隨機抽取的一部分。試想如果每顆樹都使用同樣的訓練樣本集,那他們得出的結果就有很大的重合度,那么就失去了集成的意義,直接用單個決策樹進行分類不就行了?
有放回抽樣則是指,當一顆樹抽取了一部分訓練集的樣本后,仍然允許另外的樹抽取這部分樣本。我們希望每棵樹的訓練樣本是有一些交集的,也就是說我們希望每棵樹仍然保持了一定的“相似性”,仍然以天氣學家來舉例,假設每一位天氣學家都只單獨研究一個地區,彼此之間毫無交集,亞洲的科學家只有亞洲數據,歐洲的科學家只有歐洲的數據,那么這個時候亞洲的科學家只會知道亞洲地區是否會發生災難,你問他是否世界末日即將到來,他會告訴你否定的答案,因為他手上只有亞洲的數據,沒有其他地區的數據,也自然沒有辦法確定其他地區是否會發生災難,也就不能肯定的告訴你會發生世界末日了。
2. 隨機選擇特征
這一部分的解釋其實和上面的都類似,不再贅述。
隨機森林分類效果(錯誤率)與兩個因素有關:
森林中任意兩棵樹的相關性:相關性越大,錯誤率越大;
森林中每棵樹的分類能力:每棵樹的分類能力越強,整個森林的錯誤率越低。
減小特征選擇個數m,樹的相關性和分類能力也會相應的降低;增大m,兩者也會隨之增大。所以關鍵問題是如何選擇最優的m(或者是范圍),這也是隨機森林唯一的一個參數。
3. 算法步驟
第一部分:隨機生成不同的決策樹
1)如果訓練集大小為N,對于每棵樹而言,隨機且有放回地從訓練集中的抽取N個訓練樣本(這種采樣方式稱為bootstrap sample方法),作為該樹的訓練集;
2)如果每個樣本的特征維度為M,指定一個常數m<<M,隨機地從M個特征中選取m個特征子集,每次樹進行分裂時,從這m個特征中選擇最優的;
3)每棵樹都盡最大程度的生長,并且沒有剪枝過程。
第二部分:不同決策樹投票得出結果,或者平均每一棵樹的結果
4. 袋外錯誤率(obb score)
這是其他分類器所沒有的,隨機森林的非常特別的一個評價標準。
因為隨機森林是有放回抽樣,因此每一個決策樹都可以使用袋外的其他訓練樣本評估精度,而后平均輸出整體精度。
oob誤分率是隨機森林泛化誤差的一個無偏估計,它的結果近似于需要大量計算的k折交叉驗證。
2. 優缺點
優點
在數據集上表現良好,相對于其他算法有較大的優勢
易于并行化,在大數據集上有很大的優勢;
能夠處理高維度數據,不用做特征選擇。
3. 鏈接
隨機森林算法及其實現(Random?Forest)
https://blog.csdn.net/yangyin007/article/details/82385967
【機器學習】決策樹(中)——Random Forest、Adaboost、GBDT (非常詳細)