決策樹算法簡述:ID3,C4.5晕翠,CART

1. 決策

我理解的決策就是根據(jù)當前已有的條件喷舀,得出一個結果。

如以下這個簡單的例子:

ID Leg Color Bite Type
1 short yellow yes cat
2 long black yes cat
3 long yellow yes cat
4 short yellow no cat
-1 long yellow no dog
-2 short white yes dog
-3 long white yes dog
-4 long white no dog
-5 short black no dog

以上這個也叫做決策表淋肾。通過 腿長硫麻,顏色是否咬人 來判斷是 還是 樊卓。

2. 決策樹

我們可以將以上的表格轉換成一棵樹:

決策樹

每次決策的時候從根節(jié)點出發(fā)拿愧,根據(jù)屬性值選擇子樹,直到葉子節(jié)點就是一個決策碌尔。

3. ID3算法

構建樹的時候浇辜,把哪個屬性放在根節(jié)點,哪個屬性放在第二層節(jié)點唾戚,就值得我們思考了柳洋。可以預想到叹坦,根據(jù)不同的順序熊镣,構建出來的決策樹的構造可能是不一樣的。如果樹中的節(jié)點越少募书,那么平均每次決策所需要的判斷次數(shù)也就越少绪囱,算法的效率就越高。

ID3算法就是為了構造出一棵較優(yōu)的(注意莹捡,不一定最優(yōu))的樹鬼吵,使得每次決策的平均判斷次數(shù)更少。

3.1 信息熵

在高中學過篮赢, 表示一個系統(tǒng)的無序程度齿椅。比如剛整理好的房間的熵值就比你住過兩周不收拾以后的房間的熵值要小。

信息熵 是類似的启泣,其定義為離散隨機事件出現(xiàn)的概率媒咳,一個系統(tǒng)越是有序,信息熵就越低种远,反之一個系統(tǒng)越是混亂,它的信息熵就越高顽耳。

假設一個隨機變量 X 的取值為 X=\{x_1, x_2, ...,x_n\}坠敷,每一種取到的概率為 P=\{p_1,p_2,...,p_n\}妙同,那么 X 的熵值為:
\begin{aligned} E(X) = -\sum\limits_{i=1}^{n}p_i\log_2p_i \end{aligned}
注意,雖然前面有個負號膝迎,但是熵值是正的粥帚。

以上面的決策為例,Type = \{cat, dog\}限次,其概率分別是 \{\frac{4}{9}芒涡, \frac{5}{9} \},那么其熵值為:
\begin{aligned} E(Type) = -(\frac{4}{9} \log_2\frac{4}{9}+\frac{5}{9}\log_2\frac{5}{9}) = 0.9911 \end{aligned}

3.2 條件熵

還是以上的例子卖漫,如果把所有的樣本僅按照 Leg 進行分類的話费尽,可以分成兩類:

按Leg分類

分別計算熵值,可得:
\begin{aligned} E(long) &= -(\frac{2}{5} \log_2 \frac{2}{5}+\frac{3}{5}\log_2\frac{3}{5}) = 0.9710 \\ E(short) &= -(\frac{1}{2}\log_2\frac{1}{2}+\frac{1}{2}\log_2\frac{1}{2}) = 1 \end{aligned}
因此羊始,劃分后的熵值為:
\begin{aligned} E(Type|Leg) &= \frac{5}{9}\cdot E(long)+\frac{4}{9}\cdot E(short) \\&=\frac{5}{9}\cdot 0.9710+\frac{4}{9}\cdot 1 \\&= 0.9839 \end{aligned}
因此信息增益為:
\begin{aligned} G(Leg)=E(Type)-E(Type|Leg)=0.0071 \end{aligned}

3.3 ID3 算法

ID3 算法就是找出信息增益最大的屬性旱幼,然后將其當成根節(jié)點,然后對于由此劃分得到的子數(shù)據(jù)突委,重復以上的步驟柏卤。

同樣的方法計算 Color 屬性的信息增益:

按Color分類

\begin{aligned} E(yellow) &= -(\frac{3}{4} \log_2\frac{3}{4}+\frac{1}{4}\log_2\frac{1}{4}) = 0.8113 \\ E(black) &= -(\frac{1}{2} \log_2\frac{1}{2}+\frac{1}{2}\log_2\frac{1}{2}) = 1 \\ E(white) &= -(\frac{0}{3} \log_2\frac{0}{3}+\frac{3}{3}\log_2\frac{3}{3}) = 0 \\ E(Type|Color) &= \frac{4}{9}\cdot E(yellow)+\frac{2}{9}\cdot E(black) + \frac{3}{9}\cdot E(white) = 0.5828 \\ G(Color) &= E(Type)-E(Type|Color) = 0.4083 \end{aligned}
再算Bite 屬性的信息增益:

按Bite分類

