R语言第十一讲 决策树与随机森林
概念
? ? ? ?決策樹(shù)主要有樹(shù)的回歸和分類方法,這些方法主要根據(jù)分層和分割?的方式將預(yù)測(cè)變量空間劃分為一系列簡(jiǎn)單區(qū)域。對(duì)某個(gè)給定待預(yù)測(cè)的觀 測(cè)值,用它所屬區(qū)域中訓(xùn)練集的平均值或眾數(shù)對(duì)其進(jìn)行預(yù)測(cè)。
? ? ? ?基于樹(shù)的方法簡(jiǎn)便且易于解釋。但預(yù)測(cè)準(zhǔn)確性通常較低。? ??
? ? ? ? 如圖所示,一共有5個(gè)人,我們根據(jù)年齡和性別進(jìn)行判斷,這個(gè)人是否喜歡打籃球。我們首先根據(jù)年齡是否大于15來(lái)判斷是否喜歡打籃球。如上,判斷出年齡大于15的都不喜歡打籃球,年齡小于15的可能喜歡打籃球。第一次劃分,左邊的數(shù)據(jù)集還具有不確定性,因此,我們?cè)俅胃鶕?jù)性別進(jìn)行劃分,直到葉子節(jié)點(diǎn)的數(shù)據(jù)集的純度較高時(shí),停止劃分。如上的樹(shù)就是一棵決策樹(shù),決策之意,就是我們?cè)诿總€(gè)分支節(jié)點(diǎn)上都定義了一個(gè)決策屬性(age、is male)。使用方法:我們只需要將數(shù)據(jù)集中的每一個(gè)樣本從上往下依次去走,直至到達(dá)葉子節(jié)點(diǎn),來(lái)求得其預(yù)測(cè)值。
? ? ? ?真正的葉子節(jié)點(diǎn)的數(shù)據(jù)集的預(yù)測(cè)值往往達(dá)不到純度(預(yù)測(cè)值數(shù)據(jù)占此葉子節(jié)點(diǎn)數(shù)據(jù)集的百分比)為100%,假設(shè)響應(yīng)變量(是否打籃球)為定性變量,那么其響應(yīng)值就是葉子節(jié)點(diǎn)數(shù)據(jù)集中出現(xiàn)次數(shù)最多的響應(yīng)值,我們假設(shè)爺爺奶奶不喜歡打籃球,他媽媽喜歡打籃球,那么此葉子節(jié)點(diǎn)其響應(yīng)值就是不喜歡打籃球。假設(shè)響應(yīng)變量為定量變量(連續(xù)的數(shù)值類型),那么其響應(yīng)值就是此葉子節(jié)點(diǎn)所有響應(yīng)值的加權(quán)平均數(shù)。
? ? ? 決策樹(shù),為什么要先用age決策呢,決策樹(shù)如何建立的呢?
? ? ? 接下來(lái),我講一講決策樹(shù)的訓(xùn)練階段。如何從給定的數(shù)據(jù)集中構(gòu)造出一棵決策樹(shù)?
? ? ??
? ? ? ? ?如上圖,假設(shè)這是一個(gè)人要去見(jiàn)約會(huì)對(duì)象了,我們將根據(jù)約會(huì)對(duì)象的年齡、長(zhǎng)相、收入、是否是公務(wù)員來(lái)預(yù)測(cè)其去不去見(jiàn)他的約會(huì)對(duì)象。首先看年齡,其次看長(zhǎng)相,再其次看收入……,決策的先后代表其重要的程度。
? ? ? ? ?熵? :描述一個(gè)子數(shù)據(jù)集的純度指標(biāo)。pi代表的是第i個(gè)響應(yīng)值在葉子數(shù)據(jù)集中所占的比例,一共有n種響應(yīng)值。從以下的公式,我們能夠的出,如果一個(gè)數(shù)據(jù)集的純度越高,其熵值就會(huì)越低,反之,越高。
? ? ? ?
? ? ? ? ?基尼系數(shù):?描述一個(gè)子數(shù)據(jù)集的純度指標(biāo)。,如果一個(gè)數(shù)據(jù)集的純度越高,其基尼系數(shù)值就會(huì)越低,反之,越高。
? ? ? ? ??
? ? ? ? 到底誰(shuí)來(lái)當(dāng)根節(jié)點(diǎn),這個(gè)是由計(jì)算機(jī)內(nèi)部計(jì)算出來(lái)的。
? ? ? ? 構(gòu)造決策樹(shù)的基本思想:隨著樹(shù)深度的增加,節(jié)點(diǎn)的熵值迅速的降低熵值降低的越快越好,這樣就能得到一顆高度最矮的決策樹(shù)。
? ? ? ? 下面通過(guò)一個(gè)例子,來(lái)介紹決策樹(shù)的構(gòu)造過(guò)程。
? ? ? ? ?
? ? ? ? ? 預(yù)測(cè)變量為:outlook(天氣)、temperature(溫度)、humidity(濕度)、windy(是否有風(fēng))。
? ? ? ? ? 響應(yīng)變量:是否出去玩(play)
? ? ? ? ? 構(gòu)造決策樹(shù):誰(shuí)來(lái)當(dāng)根節(jié)點(diǎn)?我們的得到如下的四種劃分。
? ? ? ? ? ?
? ? ? ?上面說(shuō)過(guò)了,決策樹(shù)的構(gòu)造是根據(jù)隨著樹(shù)深度的增加,節(jié)點(diǎn)的熵值迅速的降低熵值降低的越快越好。那么這四種劃分,那種的熵值降低的幅度最大呢?原有數(shù)據(jù)集的熵值如下公式計(jì)算出來(lái)。
?
首先呢,若選擇outlook作為根節(jié)點(diǎn),首次劃分之后,其熵值為多少呢?
outlook一共有14個(gè)樣本
outlook=sunny時(shí),5個(gè)樣本,2/5的概率打球,3/5的概率不打球。entropy=0.971
outlook=overcast時(shí),4個(gè)樣本,entropy = 0
outlook=rainy時(shí),5個(gè)樣本,entropy= 0.971.
其熵值為:5/14 x 0.971 + 4/14 x 0 + 5/14 x 0.971 = 0.693。
如此,系統(tǒng)熵就從0.940降到了0.693.信息增益為?0.940 -?0.693 = 0.247
同樣的temperature 信息增益為0.029,humidity?信息增益為0.152,windy 信息增益為0.048.
誰(shuí)的信息增益大,取那個(gè)特征做決策,遞歸的其左右孩子皆為如此。
接下來(lái),介紹一下一種算法叫做ID3算法,決策樹(shù)傳統(tǒng)的算法,他就是利用信息增益來(lái)構(gòu)建決策樹(shù)。
信息增益看起來(lái)很好,但其實(shí)他是存在一些問(wèn)題的。它存在一些異常現(xiàn)象。
假設(shè),我們考慮這樣一個(gè)特征,他呢,有很多個(gè)值,每一個(gè)屬性值內(nèi)部的樣本數(shù)量又非常少,極端情況下,其每一個(gè)屬性值內(nèi)部只有一個(gè)樣本,那么其熵值就會(huì)為0,但是,這樣的特征真的就好嗎。答案是否定的。采用信息增益作為判定方法,會(huì)傾向于去選擇屬性取值比較多的屬性。那么,選擇取值多的屬性為什么就不好了呢?舉個(gè)比較極端的例子,如果將身份證號(hào)作為一個(gè)屬性,那么,其實(shí)每個(gè)人的身份證號(hào)都是不相同的,也就是說(shuō),有多少個(gè)人,就有多少種取值,它的取值很多吧,讓我們繼續(xù)看,如果用身份證號(hào)這個(gè)屬性去劃分原數(shù)據(jù)集D,那么,原數(shù)據(jù)集D中有多少個(gè)樣本,就會(huì)被劃分為多少個(gè)子集,每個(gè)子集只有一個(gè)人,這種極端情況下,因?yàn)橐粋€(gè)人只可能屬于一種類別,好人,或者壞人,那么此時(shí)每個(gè)子集的信息熵就是0了,就是說(shuō)此時(shí)每個(gè)子集都特別純。信息增益計(jì)算出來(lái)的特別大,然后決策樹(shù)會(huì)用身份證號(hào)這個(gè)屬性來(lái)劃分原數(shù)據(jù)集D,其實(shí)這種劃分毫無(wú)意義。
所以,后人提出了對(duì)于ID3的改進(jìn)算法:C4.5,他是基于信息增益率來(lái)構(gòu)造決策樹(shù)的。
信息增益率:一個(gè)決策的信息增益/屬性的熵值??
比如身份證的例子,身份證屬性的熵值就很大,因?yàn)槠鋵傩灾岛芏?#xff0c;純度很低。身份證的熵值雖然大但是除以屬性的熵值之后就會(huì)變小,也就是其信息增益率就會(huì)很小。
如何評(píng)價(jià)一棵決策樹(shù)的預(yù)測(cè)效果呢,到底這顆樹(shù)的效果如何呢?
在此,我們引入評(píng)價(jià)函數(shù)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
N代表當(dāng)前葉子節(jié)點(diǎn)數(shù)據(jù)集的樣本數(shù)量,H代表當(dāng)前葉子節(jié)點(diǎn)的熵值。
樹(shù)的減枝。一個(gè)決策樹(shù)預(yù)測(cè)好了之后,如果不進(jìn)行減枝很可能會(huì)出現(xiàn)過(guò)擬合的現(xiàn)象發(fā)生,也就是說(shuō),他能很好的擬合訓(xùn)練集,但是測(cè)試集的運(yùn)行效果并不是很好,這主要在于這棵樹(shù)太過(guò)于龐大,有太多的分支,也可能是受到了訓(xùn)練集上一些異常值的影響。
我們可以進(jìn)行兩種減枝操作:
預(yù)剪枝:在構(gòu)建決策樹(shù)的過(guò)程中,提前停止。比如,決策度的深度、或者某個(gè)葉子節(jié)點(diǎn)數(shù)據(jù)集樣本數(shù)到某個(gè)數(shù)值時(shí)就進(jìn)行停止。
后剪枝:決策樹(shù)構(gòu)建好了后,然后才開(kāi)始減枝。我們將評(píng)價(jià)函數(shù)作如下改變,?T代表葉子節(jié)點(diǎn)的個(gè)數(shù)。
? ? ? ? ? ? ??
? ? ? ? ? ? ?圖中的a值用來(lái),作為一個(gè)調(diào)整參數(shù)。
? ? ? ? ? ? ? 我們利用評(píng)價(jià)函數(shù),對(duì)樹(shù)中的分支節(jié)點(diǎn)進(jìn)行評(píng)價(jià),根據(jù)評(píng)價(jià)函數(shù)值進(jìn)行決定要不要進(jìn)行減枝。
隨機(jī)森林:通俗的講就是我們將訓(xùn)練集中部分?jǐn)?shù)據(jù)進(jìn)行10次有放回的隨機(jī)抽樣得到十個(gè)訓(xùn)練集,然后就能在十個(gè)訓(xùn)練集上得到十棵決策樹(shù),構(gòu)造決策樹(shù)的時(shí)候,選擇特征(天氣、溫度……)時(shí),每棵樹(shù)只抽取部分特征。使用的時(shí)候,用十棵決策樹(shù)共同來(lái)做出決定,比如同一個(gè)預(yù)測(cè)變量值,六棵樹(shù)預(yù)測(cè)為藍(lán)色,4棵為紅色,其最終預(yù)測(cè)值就是藍(lán)色。
?
?
?
?
? ? ? ??
? ? ? ? ??
總結(jié)
以上是生活随笔為你收集整理的R语言第十一讲 决策树与随机森林的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java求最小数用哪个函数_在Java中
- 下一篇: 基于uCOSII的LCD驱动实验