机器学习算法总结--决策树
簡(jiǎn)介
定義:分類決策樹(shù)模型是一種描述對(duì)實(shí)例進(jìn)行分類的樹(shù)形結(jié)構(gòu)。決策樹(shù)由結(jié)點(diǎn)和有向邊組成。結(jié)點(diǎn)有兩種類型:內(nèi)部結(jié)點(diǎn)和葉結(jié)點(diǎn)。內(nèi)部結(jié)點(diǎn)表示一個(gè)特征或?qū)傩?#xff0c;葉結(jié)點(diǎn)表示一個(gè)類。
決策樹(shù)學(xué)習(xí)通常包括3個(gè)步驟:特征選擇、決策樹(shù)的生成和決策樹(shù)的修剪。
決策樹(shù)學(xué)習(xí)本質(zhì)上是從訓(xùn)練數(shù)據(jù)集中歸納出一組分類規(guī)則,也可以說(shuō)是由訓(xùn)練數(shù)據(jù)集估計(jì)條件概率模型。它使用的損失函數(shù)通常是正則化的極大似然函數(shù),其策略是以損失函數(shù)為目標(biāo)函數(shù)的最小化。
決策樹(shù)學(xué)習(xí)的算法通常是一個(gè)遞歸地選擇最優(yōu)特征,并根據(jù)該特征對(duì)訓(xùn)練數(shù)據(jù)進(jìn)行分割,使得對(duì)各個(gè)子數(shù)據(jù)集有一個(gè)最好的分類的過(guò)程。
決策樹(shù)的生成對(duì)應(yīng)于模型的局部選擇,決策樹(shù)的剪枝對(duì)應(yīng)于模型的全局選擇。決策樹(shù)的生成只考慮局部最優(yōu),相對(duì)地,決策樹(shù)的剪枝則考慮全局最優(yōu)。
特征選擇
特征選擇的準(zhǔn)則通常是信息增益或者信息增益比。
首先是給出信息熵的計(jì)算公式H(p)=?∑ni=1pilogpi,熵越大,隨機(jī)變量的不確定性就越大。公式中pi表示隨機(jī)變量X屬于類別i的概率,因此n表示類別的總數(shù)。
條件熵的定義為:H(Y|X)=∑ni=1piH(Y|X=xi)
已經(jīng)有了熵作為衡量訓(xùn)練樣例集合純度的標(biāo)準(zhǔn),現(xiàn)在可以定義屬性分類訓(xùn)練數(shù)據(jù)的效力的度量標(biāo)準(zhǔn)。這個(gè)標(biāo)準(zhǔn)被稱為“信息增益(information gain)”。簡(jiǎn)單的說(shuō),一個(gè)屬性的信息增益就是由于使用這個(gè)屬性分割樣例而導(dǎo)致的期望熵降低(或者說(shuō),樣本按照某屬性劃分時(shí)造成熵減少的期望,個(gè)人結(jié)合前面理解,總結(jié)為用來(lái)衡量給定的屬性區(qū)分訓(xùn)練樣例的能力)。更精確地講,一個(gè)屬性A相對(duì)樣例集合S的信息增益Gain(S,A)被定義為:
其中 Values(A)是屬性A所有可能值的集合,Sv是S中屬性A的值為v的子集,注意上式第一項(xiàng)就是原集合S的熵,第二項(xiàng)是用A分類S后的熵的期望值,第二項(xiàng)描述的期望熵就是每個(gè)子集的熵的加權(quán)和,權(quán)值為屬性Sv的樣例占原始樣例S的比例|Sv|/|S|,所以Gain(S,A)是由于知道屬性A的值而導(dǎo)致的期望熵減少,換句話來(lái)講,Gain(S,A)是由于給定屬性A的值而得到的關(guān)于目標(biāo)函數(shù)值的信息。
信息增益的缺點(diǎn)是存在偏向于選擇取值較多的特征的問(wèn)題。為了解決這個(gè)問(wèn)題,可以使用信息增益比。
因此,特征A對(duì)訓(xùn)練數(shù)據(jù)集D的信息增益比gR(D,A)的定義如下:
其中 g(D,A)是信息增益,而 HA(D)=?∑ni=1|Di||D|log2|Di||D|,其中 n是特征A取值的個(gè)數(shù)。
不過(guò)對(duì)于信息增益比,其也存在對(duì)可取值數(shù)目較少的屬性有所偏好的問(wèn)題。
決策樹(shù)的生成
接下來(lái)會(huì)介紹決策樹(shù)生成的算法,包括ID3, C4.5算法。
ID3算法
ID3算法的核心是在決策樹(shù)各個(gè)結(jié)點(diǎn)上應(yīng)用信息增益準(zhǔn)則選擇特征,遞歸地構(gòu)建決策樹(shù)。具體步驟如下所示:
ID3的算法思路總結(jié)如下:
1. 首先是針對(duì)當(dāng)前的集合,計(jì)算每個(gè)特征的信息增益
2. 然后選擇信息增益最大的特征作為當(dāng)前節(jié)點(diǎn)的決策決策特征
3. 根據(jù)特征不同的類別劃分到不同的子節(jié)點(diǎn)(比如年齡特征有青年,中年,老年,則劃分到3顆子樹(shù))
4. 然后繼續(xù)對(duì)子節(jié)點(diǎn)進(jìn)行遞歸,直到所有特征都被劃分
C4.5算法
C4.5算法繼承了ID3算法的優(yōu)點(diǎn),并在以下幾方面對(duì)ID3算法進(jìn)行了改進(jìn):
- 用信息增益率來(lái)選擇屬性,克服了用信息增益選擇屬性時(shí)偏向選擇取值多的屬性的不足;
- 在樹(shù)構(gòu)造過(guò)程中進(jìn)行剪枝;
- 能夠完成對(duì)連續(xù)屬性的離散化處理;
- 能夠?qū)Σ煌暾麛?shù)據(jù)進(jìn)行處理。
C4.5算法有如下優(yōu)點(diǎn):產(chǎn)生的分類規(guī)則易于理解,準(zhǔn)確率較高。
其缺點(diǎn)是:在構(gòu)造樹(shù)的過(guò)程中,需要對(duì)數(shù)據(jù)集進(jìn)行多次的順序掃描和排序,因而導(dǎo)致算法的低效。此外,C4.5只適合于能夠駐留于內(nèi)存的數(shù)據(jù)集,當(dāng)訓(xùn)練集大得無(wú)法在內(nèi)存容納時(shí)程序無(wú)法運(yùn)行。
算法的實(shí)現(xiàn)過(guò)程如下:
實(shí)際上由于信息增益比的缺點(diǎn),C4.5算法并沒(méi)有直接選擇信息增益比最大的候選劃分屬性,而是先從候選劃分屬性中找出信息增益高于平均水平的屬性,再?gòu)闹羞x擇信息增益比最高的。
剪枝
在生成樹(shù)的過(guò)程中,如果沒(méi)有剪枝的操作的話,就會(huì)長(zhǎng)成每一個(gè)葉都是單獨(dú)的一類的樣子。這樣對(duì)我們的訓(xùn)練集是完全擬合的,但是對(duì)測(cè)試集則是非常不友好的,泛化能力不行。因此,我們要減掉一些枝葉,使得模型泛化能力更強(qiáng)。
根據(jù)剪枝所出現(xiàn)的時(shí)間點(diǎn)不同,分為預(yù)剪枝和后剪枝。預(yù)剪枝是在決策樹(shù)的生成過(guò)程中進(jìn)行的;后剪枝是在決策樹(shù)生成之后進(jìn)行的。
決策樹(shù)的剪枝往往是通過(guò)極小化決策樹(shù)整體的損失函數(shù)或代價(jià)函數(shù)來(lái)實(shí)現(xiàn)的。簡(jiǎn)單來(lái)說(shuō),就是對(duì)比剪枝前后整體樹(shù)的損失函數(shù)或者是準(zhǔn)確率大小來(lái)判斷是否需要進(jìn)行剪枝。
決策樹(shù)剪枝算法有多種,具體參考決策樹(shù)剪枝算法這篇文章。
CART
分類回歸樹(shù)(Classification And Regression Tree)是一個(gè)決策二叉樹(shù),在通過(guò)遞歸的方式建立,每個(gè)節(jié)點(diǎn)在分裂的時(shí)候都是希望通過(guò)最好的方式將剩余的樣本劃分成兩類,這里的分類指標(biāo):
分類樹(shù)的生成步驟如下所示:
簡(jiǎn)單總結(jié)如下:
基尼指數(shù)的計(jì)算公式為Gini(p)=1?∑Kk=1p2k。K是類別的數(shù)目, pk表示樣本屬于第k類的概率值。它可以用來(lái)度量分布不均勻性(或者說(shuō)不純),總體的類別越雜亂,GINI指數(shù)就越大(跟熵的概念很相似)。
給定一個(gè)數(shù)據(jù)集D,在特征A的條件下,其基尼指數(shù)定義為Gini(D,A)=∑ni=1|Di||D|Gini(Di)。
回歸樹(shù):
回歸樹(shù)是以平方誤差最小化的準(zhǔn)則劃分為兩塊區(qū)域
遍歷特征計(jì)算最優(yōu)的劃分點(diǎn)s,
使其最小化的平方誤差是:min{min(∑R1i((yi?c1)2))+min(∑R2i((yi?c2)2))}
計(jì)算根據(jù)s劃分到左側(cè)和右側(cè)子樹(shù)的目標(biāo)值與預(yù)測(cè)值之差的平方和最小,這里的預(yù)測(cè)值是兩個(gè)子樹(shù)上輸入xi樣本對(duì)應(yīng)yi的均值
找到最小的劃分特征j以及其最優(yōu)的劃分點(diǎn)s,根據(jù)特征j以及劃分點(diǎn)s將現(xiàn)有的樣本劃分為兩個(gè)區(qū)域,一個(gè)是在特征j上小于等于s,另一個(gè)在在特征j上大于s
進(jìn)入兩個(gè)子區(qū)域按上述方法繼續(xù)劃分,直到到達(dá)停止條件
關(guān)于CART剪枝的方法可以參考決策樹(shù)系列(五)——CART。
停止條件
關(guān)于特征與目標(biāo)值
決策樹(shù)的分類與回歸
- 分類樹(shù)
輸出葉子節(jié)點(diǎn)中所屬類別最多的那一類 - 回歸樹(shù)
輸出葉子節(jié)點(diǎn)中各個(gè)樣本值的平均值
理想的決策樹(shù)
解決決策樹(shù)的過(guò)擬合
優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
缺點(diǎn):
代碼實(shí)現(xiàn)
使用sklearn中決策樹(shù)函數(shù)的簡(jiǎn)單代碼例子如下所示:
#Import Library #Import other necessary libraries like pandas, numpy...from sklearn import tree #Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset# Create tree object model = tree.DecisionTreeClassifier(criterion='gini') # for classification, here you can change the algorithm as gini or entropy (information gain) by default it is gini # model = tree.DecisionTreeRegressor() for regression# Train the model using the training sets and check score model.fit(X, y) model.score(X, y)#Predict Output predicted= model.predict(x_test)決策樹(shù)的代碼在開(kāi)源庫(kù)OpenCV中有實(shí)現(xiàn),具體的源碼分析可以參考Opencv2.4.9源碼分析——Decision Trees,這篇文章也比較詳細(xì)總結(jié)了決策樹(shù)的知識(shí)點(diǎn)以及對(duì)OpenCV中決策樹(shù)部分的源碼進(jìn)行了分析。
總結(jié)
以上是生活随笔為你收集整理的机器学习算法总结--决策树的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 程序员获取编程灵感的10 种方式
- 下一篇: 借助ZFBrowser插件实现Unity