隨機森林
今天的分享內(nèi)容是隨機森林捏肢,在集成學(xué)習(xí)中雖然相對簡單,但是簡單不等于其不使用饥侵,其實簡單以為便于解釋和穩(wěn)定鸵赫。既然叫做隨機森林,又是集成模型躏升,那么他基礎(chǔ)當(dāng)然就是決策樹辩棒。決策樹好處就是易于構(gòu)建、易于使用和解釋膨疏。但是因為決策樹的精準(zhǔn)度不高這個問題一睁,所以我們通常首選的預(yù)測工具不會考慮決策樹。精準(zhǔn)度問題主要反映在決策樹可以在訓(xùn)練數(shù)據(jù)集有良好表現(xiàn)佃却,因其泛化能力不強而在測試集上表現(xiàn)一般者吁。
所以才有了隨機森林,隨機森林通過靈活方式將簡單決策樹組合在一起饲帅,這樣做好處就是可以大大提供決策樹的精準(zhǔn)度复凳。
- 構(gòu)建隨機深林
- 如何使用隨機深林
- 評估隨機深林精準(zhǔn)度
構(gòu)建自提升數(shù)據(jù)集
這里要簡答說一下 bootstrap 這個詞,通常在集成學(xué)習(xí)中翻譯成自提升灶泵,翻譯是依靠自己力量的育八;自己做的∩饬冢可以理解為利用現(xiàn)有資源來進行改善優(yōu)化髓棋。
Chest Pain | Good Blood Circ. | Blocked Arteries | Weight | Heart Diseas |
---|---|---|---|---|
No | No | No | 125 | No |
Yes | Yes | Yes | 180 | Yes |
Yes | Yes | No | 210 | No |
Yes | No | Yes | 167 | Yes |
今天我們用數(shù)據(jù)集有點過小,但是我們目的是將隨機森林講清楚,介于這個目的也夠用了按声。
要創(chuàng)建與原始數(shù)據(jù)集樣本數(shù)量相同的(自提升)數(shù)據(jù)集膳犹,只需從原始數(shù)據(jù)集中隨機選擇樣本。值得注意的是我們隨機選取是允許重復(fù)選取同一樣本數(shù)據(jù)的儒喊。
Chest Pain | Good Blood Circ. | Blocked Arteries | Weight | Heart Diseas |
---|---|---|---|---|
Yes | Yes | Yes | 180 | Yes |
No | No | No | 125 | No |
Yes | No | Yes | 167 | Yes |
Yes | No | Yes | 167 | Yes |
上面數(shù)據(jù)就是我們從原有數(shù)據(jù)集中隨機地有放回地抽取數(shù)據(jù)組成數(shù)據(jù)集镣奋,注意最后兩個樣本是一樣的。這樣就創(chuàng)建了自提升數(shù)據(jù)集怀愧,是不是很簡單侨颈。
隨機選取特征
這樣我們就通過隨機選取樣本得到了一個新的數(shù)據(jù)集。那么現(xiàn)在就可以以使用自提升數(shù)據(jù)集來創(chuàng)建決策樹芯义,但在每個步驟中哈垢,也是通過隨機一定數(shù)量數(shù)據(jù)的特征(也就是表的列)進行訓(xùn)練決策樹。
在這個例子中扛拨,暫時只考慮兩特征(列)數(shù)據(jù)作為耘分,在構(gòu)建決策樹根節(jié)點時,我們通常做法是會考慮數(shù)據(jù)所有特征來計算他們的信息增益率或 Gini 指數(shù)的大小來作為選取哪個節(jié)點作為根節(jié)點依據(jù)绑警。
而在隨機森林中求泰,我們不會考慮所有特征,只是先隨機選取Good Blood Circ. 和Blocked Arteries 作為根節(jié)點的候選特征计盒,我們假設(shè) Good Blood Circulation 這個特征可以很好完成數(shù)據(jù)分類渴频。
Chest Pain | Good Blood Circ. | Blocked Arteries | Weight | Heart Diseas |
---|---|---|---|---|
Yes | Yes | Yes | 180 | Yes |
No | No | No | 125 | No |
Yes | No | Yes | 167 | Yes |
Yes | Yes | No | 210 | No |
首先根根節(jié)點選擇 good circ。發(fā)現(xiàn)這個特征可以很好將數(shù)據(jù)集進行分類得到很好的精準(zhǔn)度,然后去掉已經(jīng)使用過特征北启,在剩余的特征進行隨機選取作為下一步的創(chuàng)建分支卜朗。
到現(xiàn)在大家已經(jīng)看出來所謂隨機就是
- 隨機選取數(shù)據(jù)樣
- 隨機選取數(shù)據(jù)特征
來構(gòu)建決策樹分類器
重復(fù)之前步驟,基于在原有數(shù)據(jù)集上隨機選取來創(chuàng)建一個新的自提升數(shù)據(jù)集咕村,并在隨機選取特征來構(gòu)建新的決策樹场钉。
通過自提升樣本,和隨機選取特征的方法懈涛,我們可以創(chuàng)檢很多不同的決策樹逛万。這樣從另一方面我們可以通過不同數(shù)據(jù)增加了決策樹的見識,也可以說是一種數(shù)據(jù)增強的方式批钠。
隨機森林的使用
我們得到新的樣本宇植,然后將數(shù)據(jù)丟到我們構(gòu)建第一顆決策樹,然后第一顆決策樹給出 yes 的估計价匠。然后重復(fù)上面步驟,每一個構(gòu)建的決策樹都會給出數(shù)據(jù)的估計呛每。
Chest Pain | Good Blood Circ. | Blocked Arteries | Weight | Heart Diseas |
---|---|---|---|---|
Yes | No | No | 168 | ??? |
假設(shè)最終我們得到結(jié)果踩窖,就是每顆決策樹給出估計如下表
Yes | No |
---|---|
5 | 1 |
隨機林中的所有決策樹會對新的樣本進行預(yù)測,最后通過隨機森林對分類進行投票晨横,投票最多的預(yù)測可以作為隨機森林做出的預(yù)測結(jié)果洋腮。
這樣集成基于自提升數(shù)據(jù)創(chuàng)建分類器來以投票方式給出估計的模型叫做裝袋算法(Bagging) ,Bagging 詞源于 Boostrapping 和 aggregate
typically about 1/3 of the original data does not end up in the bootstrapped dataset
通常箫柳,大約1/3的原始數(shù)據(jù)不會在引導(dǎo)數(shù)據(jù)集中結(jié)束
Chest Pain | Good Blood Circ. | Blocked Arteries | Weight | Heart Diseas |
---|---|---|---|---|
Yes | Yes | No | 210 | No |
這條數(shù)據(jù)就沒有出現(xiàn)在之前數(shù)據(jù)集中,那么這些沒有被選中的樣本叫做袋外數(shù)據(jù)(Out-Of-Bag),正是因為這些數(shù)據(jù)沒有加入新數(shù)據(jù)集啥供,我們便可以利用這些數(shù)據(jù)來驗證剛剛創(chuàng)建好的決策樹悯恍,也就是驗證數(shù)據(jù)集?
最終我們可以通過是否正確估計這些袋外數(shù)據(jù)的分類的比例來作為衡量隨機森林的精確度的一個依據(jù),也叫做袋外誤差(Out-Of-Bag Errro)
那么這些袋外誤差僅是告訴隨機森林預(yù)測的好壞還是不夠的伙狐,我們希望這些數(shù)據(jù)有助于構(gòu)建出精準(zhǔn)度高決策樹涮毫,所以我們可以通過通過袋外誤差來決定我們隨機選擇特征數(shù)量,具體地說如何我們先隨機選取 2 特征來構(gòu)建決策樹看一看袋外誤差怎么樣贷屎,然后再選取 3 特征來構(gòu)建隨機森林看看其袋外誤差怎么樣罢防,最后根據(jù)結(jié)果來調(diào)整選取的數(shù)量。
參考 StatQuest