決策樹深度學習筆記
參考web數據挖掘 劉兵
決策樹關注的難點:
1. 是如何構造一個小而純的決策樹-NP完全問題。
2.最佳分類屬性的選擇-混雜度函數-信息增益-信息熵
3.與關聯規則的區別與聯繫
僞代碼如下:
decisionTree(D,A,T,)
if 數據集D 屬於同一個分類Cj,Cj屬於C then
決策樹的葉子節點的類標爲Cj
else
if 屬性集A爲空 then
出現最多的那個類別Cj作爲決策樹的類標
else//數據集
//用熵計算D的混雜度
p0=inpurity-eval-1(D)
//對所有屬性都計算一遍找出用哪個屬性來劃分D可以將D的換咋讀減少最多。
for each attribute Ai do
pi=inpurity-eval-2(Ai,D)
endfor
//計算Ai的信息增益
// gain(D,Ai)=entropy(D)-entropyAi(D)
選擇Ag是混雜度的減少量達到最大
if Ag帶來的信息增益太小then
算法在這個分支上停止
else
將屬性Ag作爲決策樹的一個決策節點
將數據集分成m個子數據集,m是屬性Ag的取值vi的個數
//對於每一個子屬性集合
for each Dj in {D1,D2,D3,...,Dm} do
if D不等於空 then
對於每一個Ag的取值vj 建立一個分支Tj
遞歸調用decidionTree(Dj,A-{Ag},Tj)
enif
endfor
endif
endif
該貪婪算法沒有回溯
C語言程序如下:
海量數據實現: