決策樹演算法

2021-09-26 03:42:59 字數 3512 閱讀 8936

id3演算法是由quinlan首先提出的,該演算法是以資訊理論為基礎,以資訊熵和資訊增益為衡量標準,從而實現對資料的歸納分類。id3演算法是基於奧卡姆剃刀原理的,即用盡量用較少的東西做更多的事。

首先,id3演算法需要解決的問題是如何選擇特徵作為劃分資料集的標準。在id3演算法中,選擇資訊增益最大的屬性作為當前的特徵對資料集分類。資訊增益的概念將在下面介紹,通過不斷的選擇特徵對資料集不斷劃分;其次,id3演算法需要解決的問題是如何判斷劃分的結束;第二種為已經沒有屬性可供再分了,此時就結束了。通過迭代的方式,我們就可以得到這樣的決策樹模型。

缺點:(1)id3演算法會偏向於選擇類別較多的屬性(形成分支較多會導致資訊增益大

(2)id3演算法沒有考慮連續值,對與連續值的特徵無法進行劃分

(3) id3演算法對於缺失值的情況沒有做考慮。

(4)id3演算法只有樹的生成,容易產生過擬合。

(5)id3演算法採用貪心演算法,每次劃分都是考慮區域性最優化,而區域性最優化並不是全域性最優化,通常需對其進行剪枝,而決策樹剪枝是對模型進行整體優化。

改進:(1)連續續的資料也能處理

(2)可以在決策樹構造過程中進行剪枝,因為某些具有很少元素的結點可能會使構造的決策樹過擬合(overfitting),如果不考慮這些結點可能會更好

(3)能夠對不完整資料(預設資料)進行處理。

(4)用資訊增益率

來進行屬性選擇的度量。資訊增益作為標準容易偏向於取值較多的特徵的問題。引入資訊增益比,特徵數越多的屬性對應的熵越大,它作為分母,可以校正資訊增益容易偏向於取值較多的特徵的問題。

輸入:訓練資料集d,停止計算的條件:

輸出:cart決策樹。

根據訓練資料集,從根結點開始,遞迴地對每個結點進行以下操作,構建二叉決策樹:

設結點的訓練資料集為d,計算現有特徵對該資料集的gini係數。此時,對每乙個特徵a,對其可能取的每個值a,根據樣本點對a=a的測試為「是」或 「否」將d分割成d1和d2兩部分,計算a=a時的gini係數。

在所有可能的特徵a以及它們所有可能的切分點a中,選擇gini係數最小的特徵及其對應的切分點作為最優特徵與最優切分點。依最優特徵與最優切分點,從現結點生成兩個子結點,將訓練資料集依特徵分配到兩個子結點中去。

對兩個子結點遞迴地呼叫步驟l~2,直至滿足停止條件。

生成cart決策樹。

演算法停止計算的條件是結點中的樣本個數小於預定閾值,或樣本集的gini係數小於預定閾值(樣本基本屬於同一類),或者沒有更多特徵。

其實gini指數最早應用在經濟學中,主要用來衡量收入分配公平度的指標。在決策樹算cart演算法中用gini指數來衡量資料的不純度或者不確定性,同時用gini指數來決定類別變數的最優二分值得切分問題。

在分類問題中,假設有k個類,樣本點屬於第k類的概率為pk,則概率分布的gini指數的定義為:

如果樣本集合d根據某個特徵a被分割為d1,d2兩個部分,那麼在特徵a的條件下,集合d的gini指數的定義為:

gini指數gini(d,a)表示特徵a不同分組的資料集d的不確定性。gini指數值越大,樣本集合的不確定性也就越大,這一點與熵的概念比較類似。

所以在此,基於以上的理論,我們可以通過gini指數來確定某個特徵的最優切分點(也即只需要確保切分後某點的gini指數值最小),這就是決策樹cart演算法中類別變數切分的關鍵所在。

首先對資料集非類標號屬性分別計算它們的gini係數增益,取gini係數增益值最大的屬性作為決策樹的根節點屬性。根節點的gini係數

gini(是否拖欠貸款)=1−(3/10)^2−(7/10)^2=0.42

當根據是否有房來進行劃分時,gini係數增益計算過程為

gini(右子節點)=1−(3/7)^2−(4/7)^2=0.4898

δ=0.42−710×0.4898−310×0=0.077

若按婚姻狀況屬性來劃分,屬性婚姻狀況有三個可能的取值,分別計算劃分後的

的gini係數增益。

當分組為 | 時,sl表示婚姻狀況取值為married的分組,sr表示婚姻狀況取值為single或者divorced的分組

δ=0.42−4/10×0−6/10×[1−(3/6)^2−(3/6)^2]=0.12

當分組為 | 時,

δ=0.42−4/10×0.5−6/10×[1−(1/6^)2−(5/6)^2]=0.053

當分組為 | 時,

δ=0.42−2/10×0.5−8/10×[1−(2/8)^2−(6/8)^2]=0.02

對比計算結果,根據婚姻狀況屬性來劃分根節點時取gini係數增益最大的分組作為劃分結果,也就是 | 。

對於年收入屬性為數值型屬性,首先需要對資料按公升序排序,然後從小到大依次用相鄰值的中間值作為分隔將樣本劃分為兩組。例如當面對年收入為60和70這兩個值時,我們算得其中間值為65。倘若以中間值65作為分割點。sl作為年收入小於65的樣本,sr表示年收入大於等於65的樣本,於是則得gini係數增益為

δ(年收入)=0.42−1/10×0−9/10×[1−(6/9)^2−(3/9)^2]=0.02

其他值的計算同理可得,我們不再逐一給出計算過程,僅列出結果如下(最終我們取其中使得增益最大化的那個二分準則來作為構建二叉樹的準則):

注意,這與我們之前在《資料探勘十大演算法之決策樹詳解(1)》中得到的結果是一致的。最大化增益等價於最小化子女結點的不純性度量(gini係數)的加權平均值,之前的表裡我們列出的是gini係數的加權平均值,現在的表裡給出的是gini係數增益。現在我們希望最大化gini係數的增益。根據計算知道,三個屬性劃分根節點的增益最大的有兩個:年收入屬性和婚姻狀況,他們的增益都為0.12。此時,選取首先出現的屬性作為第一次劃分。

接下來,採用同樣的方法,分別計算剩下屬性,其中根節點的gini係數為(此時是否拖欠貸款的各有3個records)

gini(是否拖欠貸款)=1−(3/6)^2−(3/6)^2=0.5

與前面的計算過程類似,對於是否有房屬性,可得

δ=0.5−4/6×[1−(3/4)^2−(1/4)^2]−2/6×0=0.25

對於年收入屬性則有:

最後我們構建的cart如下圖所示:

最後我們總結一下,cart和c4.5的主要區別:

決策樹演算法

決策樹是一種樹型結構,其中每個內部結點表示在乙個屬性上的測試,每個分支代表乙個測試輸出,每個葉結點代表一種類別。決策樹學習是以例項為基礎的歸納學習,採用的是自頂向下的遞迴方法,其基本思想是以資訊熵為度量構造一棵熵值下降最快的樹,到葉子結點處的熵值為零,此時每個葉節點中的例項都屬於同一類。決策樹學習演...

決策樹演算法

本文主要介紹id3 c4.5和cart演算法 決策樹起源於概念學習系統 cls 概念學習模型 是乙個事先定義的範疇集合和一些有關例子是否落入給定範疇的判定 概念學習的主要任務 是判斷所給定事物的屬性或特性,並且正確地區分這些事物,將其劃分到某乙個範疇 對於如下決策樹模型 我們首先考慮他的屬性outl...

決策樹演算法

引 最近老師布置了課堂展示的作業,主題是決策樹,老師還舉了買西瓜的決策例子,感覺貼近生活也很有意思。在這之前沒有了解過這個概念,通過幾個禮拜的學習收穫不少。一 首先,什麼是決策樹?個人而言,決策樹就是將人在做決策時的思維脈絡以樹的形式展示出來的產物,即決策的過程模型。這是一棵去不去打高爾夫球的決策樹...