0
雷鋒網(wǎng)按:本文作者夏洪進,原載于作者個人博客,雷鋒網(wǎng)已獲授權。
最近學習了一段時間的決策樹算法,但是感覺并沒有達到自己預期的想法,所以這幾天參考了一些決策樹方面的資料,來將自己的學習的過程的筆記記錄在這里,來加深理解和請教別人指出錯誤。
決策樹又叫做decision tree,這個是一種比較簡單但是又得到廣泛應用的分類器的一種形式。我們一般都是通過訓練的數(shù)據(jù)來搭建起決策樹的模型。通過這個模型,我們可以高效的對于未知的數(shù)據(jù)進行歸納分類,類似于我們的聚類算法。
應用決策樹有如下幾個優(yōu)點:
1:決策樹的模型的可讀性比較好,具有很強的可以描述性,有利于以后高效率的人工分析
2:效率高,決策樹只需要以此構建,就可以達到反復使用的效果,每一次的預測的最大計算次數(shù)只要不超過決策樹的深度即可。
3:決策樹來如何預測:
現(xiàn)在我們以Data Analysis中的經(jīng)典案例來進行分析:

從上邊的表述中的相關信息,我們可以通過記錄以前的用戶的一些相關的特性,比如記錄這個用戶是否可以償還債務,是否擁有房產,是否結過婚,年收入等,來構建我們所需要的決策樹。
上表根據(jù)歷史數(shù)據(jù),記錄已有的用戶是否可以償還債務,以及相關的信息。通過該數(shù)據(jù),構建的決策樹如下:

現(xiàn)在假設新來了一個用戶:沒有房產,單身狗,年收入5萬,那么根據(jù)上面的決策樹,可以預測他無法償還債務(藍色虛線路徑)。從上面的決策樹,還可以知道看出來是否擁有房產可以很大的決定用戶是否可以償還債務,對借貸業(yè)務具有指導意義。
現(xiàn)在我們開始學習如何構造決策樹
決策樹構建的基本步驟如下:
1. 開始,把所有記錄看作一個節(jié)點
2. 遍歷每個變量的每一種分割方式,找到最好的分割點
3. 分割成兩個節(jié)點N1和N2
4. 對N1和N2分別繼續(xù)執(zhí)行2-3步,直到每個節(jié)點足夠“純”為止
決策樹的變量可以有兩種:
1)數(shù)字型(Numeric):變量類型是整數(shù)或浮點數(shù),如前面例子中的“年收入”。用“>=”,“>”,“<”或“<=”作為分割條件(排序后,利用已有的分割情況,可以優(yōu)化分割算法的時間復雜度)。
2)名稱型(Nominal):類似編程語言中的枚舉類型,變量只能重有限的選項中選取,比如前面例子中的“婚姻情況”,只能是“單身”,“已婚”或“離婚”。使用“=”來分割。
如何評估分割點的好壞?如果一個分割點可以將當前的所有節(jié)點分為兩類,使得每一類都很“純”,也就是同一類的記錄較多,那么就是一個好分割點。比如上面的例子,“擁有房產”,可以將記錄分成了兩類,“是”的節(jié)點全部都可以償還債務,非?!凹儭保弧胺瘛钡墓?jié)點,可以償還貸款和無法償還貸款的人都有,不是很“純”,但是兩個節(jié)點加起來的純度之和與原始節(jié)點的純度之差最大,所以按照這種方法分割。構建決策樹采用貪心算法,只考慮當前純度差最大的情況作為分割點。
前面講到,決策樹是根據(jù)“純度”來構建的,如何量化純度呢?這里介紹三種純度計算方法。如果記錄被分為n類,每一類的比例P(i)=第i類的數(shù)目/總數(shù)目。還是拿上面的例子,10個數(shù)據(jù)中可以償還債務的記錄比例為P(1) = 7/10 = 0.7,無法償還的為P(2) = 3/10 = 0.3,N = 2。
Gini不純度

熵(Entropy)

錯誤率

上面的三個公式均是值越大,表示越“不純”,越小表示越“純”。三種公式只需要取一種即可,實踐證明三種公司的選擇對最終分類準確率的影響并不大,一般使用熵公式。
純度差,也稱為信息增益(Information Gain),公式如下:

