决策树算法介绍及应用
機器學(xué)習(xí)概念
機器學(xué)習(xí) (Machine Learning) 是近 20 多年興起的一門多領(lǐng)域交叉學(xué)科,涉及概率論、統(tǒng)計學(xué)、逼近論、凸分析、算法復(fù)雜度理論等多門學(xué)科。
機器學(xué)習(xí)理論主要是設(shè)計和分析一些讓計算機可以自動學(xué)習(xí)的算法。機器學(xué)習(xí)算法是一類從數(shù)據(jù)中自動分析獲得規(guī)律,并利用規(guī)律對未知數(shù)據(jù)進(jìn)行預(yù)測的算法。因為學(xué)習(xí)算法中涉及了大量的統(tǒng)計學(xué)理論,機器學(xué)習(xí)與統(tǒng)計推斷學(xué)聯(lián)系尤為密切,也被稱為統(tǒng)計學(xué)習(xí)理論。在算法設(shè)計方面,機器學(xué)習(xí)理論關(guān)注可以實現(xiàn)的、行之有效的學(xué)習(xí)算法。很多相關(guān)問題的算法復(fù)雜度較高,而且很難找到固有的規(guī)律,所以部分的機器學(xué)習(xí)研究是開發(fā)容易處理的近似算法。
機器學(xué)習(xí)在數(shù)據(jù)挖掘、計算機視覺、自然語言處理、生物特征識別、搜索引擎、醫(yī)學(xué)診斷、檢測信用卡欺詐、證券市場分析、DNA 序列測序、語言與手寫識別、戰(zhàn)略游戲與機器人運用等領(lǐng)域有著十分廣泛的應(yīng)用。它無疑是當(dāng)前數(shù)據(jù)分析領(lǐng)域的一個熱點內(nèi)容。
回頁首
算法分類
機器學(xué)習(xí)的算法繁多,其中很多算法是一類算法,而有些算法又是從其他算法中衍生出來的,因此我們可以按照不同的角度將其分類。本文主要通過學(xué)習(xí)方式和算法類似性這兩個角度將機器學(xué)習(xí)算法進(jìn)行分類。
學(xué)習(xí)方式
算法類似性
回頁首
決策樹
決策樹是附加概率結(jié)果的一個樹狀的決策圖,是直觀的運用統(tǒng)計概率分析的圖法。機器學(xué)習(xí)中決策樹是一個預(yù)測模型,它表示對象屬性和對象值之間的一種映射,樹中的每一個節(jié)點表示對象屬性的判斷條件,其分支表示符合節(jié)點條件的對象。樹的葉子節(jié)點表示對象所屬的預(yù)測結(jié)果。
決策樹案例
圖 1. 決策樹案例圖
圖 1 是一棵結(jié)構(gòu)簡單的決策樹,用于預(yù)測貸款用戶是否具有償還貸款的能力。貸款用戶主要具備三個屬性:是否擁有房產(chǎn),是否結(jié)婚,平均月收入。每一個內(nèi)部節(jié)點都表示一個屬性條件判斷,葉子節(jié)點表示貸款用戶是否具有償還能力。例如:用戶甲沒有房產(chǎn),沒有結(jié)婚,月收入 5K。通過決策樹的根節(jié)點判斷,用戶甲符合右邊分支 (擁有房產(chǎn)為“否”);再判斷是否結(jié)婚,用戶甲符合左邊分支 (是否結(jié)婚為否);然后判斷月收入是否大于 4k,用戶甲符合左邊分支 (月收入大于 4K),該用戶落在“可以償還”的葉子節(jié)點上。所以預(yù)測用戶甲具備償還貸款能力。
決策樹建立
本文上一節(jié)已經(jīng)討論如何用一棵決策樹進(jìn)行分類。本節(jié)將通過特征選擇、剪枝,介紹如何根據(jù)已有的樣本數(shù)據(jù)建立一棵決策樹。
首先介紹下特征選擇。選擇一個合適的特征作為判斷節(jié)點,可以快速的分類,減少決策樹的深度。決策樹的目標(biāo)就是把數(shù)據(jù)集按對應(yīng)的類標(biāo)簽進(jìn)行分類。最理想的情況是,通過特征的選擇能把不同類別的數(shù)據(jù)集貼上對應(yīng)類標(biāo)簽。特征選擇的目標(biāo)使得分類后的數(shù)據(jù)集比較純。如何衡量一個數(shù)據(jù)集純度,這里就需要引入數(shù)據(jù)純度函數(shù)。下面將介紹兩種表示數(shù)據(jù)純度的函數(shù)。
- 信息增益
信息熵表示的是不確定度。均勻分布時,不確定度最大,此時熵就最大。當(dāng)選擇某個特征對數(shù)據(jù)集進(jìn)行分類時,分類后的數(shù)據(jù)集信息熵會比分類前的小,其差值表示為信息增益。信息增益可以衡量某個特征對分類結(jié)果的影響大小。
假設(shè)在樣本數(shù)據(jù)集 D 中,混有 c 種類別的數(shù)據(jù)。構(gòu)建決策樹時,根據(jù)給定的樣本數(shù)據(jù)集選擇某個特征值作為樹的節(jié)點。在數(shù)據(jù)集中,可以計算出該數(shù)據(jù)中的信息熵:
圖 2. 作用前的信息熵計算公式
其中 D 表示訓(xùn)練數(shù)據(jù)集,c 表示數(shù)據(jù)類別數(shù),Pi 表示類別 i 樣本數(shù)量占所有樣本的比例。
對應(yīng)數(shù)據(jù)集 D,選擇特征 A 作為決策樹判斷節(jié)點時,在特征 A 作用后的信息熵的為 Info(D),計算如下:
圖 3. 作用后的信息熵計算公式
其中 k 表示樣本 D 被分為 k 個部分。
信息增益表示數(shù)據(jù)集 D 在特征 A 的作用后,其信息熵減少的值。公式如下:
圖 4. 信息熵差值計算公式
對于決策樹節(jié)點最合適的特征選擇,就是 Gain(A) 值最大的特征。
- 基尼指數(shù)
基尼指數(shù)是另一種數(shù)據(jù)的不純度的度量方法,其公式為:
圖 5. 基尼指數(shù)計算公式
其中 c 表示數(shù)據(jù)集中類別的數(shù)量,Pi 表示類別 i 樣本數(shù)量占所有樣本的比例。
從該公式可以看出,當(dāng)數(shù)據(jù)集中數(shù)據(jù)混合的程度越高,基尼指數(shù)也就越高。當(dāng)數(shù)據(jù)集 D 只有一種數(shù)據(jù)類型,那么基尼指數(shù)的值為最低 0。
如果選取的屬性為 A,那么分裂后的數(shù)據(jù)集 D 的基尼指數(shù)的計算公式為:
圖 6. 分裂后的基尼指數(shù)計算公式
其中 k 表示樣本 D 被分為 k 個部分,數(shù)據(jù)集 D 分裂成為 k 個 Dj 數(shù)據(jù)集。
對于特征選取,需要選擇最小的分裂后的基尼指數(shù)。也可以用基尼指數(shù)增益值作為決策樹選擇特征的依據(jù)。公式如下:
圖 7. 基尼指數(shù)差值計算公式
在決策樹選擇特征時,應(yīng)選擇基尼指數(shù)增益值最大的特征,作為該節(jié)點分裂條件。
接下來介紹剪枝。在分類模型建立的過程中,很容易出現(xiàn)過擬合的現(xiàn)象。過擬合是指在模型學(xué)習(xí)訓(xùn)練中,訓(xùn)練樣本達(dá)到非常高的逼近精度,但對檢驗樣本的逼近誤差隨著訓(xùn)練次數(shù)而呈現(xiàn)出先下降后上升的現(xiàn)象。過擬合時訓(xùn)練誤差很小,但是檢驗誤差很大,不利于實際應(yīng)用。
決策樹的過擬合現(xiàn)象可以通過剪枝進(jìn)行一定的修復(fù)。剪枝分為預(yù)先剪枝和后剪枝兩種。
預(yù)先剪枝指在決策樹生長過程中,使用一定條件加以限制,使得產(chǎn)生完全擬合的決策樹之前就停止生長。預(yù)先剪枝的判斷方法也有很多,比如信息增益小于一定閥值的時候通過剪枝使決策樹停止生長。但如何確定一個合適的閥值也需要一定的依據(jù),閥值太高導(dǎo)致模型擬合不足,閥值太低又導(dǎo)致模型過擬合。
后剪枝是在決策樹生長完成之后,按照自底向上的方式修剪決策樹。后剪枝有兩種方式,一種用新的葉子節(jié)點替換子樹,該節(jié)點的預(yù)測類由子樹數(shù)據(jù)集中的多數(shù)類決定。另一種用子樹中最常使用的分支代替子樹。
預(yù)先剪枝可能過早的終止決策樹的生長,后剪枝一般能夠產(chǎn)生更好的效果。但后剪枝在子樹被剪掉后,決策樹生長的一部分計算就被浪費了。
決策樹模型評估
建立了決策樹模型后需要給出該模型的評估值,這樣才可以來判斷模型的優(yōu)劣。學(xué)習(xí)算法模型使用訓(xùn)練集 (training set) 建立模型,使用校驗集 (test set) 來評估模型。本文通過評估指標(biāo)和評估方法來評估決策樹模型。
評估指標(biāo)有分類準(zhǔn)確度、召回率、虛警率和精確度等。而這些指標(biāo)都是基于混淆矩陣 (confusion matrix) 進(jìn)行計算的。
混淆矩陣是用來評價監(jiān)督式學(xué)習(xí)模型的精確性,矩陣的每一列代表一個類的實例預(yù)測,而每一行表示一個實際的類的實例。以二類分類問題為例,如下表所示:
表 1. 混淆矩陣
| 實際的類 | ? | 類 = 1 | 類 = 0 | ? |
| 類 = 1 | TP | FN | P | |
| 類 = 0 | FP | TN | N |
其中
P (Positive Sample):正例的樣本數(shù)量。
N(Negative Sample):負(fù)例的樣本數(shù)量。
TP(True Positive):正確預(yù)測到的正例的數(shù)量。
FP(False Positive):把負(fù)例預(yù)測成正例的數(shù)量。
FN(False Negative):把正例預(yù)測成負(fù)例的數(shù)量。
TN(True Negative):正確預(yù)測到的負(fù)例的數(shù)量。
根據(jù)混淆矩陣可以得到評價分類模型的指標(biāo)有以下幾種。
分類準(zhǔn)確度,就是正負(fù)樣本分別被正確分類的概率,計算公式為:
圖 8. 分類準(zhǔn)確度計算公式
召回率,就是正樣本被識別出的概率,計算公式為:
圖 9. 召回率計算公式
虛警率,就是負(fù)樣本被錯誤分為正樣本的概率,計算公式為:
圖 10. 虛警率計算公式
精確度,就是分類結(jié)果為正樣本的情況真實性程度,計算公式為:
圖 11. 精確度計算公式
評估方法有保留法、隨機二次抽樣、交叉驗證和自助法等。
保留法 (holdout) 是評估分類模型性能的最基本的一種方法。將被標(biāo)記的原始數(shù)據(jù)集分成訓(xùn)練集和檢驗集兩份,訓(xùn)練集用于訓(xùn)練分類模型,檢驗集用于評估分類模型性能。但此方法不適用樣本較小的情況,模型可能高度依賴訓(xùn)練集和檢驗集的構(gòu)成。
隨機二次抽樣 (random subsampling) 是指多次重復(fù)使用保留方法來改進(jìn)分類器評估方法。同樣此方法也不適用訓(xùn)練集數(shù)量不足的情況,而且也可能造成有些數(shù)據(jù)未被用于訓(xùn)練集。
交叉驗證 (cross-validation) 是指把數(shù)據(jù)分成數(shù)量相同的 k 份,每次使用數(shù)據(jù)進(jìn)行分類時,選擇其中一份作為檢驗集,剩下的 k-1 份為訓(xùn)練集,重復(fù) k 次,正好使得每一份數(shù)據(jù)都被用于一次檢驗集 k-1 次訓(xùn)練集。該方法的優(yōu)點是盡可能多的數(shù)據(jù)作為訓(xùn)練集數(shù)據(jù),每一次訓(xùn)練集數(shù)據(jù)和檢驗集數(shù)據(jù)都是相互獨立的,并且完全覆蓋了整個數(shù)據(jù)集。也存在一個缺點,就是分類模型運行了 K 次,計算開銷較大。
自助法 (bootstrap) 是指在其方法中,訓(xùn)練集數(shù)據(jù)采用的是有放回的抽樣,即已經(jīng)選取為訓(xùn)練集的數(shù)據(jù)又被放回原來的數(shù)據(jù)集中,使得該數(shù)據(jù)有機會能被再一次抽取。用于樣本數(shù)不多的情況下,效果很好。
回頁首
決策樹建模
在本節(jié)中,將通過 R 和 IBM SPSS 兩種建模工具分別對其實際案例進(jìn)行決策樹建模。
R
R 是一個用于統(tǒng)計計算及統(tǒng)計制圖的優(yōu)秀的開源軟件,也是一個可以從大數(shù)據(jù)中獲取有用信息的絕佳工具。它能在目前各種主流操作系統(tǒng)上安裝使用,并且提供了很多數(shù)據(jù)管理、統(tǒng)計和繪圖函數(shù)。
下面本節(jié)就將使用 R 所提供的強大的函數(shù)庫來構(gòu)建一棵決策樹并加以剪枝。
清單 1. 構(gòu)建決策樹及其剪枝的 R 代碼
# 導(dǎo)入構(gòu)建決策樹所需要的庫 library("rpart") library("rpart.plot") library("survival") # 查看本次構(gòu)建決策樹所用的數(shù)據(jù)源 stagec # 通過 rpart 函數(shù)構(gòu)建決策樹 fit <- rpart(Surv(pgtime,pgstat)~age+eet+g2+grade+gleason+ploidy,stagec,method="exp") # 查看決策樹的具體信息 print(fit) printcp(fit) # 繪制構(gòu)建完的決策樹圖 plot(fit, uniform=T, branch=0.6, compress=T) text(fit, use.n=T) # 通過 prune 函數(shù)剪枝 fit2 <- prune(fit, cp=0.016) # 繪制剪枝完后的決策樹圖 plot(fit2, uniform=T, branch=0.6, compress=T) text(fit2, use.n=T)根據(jù)代碼,運行步驟如下:
該案例決策樹的擬合結(jié)果與剪枝前后的樹如下圖所示:
圖 12. 決策樹案例擬合圖
圖 13. 未剪枝的決策樹圖
圖 14. 剪枝后的決策樹圖
SPSS
IBM SPSS Modeler 是一個預(yù)測分析平臺,能夠為個人、團隊、系統(tǒng)和企業(yè)做決策提供預(yù)測性信息。它可提供各種高級算法和技術(shù) (包括文本分析、實體分析、決策管理與優(yōu)化),幫助您選擇可實現(xiàn)更佳成果的操作。
在 SPSS Modeler 中有很多應(yīng)用實例,其中就包括一個決策樹算法模型的案例。此示例使用名為 druglearn.str 的流,此流引用名為 DRUG1n 的數(shù)據(jù)文件。這些文件可在任何 IBM SPSS Modeler 安裝程序的 Demos 目錄中找到。操作步驟如下:
圖 15. 模型流圖
在生成模型 Drug 以后,我們可以在模型頁面中瀏覽 Drug 模型。打開 Drug 模型以后,可在規(guī)則瀏覽框中以決策樹形式顯示 C5.0 節(jié)點所生成的規(guī)則集。還可以通過更復(fù)雜的圖表形式查看同一決策樹。如下圖所示:
圖 16. 生成模型的決策樹圖
回頁首
結(jié)束語
本文主要通過一個決策樹的典型案例,著重從特征選擇、剪枝等方面描述決策樹的構(gòu)建,討論并研究決策樹模型評估準(zhǔn)則,最后基于 R 語言和 SPSS 這兩個工具,分別設(shè)計與實現(xiàn)了決策樹模型的應(yīng)用實例。通過較多的統(tǒng)計學(xué)公式和案例圖表,生動地展示了一棵決策樹是如何構(gòu)建并將其應(yīng)用到實際場景中去的。
本文也展開討論了分類算法之間的相互比較和優(yōu)缺點,特征選擇與剪枝各種方法之間的相互比較,各個評估方法的優(yōu)缺點等。通過這些討論與分析,能夠以更好的方法論來解決實際生產(chǎn)環(huán)境下的問題。
同時,決策樹只是整個機器學(xué)習(xí)領(lǐng)域的冰山一角,而機器學(xué)習(xí)領(lǐng)域又是當(dāng)前大數(shù)據(jù)分析領(lǐng)域的熱點,因此還有很多很多值得我們?nèi)W(xué)習(xí)、去研究的地方。
回頁首
參考資源 (resources)
參考資料
學(xué)習(xí)
- 參考機器學(xué)習(xí)維基百科,了解更多機器學(xué)習(xí)的概念知識。
- 查看文章“機器學(xué)習(xí)常見算法分類匯總”,了解更多機器學(xué)習(xí)中的算法分類。
- 查看文章“基于 R 軟件 rpart 包的分類與回歸樹應(yīng)用”,了解更多基于 R 對實際案例的應(yīng)用。
總結(jié)
以上是生活随笔為你收集整理的决策树算法介绍及应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用 Hadoop 进行分布式并行编程,
- 下一篇: Apache Mahout 简介 通过可