1. 程式人生 > >決策樹講解和程式碼

決策樹講解和程式碼

決策樹最關鍵的兩個部分:1.面對一個實際的資料集,如何構建出一棵樹 2.構建樹的過程中,樹分裂節點時,如何選擇出最優的屬性作為分裂節點。

演算法就是為了選出最優的屬性。為什麼要選擇最優的屬性,是因為不同的屬性排列組合導致的演算法能力的好壞不一樣。

決策樹包含:根節點(樣本全集)、葉節點(決策結果)、內部節點(屬性測試)

劃分選擇的決策樹演算法有:ID3(資訊增益)、C4.5(增益率)、CART(基尼指數)

演算法形式如下


輸入:訓練集D,屬性集A

過程:函式TreeGenerate(D,A)

生成節點node;

1.如果D中樣本屬於同一類別C,則將node標記為C類葉節點

2.如果屬性集為空或者D中樣本在所有屬性上取值相同,則將node標記為葉節點

3.從A中選擇最優劃分屬性a*,採用增益率為標準找出最優劃分屬性,a* = arg max Gain_ratio(D,a)

為node生成一個分支;令Dv表示D在a*上的樣本子集;如果Dv為空,將分支節點標記為葉節點,其類別標記為D中樣本最多的類

輸出:以node為根節點的一顆決策樹