決策樹演算法的優越性在於:離散學習演算法進行組合總可以表達任意複雜的布林函式,並不受資料集的限制即學習沒有飽和性,只是現實應用受限於時間和計算能力,一般不能滿足不飽和性。
c4.5是機器學習演算法中的另乙個分類決策樹演算法,它是基於id3演算法進行改進後的一種重要演算法,相比於id3演算法,改進有如下幾個要點:
首先,說明一下如何計算資訊增益率。
熟悉了id3演算法後,已經知道如何計算資訊增益,計算公式如下所示(來自wikipedia):
或者,用另乙個更加直觀容易理解的公式計算:
然後計算資訊增益,即前者對後者做差,得到屬性集合a一組資訊增益:
這樣,資訊增益就計算出來了。
下面看,計算資訊增益率的公式,如下所示(來自wikipedia):
其中,ig表示資訊增益,按照前面我們描述的過程來計算。而iv是我們現在需要計算的,它是乙個用來考慮**資訊的度量,**資訊用來衡量屬性分 裂資料的廣度和均勻程式,計算公式如下所示(來自wikipedia):
簡化一下,看下面這個公式更加直觀:
其中,v表示屬性集合a中的乙個屬性的全部取值。
我們以乙個很典型被引用過多次的訓練資料集d為例,來說明c4.5演算法如何計算資訊增益並選擇決策結點。
上面的訓練集有4個屬性,即屬性集合a=;而類標籤有2個,即類標籤集合c=,分別表示適合戶外運動和不適合戶外運動,其實是乙個二分類問題。
我們已經計算過資訊增益,這裡直接列出來,如下所示:
資料集d包含14個訓練樣本,其中屬於類別「yes」的有9個,屬於類別「no」的有5個,則計算其資訊熵:
1
info(d) = -9/14 * log2(9/14) - 5/14 * log2(5/14) = 0.940
下面對屬性集中每個屬性分別計算資訊熵,如下所示:
1
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
2
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)] + 4/14 * [ - 3/4 * log2(3/4) – 1/4 * log2(1/4)] = 0.911
3
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)] = 0.789
4
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.892
根據上面的資料,我們可以計算選擇第乙個根結點所依賴的資訊增益值,計算如下所示:
1
gain(outlook) = info(d) - info(outlook) = 0.940 - 0.694 = 0.246
2
gain(temperature) = info(d) - info(temperature) = 0.940 - 0.911 = 0.029
3
gain(humidity) = info(d) - info(humidity) = 0.940 - 0.789 = 0.151
4
gain(windy) = info(d) - info(windy) = 0.940 - 0.892 = 0.048
接下來,我們計算**資訊度量h(v):
屬性outlook有3個取值,其中sunny有5個樣本、rainy有5個樣本、overcast有4個樣本,則
1
h(outlook) = - 5/14 * log2(5/14) - 5/14 * log2(5/14) - 4/14 * log2(4/14) = 1.577406282852345
屬性temperature有3個取值,其中hot有4個樣本、mild有6個樣本、cool有4個樣本,則
1
h(temperature) = - 4/14 * log2(4/14) - 6/14 * log2(6/14) - 4/14 * log2(4/14) = 1.5566567074628228
屬性humidity有2個取值,其中normal有7個樣本、high有7個樣本,則
1
h(humidity) = - 7/14 * log2(7/14) - 7/14 * log2(7/14) = 1.0
屬性windy有2個取值,其中true有6個樣本、false有8個樣本,則
1
h(windy) = - 6/14 * log2(6/14) - 8/14 * log2(8/14) = 0.9852281360342516
根據上面計算結果,我們可以計算資訊增益率,如下所示:
1
igr(outlook) = info(outlook) / h(outlook) = 0.246/1.577406282852345 = 0.15595221261270145
2
igr(temperature) = info(temperature) / h(temperature) = 0.029 / 1.5566567074628228 = 0.018629669509642094
3
igr(humidity) = info(humidity) / h(humidity) = 0.151/1.0 = 0.151
4
igr(windy) = info(windy) / h(windy) = 0.048/0.9852281360342516 = 0.048719680492692784
根據計算得到的資訊增益率進行選擇屬性集中的屬性作為決策樹結點,對該結點進行**。
c4.5演算法的優點是:產生的分類規則易於理解,準確率較高。
c4.5演算法的缺點是:在構造樹的過程中,需要對資料集進行多次的順序掃瞄和排序,因而導致演算法的低效。
決策樹之C4 5演算法
c4.5演算法是機器學習中的乙個重要的決策樹演算法,它是對id3演算法的改進,相對於id3演算法主要有以下幾個改進 1 用資訊增益率來選擇屬性 2 在決策樹的構造過程中對樹進行剪枝 3 對非離散資料也能處理 4 能夠對不完整資料進行處理 接下來分別詳細講述這幾點的改進方案 1 用資訊增益率來選擇屬性...
決策樹之C4 5演算法
1.採用資訊增益率 因為 id3 在計算的時候,傾向於選擇取值多的屬性。為了避免這個問題,c4.5 採用資訊增益率的方式來選擇屬性。資訊增益率 資訊增益 屬性熵,具體的計算公式這裡省略。當屬性有很多值的時候,相當於被劃分成了許多份,雖然資訊增益變大了,但是對於 c4.5 來說,屬性熵也會變大,所以整...
決策樹 C4 5演算法
c4.5演算法是用於生成決策樹的的一種經典演算法,是id3演算法的一種延伸和優化。改進了點 1 通過資訊增益率選擇 屬性,克服了id3演算法中通過資訊增益傾向於選擇擁有多個屬性值的屬性作為 屬性的不足 2 能夠處理離散型和連續型的屬性型別,即將連續型的屬性進行離散化處理 3 構造決策樹之後進行剪枝操...