1. 程式人生 > >帶你搞懂決策樹演算法原理

帶你搞懂決策樹演算法原理

一、決策樹是什麼?

  顧名思義,決策樹是由一個個“決策”組成的樹,學過資料結構的同學對樹一定不陌生。決策樹中,結點分為兩種,放“決策依據”的是非葉結點,放“決策結果”的是葉結點。
  那麼決策是什麼呢?很好理解,和人一樣,決策就是對於一個問題,有多個答案,選擇答案的過程就是決策。在決策樹中,通常有兩種型別的問題,一種是離散值的問題,一種是連續值的問題。拿選一個好西瓜來比喻,西瓜的紋路是清晰的、稍稍模糊的、還是很模糊的,這是一個離散值的問題,西瓜的密度(質量與體積的比值)是個連續值的問題。決策樹就是由一個個的問題與答案生成的。  

  決策樹實際上是一個if-then規則的集合。還是拿西瓜問題舉例,拿到一個西瓜,先判斷它的紋路,如果很模糊,就認為這不是好瓜,如果它清晰,就認為它是一個好瓜,如果它稍稍模糊,就考慮它的密度,密度大於某個值,就認為它是好瓜,否則就是壞瓜。

二、如何生成決策樹?

1.經典的ID3演算法

  熵是描述資訊的不確定度的,是隨機變數不確定度的度量。公式是這樣的:


H(D)=k=1K|Ck||D|log2|Ck||D|

  其中, |Ck|D 中屬於 Ck 類的樣本數, |D| 是樣本總數。熵越大,資訊的不確定度越大,資訊越“混亂”,越不符合決策樹分類的需求。所以,我們奔著減小熵的目標來選擇分類的依據和分類的結果。
  為了衡量熵的變化,我們引入資訊增益的概念。公式是這樣的:


H(D|A)=i=1N|Di|Dk=1K|Dik||Di|log2|Dik||Di|

g(D,A)=H(D)H(D|A)

  其中,根據特徵A將樣本劃分為N個子集,D1,D2,,DN|Di| 是子集 Di 的樣本數,|Dik| 是子集中屬於 Ck 類的樣本數
  資訊增益的含義就是在選定特徵A之後,資料的不確定度的下降。資訊增益越大,意味著這個特徵分類的能力越強,我們就要優先選擇這個特徵。  
  選擇資訊增益最大的特徵,根據它的屬性劃分該結點。如果一個子結點中只有一個分類的樣本

,那麼這個結點就不需要再分,這個葉結點的類別就是這個分類的類別;如果所有的特徵都已經參與過分類,那麼決策樹也不需要往下生成,樣本數最多的類別就是葉結點的類別。

ID3演算法的侷限性

(1)不支援連續特徵
(2)採用資訊增益大的特徵優先建立決策樹的節點。在相同條件下,取值比較多的特徵比取值少的特徵資訊增益大。
(3)不支援缺失值處理
(4)沒有應對過擬合的策略

2. 改進的C4.5演算法

C4.5與ID3針對ID3的四個侷限性進行了改進

連續特徵:C4.5的思路是將連續的特徵離散化。比如m個樣本的連續特徵A的取值有m個,從小到大排列為a1,a2,,am ,取相鄰兩個取值的平均值作為劃分點,一共有m-1個劃分點,分別計算以這些點作為二元分類點時的資訊增益比。要注意的是,與離散屬性不同的是,如果當前節點為連續屬性,則該屬性後面還可以參與子節點的產生選擇過程。

資訊增益:由於資訊增益偏向於取值比較多的特徵,所以C4.5引入了資訊增益比,n是特徵A的取值個數


gR(D,A)=g(D,A)HA(D)