1. 程式人生 > >轉載]決策樹ID3、C4.5、CART科普

轉載]決策樹ID3、C4.5、CART科普

轉載地址:http://blog.csdn.net/zhangping1987/article/details/23021381


2011年獲得了資料探勘領域最高榮譽獎KDD創新獎,昆蘭發明了著名的決策樹學習演算法ID3、C4.5,其個人主頁公佈了C4.5的C程式碼。

—————————————————————————————————————————————————————————————————————————————

決策樹之ID3,說一個例子,就會明白,拿 Tom M .mitchen 的《Machine Learing》第三章中的例子。


我們先解釋一下這張表,表中有14條例項資料,就是我們的訓練資料,其中 Outlook,Temperature,Humidity ,Wind

 稱作條件屬性PlayTennis 稱作是決策屬性(標籤)

每一個屬性都有各自的值記做:Value(Outlook)={Sunny,OverCast,Rain},Value(Temperature)={Hot,Mild,Cool},Value(Humidity)={High,Normal},Value(Wind)={Strong,Weak},Value(PlayTennis)={NO,Yes}。

第一個重要的概念:Entropy。

我們數一下  決策屬性PlayTennis,一共有兩個類別:Yes,No。Yes的例項數是 9,No的例項數是 5。計算決策屬性的Entropy(熵):

,

計算結果為:0.940286

這裡的決策屬性S的值只有兩個值(Yes,No),當然可以有多個值(s1,s2,s3,...,sk),這些決策屬性的值的概率分別為:p1,p2,p3,...,pk所以決策屬性的Entroy的計算公式:


第二個重要的概念:information gain(資訊增益)

我們只Outlook條件屬性舉例,其他的屬性一樣:

Value(Outlook)={Sunny,OverCast,Rain}:

Outlook是sunny的例項數為5(其中Yes的個數為2,No的個數為3),佔總的例項數為5/14,那麼針對sunny的Entropy,


計算結果為:0.97095


Outlook是OverCast的例項數為4(其中Yes的個數為4,No的個數為0),佔總的例項數為4/14,那麼針對Overcast的Entropy,


計算結果為:0

Outlook是Rain的例項數為5(其中Yes的個數為3,No的個數為2),佔總的例項數為5/14,那麼針對Rain的Entropy,


計算結果為:0.97095

那麼最後針對Outlook條件屬性的information gain為:


計算結果為:0.24675

所以針對某一條件屬性的information gain為:

        

那麼其他三個條件屬性Temperature、Humidity、Wind的資訊增益為:




我們看到Outlook的資訊增益是最大的,所以作為決策樹的一個根節點。即:


然後,從Outlook下面出來三個樹枝,最左邊的Sunny,我們從Outlook是Sunny的例項資料中,找到資訊增益最大的那一個,依次類推。

—————————————————————————————————————————————————————————————————————————————

決策樹之C4.5

上面討論的決策樹的ID3演算法,屬性只能是列舉型的(離散的),當然屬性值可以是連續的數值型,但是需要對這些資料進行預處理,變為離散型的,才可以運用ID3演算法。

所以Ross Quinlan又提出了C4.5演算法,能夠處理屬性是連續型的。而且,在C4.5演算法中,又提出了兩個新的概念:

分離資訊(Split Information)和資訊增益率(Information gain ratio)

首先,給出分離資訊的計算方法,數學符號表達式為:

解釋為:資料集通過條件屬性A的分離資訊。上面一個例子,資料集通過Outlook這個條件屬性的分離資訊,Outlook有三個屬性值分別為:Sunny,Overcast,Rain,它們各佔5,4,5,所以:


再次,給出資訊增益率的公式:

上面這個例子如:資料集S針對Outlook的資訊增益率,

分子和分母這兩個值都已經求出來,選擇資訊增益率最大的那個屬性,作為節點。

—————————————————————————————————————————————————————————————————————————————

決策樹之C5.0

這是決策樹C4.5的商用演算法,在記憶體管理等方面,給出了改進。比如在商用軟體SPSS中,就有該演算法。

___________________________________________________________________________________________________________________________________

注意上述三個演算法只能做分類,不能做迴歸,下一篇博文CART類似於C4.5,但可以做迴歸。

開源的軟體:

java語言中最著名的的Weka,對ID3,C4.5都有實現。