隨機森林的原理與實現

隨機森林的基本描述:

由於單一的決策樹一般都會有過擬合的問題,因此一些研究人員通過特定的方式構建多個決策樹的方法來增加模型中的偏差(bias),從而解決模型過擬合的問題。由於在構建樹的過程中使用了一些隨機化的方法,而且又包括了很多的樹,因此這個模型被稱爲了隨機森林。

隨機森林既可以用於分類,又可以用於迴歸。用於分類時,給定的輸入樣例必須作爲每一棵樹的輸入,最後統計每一棵樹所預測的類型中哪個類型是最多的(majority vote),樣本就被預測爲那種類型;用於迴歸時,輸入樣例也是要作爲每一棵樹的輸入,然後對每一棵樹的輸出值求平均,得到輸入樣例的預測值。

事實上,隨機森林還能用於非監督性學習,這是因爲隨機森林具有一個特性:能夠測量每個實例之間的接近度(proximity),通過這樣的特性我們可以對無標籤的數據進行聚類,這是隨機森林最重要的特性。兩個實例接近度的計算是通過讓兩個實例遍歷森林中的每一棵樹,統計它們處於相同葉子節點的次數,將總次數除以樹的總數就是兩個實例的接近度。

通過實例的接近度測量,隨機森林還能應用於尋找離羣值。

另外,隨機森林還能計算出輸入數據集中各個特徵的重要性,通過對特徵重要性的測量我們就可以實現某種程度的維度下降。基本的測量步驟是對當前測量的特徵的各個值進行重新排列,然後使用oob(out-of-bag)數據對每一棵樹計算排列前後正確分類的實例的數目,使用排列前的正確分類實例數目減去排列後正確分類實例數目。統計所有樹這個減法值的平均值就能得到特徵重要性的原始值。

其次地,隨機森林解決數據集中數據缺失,數據集類別數目不平衡等問題。


隨機森林的基本實現方法:

①通過放回採樣的方法在原數據集中進行採樣,每構造一棵樹就要採樣一次。

②使用採樣後的數據集,根據給定的樹深和葉子數據量大小等參數要求來構造決策樹。與一般的決策樹構造不同,模型還有一個參數用於指定在進行節點分割的時候,只選取多少個特徵進行最優分割的計算。因此在構造決策樹每一次進行節點分割的時候,我們必須隨機選取指定數量的特徵用於計算最優分割特徵以及特徵值,以這個特徵和特徵值進行分割,從而構造出一個決策樹。另外,是否分割的標準是根據基尼不純度來判斷的。這是向模型加入偏差(bias)的重要步驟。

③重複以上兩步直到構造完了指定數量的決策樹。


隨機森林的性能測量方法:

①可以使用k-折交叉驗證的方法。

②使用oob誤差估計。由於在每棵樹構造的過程中都會有沒有被採樣的數據,這些數據也被稱爲out-of-bag數據(oob數據),使用oob數據在對應的樹上計算出預測值。對於每一個作爲oob的實例,統計它在預測類型最多的作爲該實例的類型。最後計算出誤差率。


隨機森林所涉及到的參數:

①最重要的就是在每一次分割需要用到的特徵數目。

②對原數據集進行放回取樣的樣本數。

③所構造的每一個決策樹的最大深度,以及葉子節點所包含的最大實例數。

④要構造的樹的數目。


參考資料:

隨機森林的詳細描述  https://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htm

隨機森林的具體實現  https://machinelearningmastery.com/implement-random-forest-scratch-python/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章