\begin{aligned} E(yes) &= -(\frac{3}{5}\log_2\frac{3}{5}+\frac{2}{5}\log_2\frac{2}{5}) = 0.9710 \\ E(no) &= -(\frac{1}{4} \log_2\frac{1}{4}+\frac{3}{4}\log_2\frac{3}{4}) = 0.8113 \\ E(Type|Bite) &= \frac{5}{9}\cdot E(yes)+\frac{4}{9}\cdot E(no) = 0.9000 \\ G(Bite) &= E(Type)-E(Type|Bite) = 0.0911 \end{aligned}
很明顯,Color 屬性以絕對的優(yōu)勢勝出匀油,當選根節(jié)點缘缚。

于是數(shù)據(jù)被 Color 分成了三部分,對每一部分數(shù)據(jù) 敌蚜,去除 Color 屬性的影響桥滨,按以上的方法遞歸生成決策樹,這里就不贅述了钝侠。

但是ID3算法的缺點是很明顯的(雖然我自己不覺得明顯该园,但是書上都這么說):

  • ID3算法不能處理連續(xù)的數(shù)據(jù)

    這個很好理解,假設有一個屬性是精確到小數(shù)點后三位的體重值帅韧,那么可能所有樣本的值都不一樣里初,則該屬性的信息增益最大。ID3算法就會僅使用該屬性忽舟,把每個樣本都分到單獨的一類中双妨。即,反正體重都不一樣叮阅,那根據(jù)體重來判斷就完事了~

  • ID3算法傾向于選擇取值較多的屬性

    信息增益反映的給定一個條件以后不確定性減少的程度刁品,必然是分得越細的數(shù)據(jù)集確定性更高,也就是條件熵越小浩姥,信息增益越大挑随。

4. C4.5算法

為了克服 “ID3算法傾向于選擇取值較多的屬性” 的缺點志群,C.45算法使用了信息增益率來代替信息增益笛园。其思想就是库继,增加一個懲罰葬燎,取值越多的屬性懲罰越大,以此來平衡其選擇拌汇。

如果使用C.45的話柒桑,上面的公式就變成:
\begin{aligned} GR(Leg) = \frac{G(Leg)}{E(Leg)} \end{aligned}
復習一下,E(Leg) 就是將樣本按照屬性 Leg 劃分以后的信息熵噪舀。

可以得到:
\begin{aligned} E(Leg) &= -(\frac{4}{9} \log_2\frac{4}{9}+\frac{5}{9}\log_2\frac{5}{9}) = 0.9911 \\ GR(Leg) &= \frac{G(Leg)}{E(Leg)} = \frac{0.0071}{0.9911} = 0.0072 \end{aligned}

同樣的方法計算 Color 屬性的信息增益率:

\begin{aligned} E(Color) &= -(\frac{4}{9}\log_2\frac{4}{9}+\frac{2}{9}\log_2\frac{2}{9}+\frac{3}{9}\log_2\frac{3}{9}) = 1.5305 \\ GR(Color) &= \frac{G(Color)}{E(Color)} = \frac{0.4083}{1.5305} = 0.2668 \end{aligned}
再算Bite 屬性的信息增益率:
\begin{aligned} E(Bite) &= -(\frac{5}{9}\log_2\frac{5}{9}+\frac{4}{9}\log_2\frac{4}{9}) = 0.9911 \\ GR(Bite) &= \frac{G(Bite)}{E(Bite)} = \frac{0.0911}{0.9911} = 0.0919 \end{aligned}
可以看到魁淳,雖然還是 Color 屬性的信息增益率最高,但是值已經(jīng)被壓縮了与倡,而另外兩個屬性的值得到了小幅度的上升界逛,各個屬性之間的差異更小了。

5. CART 算法

上述兩個算法生成的樹中蒸走,一個節(jié)點有幾個子節(jié)點取決于該屬性的取值數(shù)量仇奶,而CART算法生成的則是二叉樹。

Chart算法則使用了一個叫做 Gini系數(shù) 的東西比驻,假設一個隨機變量 X 的取值為 X=\{x_1, x_2, ...,x_n\}该溯,每一種取到的概率為 P=\{p_1,p_2,...,p_n\},那么 X 的為:
\begin{aligned} Gi(X)=1-\sum \limits_{i=1}^{n}p_i^2 \end{aligned}
如果根據(jù)屬性 R 把數(shù)據(jù) D 劃分為 \{D_1,D_2\}别惦,則:
\begin{aligned} Gi(D, R)=\frac{|D_1|}{|D|}Gi(D_1)+\frac{|D_2|}{|D|}Gi(D_2)=Gi(R) \end{aligned}
則Gini系數(shù)增益為:
\begin{aligned} \Delta Gi(R)=Gi(D)-Gi(D,R) \end{aligned}
按照慣例狈茉,使用上面的例子計算一下:

首先算出整個數(shù)據(jù)集的 Gini 系數(shù):
\begin{aligned} Gi(Type) &= 1 - (\frac{5}{9})^2 - (\frac{4}{9})^2 = 0.4938 \end{aligned}

