C4.5
C4.5是機(jī)器學(xué)習(xí)算法中的另一個(gè)分類決策樹算法,它是基于ID3算法進(jìn)行改進(jìn)后的一種重要算法,相比于ID3算法,改進(jìn)有如下幾個(gè)要點(diǎn):
- 用信息增益率來選擇屬性。ID3選擇屬性用的是子樹的信息增益,這里可以用很多方法來定義信息,ID3使用的是熵(entropy, 熵是一種不純度度量準(zhǔn)則),也就是熵的變化值,而C4.5用的是信息增益率。
- 在決策樹構(gòu)造過程中進(jìn)行剪枝,因?yàn)槟承┚哂泻苌僭氐慕Y(jié)點(diǎn)可能會(huì)使構(gòu)造的決策樹過適應(yīng)(Overfitting),如果不考慮這些結(jié)點(diǎn)可能會(huì)更好。
- 對非離散數(shù)據(jù)也能處理。
- 能夠?qū)Σ煌暾麛?shù)據(jù)進(jìn)行處理。
首先,說明一下如何計(jì)算信息增益率。
熟悉了ID3算法后,已經(jīng)知道如何計(jì)算信息增益,計(jì)算公式如下所示(來自Wikipedia):
或者,用另一個(gè)更加直觀容易理解的公式計(jì)算:
- 按照類標(biāo)簽對訓(xùn)練數(shù)據(jù)集D的屬性集A進(jìn)行劃分,得到信息熵:
- 按照屬性集A中每個(gè)屬性進(jìn)行劃分,得到一組信息熵:
- 計(jì)算信息增益
然后計(jì)算信息增益,即前者對后者做差,得到屬性集合A一組信息增益:
這樣,信息增益就計(jì)算出來了。
- 計(jì)算信息增益率
下面看,計(jì)算信息增益率的公式,如下所示(來自Wikipedia):
其中,IG表示信息增益,按照前面我們描述的過程來計(jì)算。而IV是我們現(xiàn)在需要計(jì)算的,它是一個(gè)用來考慮分裂信息的度量,分裂信息用來衡量屬性分 裂數(shù)據(jù)的廣度和均勻程序,計(jì)算公式如下所示(來自Wikipedia):
簡化一下,看下面這個(gè)公式更加直觀:
其中,V表示屬性集合A中的一個(gè)屬性的全部取值。
我們以一個(gè)很典型被引用過多次的訓(xùn)練數(shù)據(jù)集D為例,來說明C4.5算法如何計(jì)算信息增益并選擇決策結(jié)點(diǎn)。
上面的訓(xùn)練集有4個(gè)屬性,即屬性集合A={OUTLOOK, TEMPERATURE, HUMIDITY, WINDY};而類標(biāo)簽有2個(gè),即類標(biāo)簽集合C={Yes, No},分別表示適合戶外運(yùn)動(dòng)和不適合戶外運(yùn)動(dòng),其實(shí)是一個(gè)二分類問題。
我們已經(jīng)計(jì)算過信息增益,這里直接列出來,如下所示:
數(shù)據(jù)集D包含14個(gè)訓(xùn)練樣本,其中屬于類別“Yes”的有9個(gè),屬于類別“No”的有5個(gè),則計(jì)算其信息熵:
| 1 | Info(D) = -9/14 * log2(9/14) - 5/14 * log2(5/14) = 0.940 |
下面對屬性集中每個(gè)屬性分別計(jì)算信息熵,如下所示:
| 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 |
| 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 |
根據(jù)上面的數(shù)據(jù),我們可以計(jì)算選擇第一個(gè)根結(jié)點(diǎn)所依賴的信息增益值,計(jì)算如下所示:
| 1 | Gain(OUTLOOK) = Info(D) - Info(OUTLOOK) = 0.940 - 0.694 = 0.246 |
| 3 | Gain(HUMIDITY) = Info(D) - Info(HUMIDITY) = 0.940 - 0.789 = 0.151 |
接下來,我們計(jì)算分裂信息度量H(V):
- OUTLOOK屬性
屬性O(shè)UTLOOK有3個(gè)取值,其中Sunny有5個(gè)樣本、Rainy有5個(gè)樣本、Overcast有4個(gè)樣本,則
| 1 | H(OUTLOOK) = - 5/14 * log2(5/14) - 5/14 * log2(5/14) - 4/14 * log2(4/14) = 1.577406282852345 |
- TEMPERATURE屬性
屬性TEMPERATURE有3個(gè)取值,其中Hot有4個(gè)樣本、Mild有6個(gè)樣本、Cool有4個(gè)樣本,則
| 1 | H(TEMPERATURE) = - 4/14 * log2(4/14) - 6/14 * log2(6/14) - 4/14 * log2(4/14) = 1.5566567074628228 |
- HUMIDITY屬性
屬性HUMIDITY有2個(gè)取值,其中Normal有7個(gè)樣本、High有7個(gè)樣本,則
| 1 | H(HUMIDITY) = - 7/14 * log2(7/14) - 7/14 * log2(7/14) = 1.0 |
- WINDY屬性
屬性WINDY有2個(gè)取值,其中True有6個(gè)樣本、False有8個(gè)樣本,則
| 1 | H(WINDY) = - 6/14 * log2(6/14) - 8/14 * log2(8/14) = 0.9852281360342516 |
根據(jù)上面計(jì)算結(jié)果,我們可以計(jì)算信息增益率,如下所示:
| 1 | IGR(OUTLOOK) = Info(OUTLOOK) / H(OUTLOOK) = 0.246/1.577406282852345 = 0.15595221261270145 |
| 3 | IGR(HUMIDITY) = Info(HUMIDITY) / H(HUMIDITY) = 0.151/1.0 = 0.151 |
根據(jù)計(jì)算得到的信息增益率進(jìn)行選擇屬性集中的屬性作為決策樹結(jié)點(diǎn),對該結(jié)點(diǎn)進(jìn)行分裂。
C4.5算法的優(yōu)點(diǎn)是:產(chǎn)生的分類規(guī)則易于理解,準(zhǔn)確率較高。
C4.5算法的缺點(diǎn)是:在構(gòu)造樹的過程中,需要對數(shù)據(jù)集進(jìn)行多次的順序掃描和排序,因而導(dǎo)致算法的低效。
參考鏈接
- http://blog.sina.com.cn/s/blog_68ffc7a40100urn3.html
- http://en.wikipedia.org/wiki/Information_gain_ratio
- http://blog.sina.com.cn/s/blog_54c5622701016h4j.html
- http://en.wikipedia.org/wiki/Information_gain_ratio
- http://baike.baidu.com/view/8775136.htm
- http://www.cnblogs.com/zhangchaoyang/articles/2842490.html
- http://private.codecogs.com/latex/eqneditor.php
quote:http://shiyanjun.cn/archives/428.html C
轉(zhuǎn)載于:https://www.cnblogs.com/fillim/p/4277022.html
總結(jié)
- 上一篇: mac安装pip并升级pip版本
- 下一篇: (周日赛)Sort the Array