[Machine Learning]Random Forest

  • 340
  • 0
  • 2019-04-30

Random Forest是一個好理解、實用,很常用來做大量數據的分析之方法,

對於初學者來說是很好上手的一種Machine Mearning方法。

Random Forest顧名思義,是用隨機的方式建立一個森林,森林裡面有很多的決策數(分類器)所組成,

隨機森林的每一棵決策樹之間是沒有關聯的,也就是樹與樹之間是相互獨立的

(比較白話的意思就是當有一個新的樣本進入的時候,就讓森林中的每一棵決策樹分別進行一下判斷,

看看這個樣本應該屬於哪一類,假設此樣本被每一棵決策樹選擇較多次為A類別,則就會預測這個樣本屬於A類別。)

剛剛說到樹與樹之間是相互獨立的接下來的問題是如何獲取多個獨立的樹(分類器)呢?

以下兩種方法:

Bagging

這是1996年由Breiman提出(Bagging是Bootstrap aggregating的縮寫)

特性:訓練出有差異性的分類器(Tree)

N:Training data資料數

M:bag數量

K:一個bag資料數量

從訓練資料中取M個樣本,M個樣本訓練出M個分類器(Tree),每次取的K資料數量都會放回訓練資料中,

因此達到每個分類器的差異性,也稱作Bootstrap抽樣。簡單的說,N中取M,M個數=M個Tree,K皆會放回N中

整個順序 :  隨機取100筆資料訓練出一個分類器 => 將100筆資料放回 => 再隨機取100筆資料訓練第二個分類器,以此類推。

因此每一個分類器彼此間都會有差異性。

 

Boosting

特性:將學習力較弱的分類器逐步加強訓練成較強的分類器

對一份訓練資料,建立X個模型, 而每次分類都會將上一次分錯的資料加重權重再進行下一次分類,

這樣最終得到的分類器在測試資料與訓練資料都會有不錯的結果,如下圖。

Random Forest優點

相較於其它的學習模型,隨機森林的優點是:(參考自wikipedia)

  1. 對於很多種資料,它可以產生高準確度的分類器。
  2. 它可以處理大量的輸入變數。
  3. 它可以在決定類別時,評估變數的重要性。
  4. 在建造森林時,它可以在內部對於一般化後的誤差產生不偏差的估計。
  5. 它包含一個好方法可以估計遺失的資料,並且,如果有很大一部分的資料遺失,仍可以維持準確度。
  6. 它提供一個實驗方法,可以去偵測variable interactions。
  7. 對於不平衡的分類資料集來說,它可以平衡誤差。
  8. 它計算各例中的親近度,對於數據挖掘、偵測偏離者(outlier)和將資料視覺化非常有用。
  9. 使用上述。它可被延伸應用在未標記的資料上,這類資料通常是使用非監督式聚類。也可偵測偏離者和觀看資料。
  10. 學習過程是很快速的。

 

 

參考網址:https://kknews.cc/zh-tw/news/brzmvj.htmlhttps://read01.com/QAneJm.html