iT邦幫忙

2021 iThome 鐵人賽

DAY 4
0
AI & Data

Python 機器學習實驗室 ʘ ͜ʖ ʘ系列 第 4

樹選手2號:random forest

在前面兩天簡單介紹了一下decision tree的原理,今天來談談如何把樹變成一片森林~
Ramdom forest基本上就是採用團結力量大的方式來種很多不同的樹,最後再把每棵樹預測的結果總和,跟decision tree一樣:如果是分類問題就採取多數決,如果是數值預測問題就採用平均數,random forest的好處在於:

  1. 有效解決decision tree overfitting 的問題
  2. 準確率通常比decision tree高
  3. 比較不容易受極端值影響

https://ithelp.ithome.com.tw/upload/images/20210918/20142004LwXLtEGIYT.png

random forest隨機在哪裡?

bagging

如果我們想要種很多不同的樹,但每棵樹我們都給他一模一樣的training data,那長出來的樹都會一樣,這樣就是白忙一場~ 所以第一個隨機的部分就在於:對於每棵樹,我都給他不同的training data,抽取的辦法有一個專門的詞叫做“Bagging”,具體的方法是:我從所有的資料裡面抽取n個資料形成一個子樣本(放回再抽下一個,所以資料可!以!重!複!),這件事重複做很多次,取決於你想要幾棵樹就做幾次。

小小補充:bagging 的全稱叫做“boostrap aggregating”,上面提到的重複抽取樣本的方法,就叫“boostrap”,而後續把不同樹的預測總結就是aggregate!

feature randomness

另外一個隨機的部分就是參數的數量,如果資料總共有10個參數(x1,x2...x10),每棵樹也隨機給他m個就好,這樣的目的也算是在讓每棵樹都可以專注在小範圍的資料子集合,這樣的方法就是“feature randomness”。

因為每棵樹的參數數量以及資料都比較小,所以種樹的效率很高,也因此我們可以很快的就種出一片森林囉!

reference:
https://www.youtube.com/watch?v=cIbj0WuK41w


上一篇
樹選手1號:decision tree [python實例]
下一篇
樹選手2號:random forest [python實例]
系列文
Python 機器學習實驗室 ʘ ͜ʖ ʘ30

尚未有邦友留言

立即登入留言