1. 程式人生 > >樹模型中分裂特徵選擇標準--資訊熵,資訊增益,資訊增益率的計算

樹模型中分裂特徵選擇標準--資訊熵,資訊增益,資訊增益率的計算

1.熵:集和的熵值 -sum(pi * log(pi , 2))

2.資訊增益:集和的熵-按照特徵a劃分後子集的熵加權和(偏向類別數目多的屬性) 

3.資訊增益率:資訊增益/屬性的熵(偏向類別數目少的屬性)

4.基尼值:1-集和各類別值的概率平方和(隨機抽取兩個樣本其類別不一致的概率) 1 - sum(pi**2)

5.基尼係數:按照屬性a劃分後各子集的加權基尼和

ID3:判別式模型,分類樹,多叉樹,資訊增益

C4.5:判別式模型,分類樹,多叉樹,資訊增益率,剪枝,連續值(遍歷),缺失值(按照樣本概率加到葉子節點)

CART:判別式模型,分類與迴歸樹,二叉樹,基尼係數,GBDT的基模型

C4.5是機器學習演算法中的另一個分類決策樹演算法,它是基於ID3演算法進行改進後的一種重要演算法,相比於ID3演算法,改進有如下幾個要點:

· 用資訊增益率來選擇屬性。ID3選擇屬性用的是子樹的資訊增益,這裡可以用很多方法來定義資訊,ID3使用的是熵(entropy, 熵是一種不純度度量準則),也就是熵的變化值,而C4.5用的是資訊增益率。

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

· 對非離散資料也能處理。

· 能夠對不完整資料進行處理。

資訊熵:用於評估某個集合的純度

Ent(D) = -(P1*logp1+p2*logp2+....+pn*logpn)

資訊增益:節點a的資訊熵E1與其全部葉子節點資訊熵之和E2的差值

Gain(D,a) = Ent(D) - |Dv1|/|D|*Ent(Dv1) - |Dv2|/|D|*Ent(Dv2) - ... -|Dvn|/|D|*Ent(Dvn)

資訊增益率:Gain_raio = Gain(D,a)/IV(a)

例子:

上面的訓練集有4個屬性,即屬性集合A={OUTLOOK, TEMPERATURE, HUMIDITY, WINDY};而類標籤有2個,即類標籤集合C={Yes, No},分別表示適合戶外運動和不適合戶外運動,其實是一個二分類問題。我們已經計算過資訊增益,這裡直接列出來,如下所示:資料集D包含14個訓練樣本,其中屬於類別“Yes”的有9個,屬於類別“No”的有5個,則計算其資訊熵:

Info(D) = -9/14 * log2(9/14) - 5/14 * log2(5/14) = 0.940

下面對屬性集中每個屬性分別計算資訊熵,如下所示:

Info(OUTLOOK) = 5/14 * [- 2/5 * log2(2/5) – 3/5 * log2(3/5)] + 4/14 * [ - 4/4 * log2(4/4) - 0/4 * log2(0/4)] + 5/14 * [ - 3/5 * log2(3/5) – 2/5 * log2(2/5)] = 0.694

Info(TEMPERATURE) = 4/14 * [- 2/4 * log2(2/4) – 2/4 * log2(2/4)] + 6/14 * [ - 4/6 * log2(4/6) - 2/6 * log2(2/6

Info(HUMIDITY) = 7/14 * [- 3/7 * log2(3/7) – 4/7 * log2(4/7)] + 7/14 * [ - 6/7 * log2(6/7) - 1/7 * log2(1/7)]

Info(WINDY) = 6/14 * [- 3/6 * log2(3/6) – 3/6 * log2(3/6)] + 8/14 * [ - 6/8 * log2(6/8) - 2/8 * log2(2/8)] = 0.89

計算資訊增益:

Gain(OUTLOOK) = Info(D) - Info(OUTLOOK) = 0.940 - 0.694 = 0.246

Gain(TEMPERATURE) = Info(D) - Info(TEMPERATURE) = 0.940 - 0.911 = 0.029

Gain(HUMIDITY) = Info(D) - Info(HUMIDITY) = 0.940 - 0.789 = 0.151Gain(WINDY) = Info(D) - Info(WINDY) = 0.940 - 0.892 = 0.048

接下來,我們計算分裂資訊度量H(V):

H(OUTLOOK) = - 5/14 * log2(5/14) - 5/14 * log2(5/14) - 4/14 * log2(4/14) = 1.577406282852345

H(TEMPERATURE) = - 4/14 * log2(4/14) - 6/14 * log2(6/14) - 4/14 * log2(4/14) = 1.5566567074628228

H(HUMIDITY) = - 7/14 * log2(7/14) - 7/14 * log2(7/14) = 1.0

H(WINDY) = - 6/14 * log2(6/14) - 8/14 * log2(8/14) = 0.9852281360342516

計算資訊增益率:

IGR(OUTLOOK) = Info(OUTLOOK) / H(OUTLOOK) = 0.246/1.577406282852345 = 0.15595221261270145

IGR(TEMPERATURE) = Info(TEMPERATURE) / H(TEMPERATURE) = 0.029 / 1.5566567074628228 = 0.018629669509642094

IGR(HUMIDITY) = Info(HUMIDITY) / H(HUMIDITY) = 0.151/1.0 = 0.151

IGR(WINDY) = Info(WINDY) / H(WINDY) = 0.048/0.9852281360342516 = 0.048719680492692784

C4.5演算法的優點是:產生的分類規則易於理解,準確率較高。C4.5演算法的缺點是:在構造樹的過程中,需要對資料集進行多次的順序掃描和排序,因而導致演算法的低效。

資訊增益率準則對可取數目較少的屬性有所偏好,因此C4.5並不是直接選取資訊增益率最大的候選屬性劃分,而是使用了一個啟發式的方法:先從候選劃分屬性中找出資訊增益高於平均水平的屬性,再從中選取增益率最高的。