决策树(decision tree)
一、背景知识
符号xi的信息量:
L(xi) = - log2p(xi)
熵:
H = - ∑p(xi)log2p(xi)
信息增益:
特征A对训练数据集D的信息增益g(D,A) = H(D) - H(D|A)
其中,定义集合D的经验熵H(D)与特征A给定条件下D的经验条件熵H(D|A)之差
优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据。
缺点:可能产生过度匹配问题,连续变量处理效果不好。
适用数据类型:数值型和标称型。
三、基本算法——ID3算法
决策树类似于流程图的树结构:
每个内部节点表示在一个属性上的测试
每个分支表示一个属性输出
树叶节点表示类或类分布
树的最顶层是根节点
算法:
寻找划分数据集的最好特征,划分数据集,创建分支点
对于划分的子集,递归上步
递归终止条件:所有子项属同一类或用完所有特征(使用多数表决分类)
四、优化
构造决策树很耗时:
→将分类器存储在硬盘上,使用Python中的pickle模块
处理连续性变量的属性:
→离散化
避免overfitting:
→先剪枝、后剪枝
五、算法比较
C4.5(gain ratio)
CART(gain index)
ID3(信息增益)
异:属性选择度量方法不同
同:都是贪心算法,自上而下
六、实现代码地址
https://code.csdn.net/snippets/2602934.git