其中,I代表不純度(也就是上面三個公式的任意一種),K代表分割的節(jié)點數(shù),一般K = 2。vj表示子節(jié)點中的記錄數(shù)目。上面公式實際上就是當前節(jié)點的不純度減去子節(jié)點不純度的加權平均數(shù),權重由子節(jié)點記錄數(shù)與當前節(jié)點記錄數(shù)的比例決定。
決策樹的構建過程是一個遞歸的過程,所以需要確定停止條件,否則過程將不會結束。一種最直觀的方式是當每個子節(jié)點只有一種類型的記錄時停止,但是這樣往往會使得樹的節(jié)點過多,導致過擬合問題(Overfitting)。另一種可行的方法是當前節(jié)點中的記錄數(shù)低于一個最小的閥值,那么就停止分割,將max(P(i))對應的分類作為當前葉節(jié)點的分類。
采用上面算法生成的決策樹在事件中往往會導致過濾擬合。也就是該決策樹對訓練數(shù)據(jù)可以得到很低的錯誤率,但是運用到測試數(shù)據(jù)上卻得到非常高的錯誤率。過渡擬合的原因有以下幾點:
1. 噪音數(shù)據(jù):訓練數(shù)據(jù)中存在噪音數(shù)據(jù),決策樹的某些節(jié)點有噪音數(shù)據(jù)作為分割標準,導致決策樹無法代表真實數(shù)據(jù)。
2. 缺少代表性數(shù)據(jù):訓練數(shù)據(jù)沒有包含所有具有代表性的數(shù)據(jù),導致某一類數(shù)據(jù)無法很好的匹配,這一點可以通過觀察混淆矩陣(Confusion Matrix)分析得出。
3. 多重比較:舉個列子,股票分析師預測股票漲或跌。假設分析師都是靠隨機猜測,也就是他們正確的概率是0.5。每一個人預測10次,那么預測正確的次數(shù)在8次或8次以上的概率為

只有5%左右,比較低。但是如果50個分析師,每個人預測10次,選擇至少一個人得到8次或以上的人作為代表,那么概率為:

概率十分大,隨著分析師人數(shù)的增加,概率無限接近1。但是,選出來的分析師其實是打醬油的,他對未來的預測不能做任何保證。上面這個例子就是多重比較。這一情況和決策樹選取分割點類似,需要在每個變量的每一個值中選取一個作為分割的代表,所以選出一個噪音分割標準的概率是很大的。
1:修剪枝葉
決策樹過渡擬合往往是因為太過“茂盛”,也就是節(jié)點過多,所以需要裁剪(Prune Tree)枝葉。裁剪枝葉的策略對決策樹正確率的影響很大。主要有兩種裁剪策略。
前置裁剪在構建決策樹的過程時,提前停止。那么,會將切分節(jié)點的條件設置的很苛刻,導致決策樹很短小。結果就是決策樹無法達到最優(yōu)。實踐證明這中策略無法得到較好的結果。
后置裁剪決策樹構建好后,然后才開始裁剪。采用兩種方法:1)用單一葉節(jié)點代替整個子樹,葉節(jié)點的分類采用子樹中最主要的分類;2)將一個字數(shù)完全替代另外一顆子樹。后置裁剪有個問題就是計算效率,有些節(jié)點計算后就被裁剪了,導致有點浪費。
2:K-Fold Cross Validation
首先計算出整體的決策樹T,葉節(jié)點個數(shù)記作N,設i屬于[1,N]。對每個i,使用K-Fold Validataion方法計算決策樹,并裁剪到i個節(jié)點,計算錯誤率,最后求出平均錯誤率。這樣可以用具有最小錯誤率對應的i作為最終決策樹的大小,對原始決策樹進行裁剪,得到最優(yōu)決策樹。
3:Random Forest
Random Forest是用訓練數(shù)據(jù)隨機的計算出許多決策樹,形成了一個森林。然后用這個森林對未知數(shù)據(jù)進行預測,選取投票最多的分類。實踐證明,此算法的錯誤率得到了經(jīng)一步的降低。這種方法背后的原理可以用“三個臭皮匠定一個諸葛亮”這句諺語來概括。一顆樹預測正確的概率可能不高,但是集體預測正確的概率卻很高。
決策樹T構建好后,需要估計預測準確率。直觀說明,比如N條測試數(shù)據(jù),X預測正確的記錄數(shù),那么可以估計acc = X/N為T的準確率。但是,這樣不是很科學。因為我們是通過樣本估計的準確率,很有可能存在偏差。所以,比較科學的方法是估計一個準確率的區(qū)間,這里就要用到統(tǒng)計學中的置信區(qū)間。
設T的準確率p是一個客觀存在的值,X的概率分布為X ~ B(N,p),即X遵循概率為p,次數(shù)為N的二項分布(Binomial Distribution),期望E(X) = N*p,方差Var(X) = N*p*(1-p)。由于當N很大時,二項分布可以近似有正太分布(Normal Distribution)計算,一般N會很大,所以X ~ N(np,n*p*(1-p))??梢运愠觯琣cc = X/N的期望E(acc) = E(X/N) = E(X)/N = p,方差Var(acc) =Var(X/N) = Var(X) / N2= p*(1-p) / N,所以acc ~ N(p,p*(1-p)/N)。這樣,就可以通過正太分布的置信區(qū)間的計算方式計算執(zhí)行區(qū)間了。
正太分布的置信區(qū)間求解如下:
1)將acc標準化,即

2)選擇置信水平α= 95%,或其他值,這取決于你需要對這個區(qū)間有多自信。一般來說,α越大,區(qū)間越大。
3)求出α/2和1-α/2對應的標準正太分布的統(tǒng)計量

和

(均為常量)。然后解下面關于p的不等式。acc可以有樣本估計得出。即可以得到關于p的執(zhí)行區(qū)間

部分資料參考自網(wǎng)絡,感謝廣大的互聯(lián)網(wǎng)!
雷鋒網(wǎng)相關閱讀:
雷峰網(wǎng)版權文章,未經(jīng)授權禁止轉載。詳情見轉載須知。