决策树深度学习笔记
参考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语言程序如下:
海量数据实现: