Skip to content

Instantly share code, notes, and snippets.

@chairco
Last active April 9, 2018 09:21
Show Gist options
  • Save chairco/876b639975f0f1b60ac8503ada99c4e9 to your computer and use it in GitHub Desktop.
Save chairco/876b639975f0f1b60ac8503ada99c4e9 to your computer and use it in GitHub Desktop.

隨機森林

特別寫了一篇來回答,主要因為 DT, RF 說真的不太熟,所以很感謝學姊問這個深度問題,不過剛剛都在開會所以花了些時間整理一下資料與發表一點淺見。

關於 DT 的一些觀念我是來自林軒田老師機器學習技法,但老實講聽得很隨便。林老師課程有興趣網路有,不過偷懶找到網路上筆記可以快速參考。另外讀過一本 Hands on machine learning tensorflow,裡面提到的 DT, RF 非常清楚也把內容同時傳給你。剛剛搜尋看到 CH.Tseng 整理的文章覺得裡面範例也很不錯。

總歸來說多數都是 Python 實作,所以程式碼部分可以跳過就看觀念吧。

Q1: RF 可以用來做連續行的預測嗎?

可以的 首先看看 DT 的優點

Able to handle both numerical and categorical data. 
Other techniques are usually specialised in analysing datasets that have only one type of variable. 
See algorithms for more information.

因此可以同時處理連續型與類別型變數。所以 RF 也就可以(因為改為多個)

另外補充,不同型態採用不同方法:

  • 類別變數就是使用分類樹
  • 連續變數就是使用迴歸樹

p.s 注意 DT 是一個多元分類器。


Q2: 文章是說如果是二元的用 randomForest 那在找變數重要性的時候大樣本可以直接看 Gini

先說明 DT(Decision Tree) 和 RF(Random Forest) 關係。直接講結論是 RF 是 DT 的整體學習方法(Ensemble Learning),就是三個臭皮將勝過一個諸葛亮概念,因此很單純 RF 就是結合多顆 CART 樹(CART 是使用 GINI 演算法)。 先來看 Decision Tree 裡的一個觀念:分割,目的是要獲得為大資訊增益(Information gain, IG),資訊量通常分兩種方法分割: Entropy and Gini(Impurity),根據書上的意思是這兩種方法沒什麼不同,差異在 Gini 比較快,但 Entropy 通常會讓比較平衡(hands_on_machine_learning_tensorflow, p.175),所以大樣本看 Gini 我猜意思是比較快?

Entropy 公式 #

Gini 公式 #


Q3: 變數重要性的時候因為自變數是二元所以用 randomForest 就可以算出 Gini 跟 Mean decrease of accuracy 但現在資料的預測對象(應變數)是連續變數是只能切割變成區間再找變數重要性嗎? 如果一樣用決策數那就會變成回歸,可是這樣的r square低到不可思議的情況下還可以相信他的 %IncMSE IncNodePurity嗎?

這個問題真的很猛,應該已經偏向統計問題,學術不精但嘗試找些資料吸收之後看看能不能回答到問題。假如有觀念錯誤請指正我,也歡迎繼續討論。

這邊意思應該是想多個分類器(DT)組合起來做 RF, 但遭遇 target(y) 是連續變數,建議是將結果取平均為輸出結果。(隨機森林模型效力評估, p.15),我看書和文章範例應該就是用 MSE 方法處理。

如果決策樹應變數是連續 那它就是迴歸樹,這應該是沒錯的。至於說低到不可思議,我的淺見是 DT 本身就是在處理非線性問題,應該只要看精確度就夠了吧?可以參考(隨機森林模型效力評估, p20)

因為對 R 跑模型不熟查了一下你提到的兩個單字出處

  • %IncMSE: 是 increase in MSE。就是對每一個變量 比如 X1 隨機賦值, 如果 X1重要的話, 預測的誤差會增大,所以 誤差的增加就等同於準確性的減少,所以 Mean Decrease Accuracy 是一個概念的.

  • IncNodePurity: 也是一樣, 如果是回歸的話, node purity 其實就是 RSS(殘差平方和residual sum of squares) 的減少, node purity 增加就等同於 Gini 指數的減少,也就是節點裏的數據或 class 都一樣, 也就是 Mean Decrease Gini.

Reference

  1. 隨機森林模型效力評估
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment