Random forests,又叫random decision forests,它是一個包含多個決策樹的分類器,并且其輸出的類別是由個別樹輸出的類別的眾數而定。
上世紀八十年代Breiman等人發明分類樹的算法(Breiman et al. 1984),通過反復二分數據進行分類或回歸,計算量大大降低。2001年Breiman把分類樹組合成隨機森林(Breiman 2001a),即在變量(列)的使用和數據(行)的使用上進行隨機化,生成很多分類樹,再匯總分類樹的結果。
1. 算法:
它根據下列算法而建造每棵樹,具有雙重隨機:
-用N來表示訓練用例(樣本)的個數,M表示特征數目。
-輸入特征數目m,用于確定決策樹上一個節點的決策結果;其中m應遠小于M。
-從N個訓練用例(樣本)中以有放回抽樣的方式,取樣N次,形成一個訓練集(即bootstrap取樣),并用未抽到的用例(樣本)作預測,評估其誤差。
-對于每一個節點,隨機選擇m個特征,決策樹上每個節點的決定都是基于這些特征確定的。根據這m個特征,計算其最佳的分裂方式。
-每棵樹都會完整成長而不會剪枝(Pruning,這有可能在建完一棵正常樹狀分類器后會被采用)。
2. 隨機森林的優點:
a. 在數據集上表現良好,兩個隨機性的引入,使得隨機森林不容易陷入過擬合
b. 在當前的很多數據集上,相對其他算法有著很大的優勢,兩個隨機性的引入,使得隨機森林具有很好的抗噪聲能力
c. 它能夠處理很高維度(feature很多)的數據,并且不用做特征選擇,對數據集的適應能力強:既能處理離散型數據,也能處理連續型數據,數據集無需規范化
d. 可生成一個Proximities=(pij)矩陣,用于度量樣本之間的相似性: pij=aij/N, aij表示樣本i和j出現在隨機森林中同一個葉子結點的次數,N隨機森林中樹的顆數
e. 在創建隨機森林的時候,對generlization error使用的是無偏估計
f. 訓練速度快,可以得到變量重要性排序(兩種:基于OOB誤分率的增加量和基于分裂時的GINI下降量
g. 在訓練過程中,能夠檢測到feature間的互相影響
h. 容易做成并行化方法
i. 實現比較簡單
參考來源:
1. http://www.zilhua.com/629.html
2. https://en.wikipedia.org/wiki/Random_forest