close

隨機森林是一包含多個決策樹的分類器,也就是多個樹狀分類器的集合。

詳細介紹可以參考維基百科

https://zh.wikipedia.org/wiki/%E9%9A%8F%E6%9C%BA%E6%A3%AE%E6%9E%97


本篇使用之資料集:

  • 資料集:UCI Machine Learning Repository,Student Performance Data Set的student-mat.csv檔案
  • 簡   述:總共有359位學生的資料,每位學生有33個屬性(如:學校、性別、年齡......等)。利用每位學生的32個屬性,來預測其最終數學成績(G3)。

程式碼如下:

 

第24行印出

rf_001.PNG

 

第27行印出

(即為90%的訓練資料筆數,395*90%=355.5,取天花板數為356沒錯~)

rf_002.PNG

 

第30行印出隨機選出的訓練資料(共356筆)中,隨機選到第幾筆資料

new_rf1_001.PNG

 

第41行印出

以OOB樣本進行預測,錯誤率為28.65%

(OOB為Out of bag error的意思,為每次抽樣中的袋外資料)

oob_m2.PNG

下面的矩陣可以看出

模型將原本為A的正確預測為A的有21筆

模型將原本為A的錯誤預測為B的有12筆

A類別的誤判率有38.2%

new_rf1_003.PNG

 

然而,在隨機森林中有兩個重要的參數,

一個為ntree,即為森林的樹木數;

另一個為mtry,即為每顆決策樹之節點分支以隨機方式選擇屬性之個數。

下面的程式碼試圖找出對於決策樹節點分支所選擇的屬性個數之最佳值(mtry)。

 

第35~40行的for迴圈中,加入所選的屬性個數,並印出該模型的錯誤率平均值,

第1個模型為:決策樹之節點分支屬性個數為1時

第22個模型為:決策樹之節點分支屬性個數為22時

依此類推......

rf_v2_001.PNG

 

找出錯誤率最小的模型,

該模型的屬性個數值即為mtry最佳的參數值。

執行第41~42行

new_rf2_001.PNG

 

第46行

把mtry參數設定為26後(第44行),

以OOB樣本進行預測,錯誤率為24.3%

oob_rm2.PNG

rf_v2_003.PNG

 

第47行

利用importance()函數來找出重要的屬性

rf_v2_004.PNG

 

第50行

以round()函數來簡化,四捨五入取到小數第二位

rf_v2_005.PNG

利用importance()函數,得到MeanDecreaseAccuracy與MeanDecreaseGini,

值愈高就表示該屬性對於該模型的判別影響愈大,

可以做為後續利用其他演算法建模時刪減屬性的依據。

 

第49行

利用MDSplot()函數印出集群分析圖

rf_v2_006.PNG


參考:

Poll的筆記,http://www.cnblogs.com/maybe2030/p/4585705.html

林淑芬(臺灣大學計算機及資訊網路中心教學研究組程式設計師),http://www.cc.ntu.edu.tw/chinese/epaper/0034/20150920_3410.html

易百教程 , R语言随机森林 ,http://www.yiibai.com/r/r_random_forest.html

 

請不吝指教 =)

arrow
arrow
    文章標籤
    R 機器學習 隨機森林
    全站熱搜

    Jialin 發表在 痞客邦 留言(3) 人氣()