天天看點

3、随機森林随機森林

随機森林

1、概念:

随機森林顧名思義,随機森立算法中的“随機”一詞是指通過Bagging中的bootstrapping得到不同的資料,進而展現出來的随機性:從行(觀測)的角度進行bootstrap抽樣,而且還要從列(變量)的角度進行随機抽樣(抽樣的個數少于所有變量個數),通過不同的組合生成不同的訓練樣本集。是用随機的方式建立一個森林,森林裡面有很多的決策樹組成,随機森林的每一棵決策樹之間是沒有關聯的。在得到森林之後,當有一個新的輸入樣本進入的時候,就讓森林中的每一棵決策樹分别進行一下判斷,看看這個樣本應該屬于哪一類(對于分類算法),然後看看哪一類被選擇最多,就預測這個樣本為那一類。

2、随機森林的原理

在建立每一棵決策樹的過程中,有兩點需要注意 - 采樣與完全分裂。

首先是兩個随機采樣的過程,random forest對輸入的資料要進行行、列的采樣:

① 對于行采樣,采用有放回的方式,也就是在采樣得到的樣本集合中,可能有重複的樣本。假設輸入樣本為N個,那麼采樣的樣本也為N個。這樣使得在訓練的時候,每一棵樹的輸入樣本都不是全部的樣本,使得相對不容易出現over-fitting。

② 然後進行列采樣(Bootstrap重新抽樣),從M 個feature中,選擇m個特征(m << M)。

之後就是對采樣之後的資料使用完全分裂的方式建立出決策樹,這樣決策樹的某一個葉子節點要麼是無法繼續分裂的,要麼裡面的所有樣本的都是指向的同一個分類。決策樹形成過程中每個節點都要按完全分裂的方式來分裂,一直到不能夠再分裂為止。一般很多的決策樹算法都有一個重要的步驟 - 剪枝,但是随機森林不需要剪枝,由于之前的兩個随機采樣的過程保證了随機性,是以就算不剪枝,也不會出現over-fitting。

按這種算法得到的随機森林中的每一棵都是很弱的,但是大家組合起來就很厲害了。每一棵決策樹就是一個精通于某一個窄領域的專家,這樣在随機森林中就有了很多個精通不同領域的專家,對一個新的問題(新的輸入資料),可以用不同的角度去看待它,最終由各個專家,投票得到結果,即随機森林随機地生成幾百個至幾千個分類樹,然後選擇重複程度最高的樹作為最終結果。

3、随機森林優點和缺點

優點:

a.兩個随機性的引入,使得随機森林不容易陷入過拟合

b.兩個随機性的引入,使得随機森林具有很好的抗噪聲能力

c.它能夠處理很高次元(feature很多)的資料,并且不用做特征選擇,對資料集的适應能力強:既能處理離散型資料,也能處理連續型資料,資料集無需規範化

d. 在訓練完後,它能夠給出哪些feature比較重要

e. 在建立随機森林的時候,對generlization error使用的是無偏估計

f. 訓練速度快,可以得到變量重要性排序

g. 在訓練過程中,能夠檢測到feature間的互相影響

h. 容易做成并行化方法

i. 實作比較簡單

随機森林模型有着驚人的準确性,可以替代一般線性模型(線性回歸、方差分析等)和廣義線性模型(邏輯斯蒂回歸、泊松回歸等)等等。

缺點:

随機森林的主要劣勢在于模型大小。你可能需要數百兆的記憶體才能輕松地結束一個森林,而且評估的速度也很慢。随機森林模型其實是個很難去解釋的黑盒子。

4、随機森林應用範圍

随機森林可以用于分類和回歸。當因變量Y是分類變量時,是分類;當因變量Y是連續變量時,是回歸。自變量X可以是多個連續變量和多個分類變量的混合。随機森林既可以處理屬性為離散值的量,如ID3算法,也可以處理屬性為連續值的量,比如C4.5算法。另外,随機森林還可以用來進行無監督學習聚類和異常點檢測。

随機森林和使用決策樹作為基本分類器的(bagging)有些類似。以決策樹為基本模型的bagging在每次bootstrap放回抽樣之後,産生一棵決策樹,抽多少次樣本就生成多少棵樹,在生成這些樹的時候沒有進行更多的幹預。而随機森林也是進行bootstrap抽樣,但它與bagging的差別是:在生成每棵樹的時候,每個節點變量都僅僅在随機選出的少數變量中産生。是以,不但樣本是随機的,連每個節點變量(Features)的産生都是随機的。

許多研究表明, 組合分類器比單一分類器的分類效果好,随機森林(random forest)是一種利用多個分類樹對資料進行判别與分類的方法,它在對資料進行分類的同時,還可以給出各個變量(基因)的重要性評分,評估各個變量在分類中所起的作用。

5、決策樹與随機森林的差別:

決策樹(decision tree):是一個樹結構(可以是二叉樹或非二叉樹)。其每個非葉節點表示一個特征屬性上的測試,每個分支代表這個特征屬性在某個值域上的輸出,而每個葉節點存放一個類别。使用決策樹進行決策的過程就是從根節點開始,測試待分類項中相應的特征屬性,并按照其值選擇輸出分支,直到到達葉子節點,将葉子節點存放的類别作為決策結果。

随機森林:是用随機的方式建立一個森林,森林裡面有很多的決策樹組成,随機森林的每一棵決策樹之間是沒有關聯的。在得到森林之後,當有一個新的輸入樣本進入的時候,就讓森林中的每一棵決策樹分别進行一下判斷,看看這個樣本應該屬于哪一類,然後看看哪一類被選擇最多,就預測這個樣本為那一類。

随機森林相比于神經網絡,降低了運算量的同時也提高了預測精度,該算法對多元共線性不敏感以及對缺失資料和非平衡資料比較穩健,可以很好地适應多達幾千個解釋變量資料集。

繼續閱讀