1. 程式人生 > >[DataAnalysis]機器學習演算法——決策樹詳解(屬性劃分+剪枝+缺失值/連續值處理)

[DataAnalysis]機器學習演算法——決策樹詳解(屬性劃分+剪枝+缺失值/連續值處理)

決策樹簡述

決策樹是一種用於對例項進行分類的樹形結構。決策樹由節點(node)和有向邊(directed edge)組成。節點分成根節點、內節點(表示一個特徵或者屬性的測試條件)和葉子節點(表示一個分類)。

決策樹的生成是一個遞迴過程。在決策樹演算法中,有三種情形會導致遞迴返回。(1)當前結點包含的樣本全屬於同一類別,無需劃分;(2)當前屬性集為空,或是所有樣本在所有屬性上取值相同,無法劃分。(3)當前結點包含的樣本集合為空,無法劃分。

劃分選擇(如何選擇最優劃分屬性)

1、資訊熵

(1)資訊增益

假定當前樣本集合D中第k類樣本所佔的比例為p_k(k=1,2,3,4...|\gamma |),則D的資訊熵定義為

Ent(D)=-\sum_{k=1}^{|\gamma |}p_{k}log_{2}p_k,該值越小,則D的純度越高

資訊熵定義為:

Gain(D,a)=Ent(D)-\sum_{v=1}^{V}\frac{|D_v|}{D}Ent(D_v)

資訊增益越大,說明用屬性a來進行劃分所獲得的“純度提升”越大。選擇資訊增益最大的作為劃分屬性。

(2)增益率

由於資訊增益準則會偏好取值數目較多的屬性,因此我們引入“增益率”對取值數目較多的屬性增加懲罰。

增益率定義為:

Gain_ratio(D,a)=\frac{Gain(D,a)}{IV(a)}

其中,IV(a)=-\sum_{v=1}^{V}\frac{|D_v|}{|D|}log_2\frac{|D_v|}{|D|}a的屬性值越多,則IV(a)越大。

但是增益率對可取值數目較少的屬性有所偏好。

從而我們先從候選劃分屬性中找出資訊增益高於平均水平的屬性,再從中選取增益率最高的。

2、基尼係數

CART決策樹用“基尼係數”來選取劃分屬性。

Gini(D)=1-\sum_{k=1}^{|\gamma |}p_k^2

3、誤分類概率

剪枝處理puring

在決策樹學習中,為了儘可能正確分類訓練樣本,可能會導致決策樹分支過多,可能會出現過擬合的問題。剪枝就是決策樹學習演算法中應對“過擬合”的主要手段。

1、預剪枝

預剪枝要對劃分前後的泛化效能進行估計來決定是否要進行這個劃分。

2、後剪枝

(1)分析剪枝前後泛化能力(驗證集精度)

(2)奧卡姆剃刀原則:雖然剪枝後精度並未提升,但是模型簡化了也需要剪枝。

連續值處理

可以採用二分法對連續屬性進行處理(如C4.5決策樹演算法中採用的機制)

給定樣本集D和連續屬性a,假定aD上出現了n個不同的取值,將這些取值從大到小進行排序,記為\{a^1,a^2,a^3...a^n\}。我們考慮包含n-1個元素的候選劃分點集合

T_a=\{\frac{a^i+a^{i+1}}{2}|1\leq i\leq n-1\}

即把區間[a^i,a^{i+1})的中位數作為候選劃分點,選取最優的劃分點作為樣本集合的劃分。

缺失值處理

在屬性數目較多的情況下,往往會有大量樣本出現缺失值。如果簡單地放棄不完整樣本,僅使用無缺失值的樣本進行學習,顯然是對樣本資訊的極大浪費。

給定訓練集D和有缺失值的屬性a,令\tilde{D}表示D中在屬性a上沒有缺失值的樣本子集,假定屬性aV個可取值\{a^1,a^2,...a^V\}

\tilde{D}^v表示\tilde{D}中在屬性a上取值為a^v的樣本子集,\tilde{D}_k表示\tilde{D}中屬於第k類的樣本子集。假定我們為每一個樣本賦予一個權重w_x。定義:

\rho =\frac{\sum_{x\in \tilde{D}}w_x}{\sum_{x\in D}w_x}

\tilde{\rho}_k =\frac{\sum_{x\in \tilde{D}_k}w_x}{\sum_{x\in \tilde{D}}w_x}

\tilde{r}_v =\frac{\sum_{x\in \tilde{D}^v}w_x}{\sum_{x\in \tilde{D}}w_x}

直觀來看,對屬性ap表示無缺失值樣本所佔的比例,\tilde{\rho}_k表示無缺失值樣本中第k類所佔的比例,\tilde{r}_v則表示無缺失值樣本中在屬性a上取值a^v的樣本所佔的比例。

資訊增益的計算式推廣為

Gain(D,a)=\rho *Gain(\tilde{D},a)=\rho*(Ent(\tilde{D})-\sum_{v=1}^{V}\tilde{r}_vEnt(\tilde{D}^v))

Ent(\tilde{D})=-\sum_{k=1}^{|\gamma |}\tilde{p}_klog_2\tilde{p}_k

多變數決策樹

用於處理真實邊界比較複雜的情形,我理解這種情形下已經不是傳統的決策樹,解釋性較差。可以考慮用SVM或者其他的分類方法。