機器學習算法-決策樹理論

用較少的東西,同樣可以做好的事情。越是小的決策樹,越優於大的決策樹。

引文

數據分類是一個兩階段過程,包括學習階段(構建分類模型)和分類階段(使用模型預測給定數據的類標號)。決策樹分類算法是監督學習的一種,即Supervised learning。

  • 分類過程的第一階段也可以看做學習一個映射或函數y=f(x),它可以預測給定元組X的類標號y。
  • 在第二階段,使用模型進行分類。首先評估分類器的預測準確率。這個過程要儘量的減少過擬合。(爲什麼是儘量減少而不是避免呢,因爲過擬合一般是避免不了的,再好的模型也會有過擬合的情況)。

1 決策樹歸納

決策樹歸納是從有類標號的訓練元組中學習決策樹。常用的決策樹算法有ID3,C4.5和CART。它們都是採用貪心(即非回溯的)方法,其中決策樹自頂向下遞歸的分治方法構造。其中劃分屬性的方法各不相同,ID3使用的是信息增益,C4.5使用的是信息增益率,而CART使用的是Gini基尼指數。下面來簡單介紹下決策樹的理論知識。內容包含信息增益信息增益率以及Gini指數的計算公式。

2 基本原理

2.1 算法優點

決策樹算法的優點如下:
(1)分類精度高;
(2)成的模式簡單;
(3)對噪聲數據有很好的健壯性。
因而是目前應用最爲廣泛的歸納推理算法之一,在數據挖掘中受到研究者的廣泛關注。

2.2 算法一般流程

(1)收集數據:任意方法和途徑。
(2)準備數據:書構造算法只適用於標稱型數據,因此數據必須離散化。
(3)分析數據:構造樹完成後,檢查圖形是否符合預測。
(4)訓練算法:決策樹的數據構造。
(5)測試算法:一般將決策樹用於分類,可以用錯誤率衡量,而錯誤率使用經驗率計算。
(6)使用算法:決策樹可以用於任何監督學習算法。

2.3 實例

信息增益和熵(克勞德.香農提出)

1.使用信息增益進行決策樹歸納

信息增益度量屬性選擇

熵(Entropy)的計算公式

熵定義爲信息增益的期望值。熵越大,一個變量的不確定性就越大(也就是可取的值很多),把它分析清楚需要的信息量也就越大,熵是整個系統的平均信息量。對D 中的元組分類所需要的期望信息由下列公式給出:

Entropy=H(D)=E(I(D))=inpilog2(pi)piDCi

熵越大,說明系統越混亂,攜帶的信息就越少。熵越小,說明系統越有序,攜帶的信息就越多。信息的作用就是在於消除不確定性。

ID3劃分特徵使用的就是信息增益IG.

一個屬性的信息增益越大,表明屬性對樣本的熵減少的能力就更強,該屬性使得數據所屬類別的不確定性變爲確定性的能力越強。

注:需要的期望信息越小,分區的純度越高。

信息增益計算

首先計算特徵A對數據集D的經驗條件熵H(D|A) ,在數學上就是條件概率分佈(Condition Probability)

H(D|A)=j|Dj||D|×H(Dj)|Di||D|j

引入條件熵,在信息論中主要是爲了消除結果的不確定性。
然後計算信息增益

Gain(A)=H(D)H(D|A)

其中,Gain(A) 即爲所求的信息增益。

下面來應用一個實例,訓練元組數據D

這裏寫圖片描述

在這裏

H(D|age)=514×(25log22535log235)+414×(44log20404log204)+514×(35log23525log225)=0.694

根據計算出來的條件熵,計算按age 劃分的信息增益,計算方法如下:

Gain(age)=H(D)H(D|age)=0.9400.964=0.246

類似的可以計算出其它屬性的信息增益:

Gain(income)=0.029Gain(student)=0.151Gain(credit_rating)=0.048

由於age 在屬性中具有最高的信息增益,所以它被選作分裂特徵。下面再進行遞歸計算信息增益,在此就不展示了。

ID3採用的就是就是IG,算法步驟如下:


這裏寫圖片描述
這裏寫圖片描述

2.使用增益率計算

ID3使用的是信息增益,C4.5使用的是信息增益率。

C4.5算法繼承了ID3算法的優點,並在以下幾方面對ID3算法進行了改進:
1) 用信息增益率來選擇屬性,克服了用信息增益選擇屬性時偏向選擇取值多的屬性的不足;
2) 在樹構造過程中進行剪枝;
3) 能夠完成對連續屬性的離散化處理;
4) 能夠對不完整數據進行處理。

C4.5算法有如下優點:產生的分類規則易於理解,準確率較高。其缺點是:在構造樹的過程中,需要對數據集進行多次的順序掃描和排序,因而導致算法的低效。此外,C4.5只適合於能夠駐留於內存的數據集,當訓練集大得無法在內存容納時程序無法運行。

另外,無論是ID3還是C4.5最好在小數據集上使用,決策樹分類一般只試用於小數據。當屬性取值很多時最好選擇C4.5算法,ID3得出的效果會非常差。

分裂信息計算公式:

Split_H(D|A)=|Dj||D|×log2(|Dj||D|)

增益率定義爲:

Gain_Rate(A)=Gain(A)Split_H(D|A)

選擇具有最大增益率的特徵作爲分裂特徵。

3.基尼指數Gini index

基尼指數在CART中使用,Gini index度量的是數據分區或訓練元組集D的不純度。計算方式如下:

Gini(D)=1p2ipiDCim

3.學習推介

Andrew W. Moore PPT dtree
決策樹Python實現,單獨成文,網址:決策樹實現
Wikipedia維基百科-Decision Tree決策樹

最後,附一張決策樹的優點和缺點圖:


這裏寫圖片描述

4.Reference

[1]數據挖掘概念與技術 Third Edition,韓家偉.
[2]機器學習實戰 ,Peter Harrington.



本欄目Machine Learning持續更新中,歡迎關注:Dream_Angel_Z博客


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章