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