转载请注明作者和出处:http://blog.youkuaiyun.com/u013829973
系统版本:window 7 (64bit)
文章中的完整代码在我的GitHub:https://github.com/weepon
python版本:python 3.5
1、 决策树
决策树(decision tree)是一种基本的分类与回归方法。在分类问题中,表示基于特征对实例进行分类的过程,它可以认为是if-then规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。决策树学习的经典算法:ID3,C4.5,CART
决策树的概念很简单,下图所示的流程图是一个简单的决策树
图1.1 流程图
其中,长方形代表判断模块(decision block),椭圆形成代表终止模块(terminating block),表示已经得出结论,可以终止运行。从判断模块引出的左右箭头称作为分支(branch),它可以达到另一个判断模块或者终止模块。用专业的术语讲,分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点(node)和有向边(directed edge)组成。结点有两种类型:内部结点(internal node)和叶结点(leaf node)。内部结点表示一个特征或属性,叶结点表示一个类。图中的决策树,长方形和椭圆形都是结点。长方形的结点属于内部结点,椭圆形的结点属于叶结点,从结点引出的左右箭头就是有向边。而最上面的结点就是决策树的根结点(root node)。
用决策树分类时,从根节点开始,对实例的某一特征进行测试,根据测试结果,将实例分配到其子节点;这时每一个子节点对应着该特征的一个取值。如此递归地对实例进行测试并分配,直至达到叶节点。最后将实例分到叶节点的类中。
使用决策树的一般流程:
- 收集数据:可以使用任何方法。
- 准备数据:对收集完的数据进行整理,注意:树构造算法只适用于标称型数据,因此数值型数据必须离散化。
- 分析数据:可以使用任何方法,决策树构造完成之后,我们可以检查决策树图形是否符合预期。
- 训练算法:这个过程也就是构造决策树,同样也可以说是决策树学习,就是构造一个决策树的数据结构。
- 测试算法:使用经验树计算错误率。
- 使用算法:此步骤可以使用适用于任何监督学习算法,而使用决策树可以更好地理解数据的内在含义。
2、 决策树的学习
通常,决策树的学习包括3个步骤:
- 特征选择
- 决策树的生成(只考虑局部最优)
- 决策树的剪枝(考虑全局最优)
2-1 特征选择
特征选择在于选取对训练数据具有分类能力的特征。这样可以提高决策树学习的效率,如果利用一个特征进行分类的结果与随机分类的结果没有很大差别,则称这个特征是没有分类能力的。经验上扔掉这样的特征对决策树学习的精度影响不大。通常特征选择的标准是信息增益或信息增益比。
2-1-1 信息增益
信息增益:在划分数据集之前之后信息发生的变化。知道如何计算信息增益,我们就可以计算每个特征值划分数据集获得的信息增益,获得信息增益最高的特征就是最好的选择。
首先看一下“熵”:
熵定义为信息的期望值。在信息论与概率统计中,熵是表示随机变量不确定性的度量。如果待分类的事务可能划分在多个分类之中,则符号 xi 的信息定义为
其中