決策樹學習基本演算法
阿新 • • 發佈:2019-01-07
輸入
訓練集D={(x1,y1),(x2,y2),…(xm,ym)};
屬性集A={a1,a2,…ad}.
過程:函式TreeGenerate(D,A)
- 生成結點node;
- if D中樣本全屬於同一類別C:
將node標記為C類葉結點;
遞迴返回;
end if - if A=空集 或 D中樣本在A上取值相同:
將node標記為D中樣本數(當前結點)最多的類(成為葉結點);
遞迴返回;
end if - 從A中選擇最優劃分屬性a*:
- a*=argmax Gain(D,a)
[最大化資訊增益,偏好可取值數目較多的屬性 ] - a*=argmax Gain_ratio(D,a)
[ 最大化資訊增益率,偏好可取值數目較少的屬性] - a*=argmin Gini_index(D,a)
[最小化基尼指數]
- for a* 的每個值 a‘* do
為node生成一個分支;令Dv表示D中在a*上取值為a’*的樣本子集
if Dv為空:
將分支結點標記為D中樣本數(父結點)最多的類(成為葉結點);
遞迴返回;
else
以TreeGenerate(Dv,A{a*})為分支結點
end if
end for
輸出
以node為根結點的一棵決策樹