隨機森林(可用於分類和回歸)
隨機森林主要應用於回歸和分類。
隨機森林在運算量沒有顯著提高的前提下提高了預測精度。
1、簡介
隨機森林由多棵決策樹構成,且森林中的每一棵決策樹之間沒有關聯,模型的最終輸出由森林中的每一棵決策樹共同決定。
處理分類問題時,對於測試樣本,森林中每棵決策樹會給出最終類別,最后綜合考慮森林內每一棵決策樹的輸出類別,以
投票方式來決定測試樣本的類別;處理回歸問題時,則以每棵決策樹輸出的均值為最終結果。
2、隨機森林的隨機性
體現在兩個方面:
Ⅰ:樣本的隨機性,從訓練集中隨機抽取一定數量的樣本,作為每顆決策樹的根節點樣本;
Ⅱ:屬性的隨機性,在建立每顆決策樹時,隨機抽取一定數量的候選屬性,從中選擇最合適的屬性作為分裂節點。
3、隨機森林算法框架
具體步驟:
(1)從訓練集中隨機抽取一定數量的樣本,作為每棵樹的根節點樣本;
(2)在建立決策樹時,隨機抽取一定數量的候選屬性,從中選擇最合適屬性作為分裂節點;(決策樹構造見《決策樹分類算法及python代碼實現案例》)
(3)建立好隨機森林以后,對於測試樣本,進入每一顆決策樹進行類型輸出或回歸輸出;若是分類問題,以投票的方式輸出最終類別,若是回歸問題,
每一顆決策樹輸出的均值作為最終結果。
在建立每一棵決策樹的過程中,有兩點需要注意:采樣與完全分裂
首先是兩個隨機采樣的過程,隨機森林對輸入的數據要進行行、列的采樣。對於行采樣,采用有放回的方式,也就是在采樣得到的樣本集合中,可能有重復的樣本。
假設輸入樣本為N個,那么采樣的樣本也為N個。這樣使得在訓練的時候,每一棵樹的輸入樣本都不是全部的樣本,使得相對不容易出現過擬合over-fitting。
然后進行列采樣,從M個feature中,選擇m個(m << M)。之后就是對采樣之后的數據使用完全分裂的方式建立出決策樹,這樣決策樹的某一個葉子節點要么是無
法繼續分裂的,要么里面的所有樣本的都是指向的同一個分類。
一般很多的決策樹算法都一個重要的步驟 – 剪枝,但是這里不這樣干,由於之前的兩個隨機采樣的過程保證了隨機性,所以就算不剪枝,也不會出現over-fitting。
每一棵決策樹就是一個精通於某一個窄領域的專家(因為我們從M個feature中選擇m讓每一棵決策樹進行學習),這樣在隨機森林中就有了很多個精通不同領域的專家,
對一個新的問題(新的輸入數據),可以用不同的角度去看待它,最終由各個專家,投票得到結果。
4、可優化的參數
決策樹算法中可優化的參數有:最小葉節點樣本數、剪枝方式等。
隨機森林中可優化的參數有:森林中決策樹的棵數。