對于 Leg 屬性:

按Leg分類

\begin{aligned} Gi(long) &= 1 - (\frac{2}{5})^2 - (\frac{3}{5})^2 = 0.48 \\ Gi(short) & = 1 - (\frac{1}{2})^2 - (\frac{1}{2})^2 = 0.5 \\ Gi(Leg) &= \frac{5}{9} \cdot 0.48+\frac{4}{9} \cdot 0.5 = 0.4889 \\ \Delta Gi(Leg) &= Gi(Type)-Gi(Leg) = 0.005 \end{aligned}

對于 Color 屬性,就比較麻煩了掸掸,因為有三個取值氯庆,但是CART生成的是二叉樹,因此就會有三種情況扰付。

按Color分類
  • case 1:

\begin{aligned} Gi(yellow) &= 1 - (\frac{3}{4})^2 - (\frac{1}{4})^2 = 0.375 \\ Gi(black\&white) &= 1 - (\frac{1}{5})^2 - (\frac{4}{5})^2 = 0.320 \\ Gi_1(Color) &= \frac{4}{9} \cdot 0.375 + \frac{5}{9} \cdot 0.320 = 0.3827 \\ \Delta Gi_1(Color) &= Gi(Type)-Gi_1(Color) = 0.1111 \end{aligned}

  • case 2:

\begin{aligned} Gi(black) &= 1 - (\frac{1}{2})^2 - (\frac{1}{2})^2 = 0.5 \\ Gi(yellow\&white) &= 1 - (\frac{3}{7})^2 - (\frac{4}{7})^2 = 0.4898 \\ Gi_2(Color) &= \frac{2}{9} \cdot {0.5} + {\frac{7}{9}} \cdot 0.4898 = 0.4921 \\ \Delta Gi_2(Color) &= Gi(Type)-Gi_2(Color) = 0.0017 \end{aligned}

  • case 3:

\begin{aligned} Gi(white) &= 1 - (\frac{0}{3})^2 - (\frac{3}{3})^2 = 0 \\ Gi(yellow\&black) &= 1 - (\frac{4}{6})^2 - (\frac{2}{6})^2 = 0.4444 \\ Gi_3(Color) &= \frac{3}{9} \cdot 0 +\frac{6}{9} \cdot 0.4444 = 0.1975 \\ \Delta Gi_3(Color) &= Gi(Type)-Gi_3(Color) = 0.2936 \end{aligned}

對于 Bite 屬性:

按Bite分類

\begin{aligned} Gi(yes) &= 1 - (\frac{3}{5})^2 - (\frac{2}{5})^2 = 0.48 \\ Gi(no) & = 1 - (\frac{1}{4})^2 - (\frac{3}{4})^2 = 0.375 \\ Gi(Bite) &= \frac{5}{9} \cdot 0.48+\frac{4}{9} \cdot 0.375 = 0.4333 \\ \Delta Gi(Bite) &= Gi(Type)-Gi(Bite) = 0.0605 \end{aligned}

可以看出堤撵,當根節(jié)點為 Color 屬性并且左邊是 white,右邊是 yellow & black 時羽莺,Gini系數(shù)增益最大实昨。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市盐固,隨后出現(xiàn)的幾起案子荒给,更是在濱河造成了極大的恐慌,老刑警劉巖刁卜,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件志电,死亡現(xiàn)場離奇詭異,居然都是意外死亡蛔趴,警方通過查閱死者的電腦和手機挑辆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人之拨,你說我怎么就攤上這事茉继。” “怎么了蚀乔?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長菲茬。 經(jīng)常有香客問我吉挣,道長,這世上最難降的妖魔是什么婉弹? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任睬魂,我火速辦了婚禮,結果婚禮上镀赌,老公的妹妹穿的比我還像新娘氯哮。我一直安慰自己,他們只是感情好商佛,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布喉钢。 她就那樣靜靜地躺著,像睡著了一般良姆。 火紅的嫁衣襯著肌膚如雪肠虽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天玛追,我揣著相機與錄音税课,去河邊找鬼。 笑死痊剖,一個胖子當著我的面吹牛韩玩,可吹牛的內容都是我干的。 我是一名探鬼主播陆馁,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼找颓,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了氮惯?” 一聲冷哼從身側響起叮雳,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎妇汗,沒想到半個月后帘不,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡杨箭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年寞焙,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡捣郊,死狀恐怖辽狈,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情呛牲,我是刑警寧澤刮萌,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站娘扩,受9級特大地震影響着茸,放射性物質發(fā)生泄漏。R本人自食惡果不足惜琐旁,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一涮阔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧灰殴,春花似錦敬特、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至义图,卻和暖如春减俏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背碱工。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工娃承, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人怕篷。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓历筝,卻偏偏與公主長得像,于是被迫代替她去往敵國和親廊谓。 傳聞我的和親對象是個殘疾皇子梳猪,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內容