机器学习 -- 决策树算法

1. 决策树

决策树是附加几率结果的一个树状的决策图,是直观地运用统计几率分析的图法。机器学习中决策树是一个预测模型,它表示对象属性和对象值之间的一种映射,树中的每个节点表示对象属性的判断条件,其分支表示符合节点条件的对象。树的叶子节点表示对象所属的预测结果。html

1.1 决策树的案例

通俗来讲,决策树分类的思想相似于找对象。现想象一个女孩的母亲要给这个女孩介绍男友,这个女孩的决策是否去见面的过程就是典型的分类树决策。经过年龄、长相、收入和是否公务员对决策结果分为两个类别:见和不见。假设这个女孩对男人的要求是:30岁如下、长相中等以上而且是高收入或中等收入的公务员,那么能够用下图表示女孩的决策逻辑:算法

这幅图基本能够算是一颗决策树,说它基本能够算,是由于图中的判断条件没有量化,如收入高中低等等,不能算是严格意义上的决策树,若是将全部条件量化,则变成真正的决策树了。机器学习

1.2 决策树创建

选择一个合适的特征做为判断节点,能够快速地分类,减小决策树的深度。决策树的目标就是把数据集按对应的类标签进行分类。最理想的状况是,经过特征的选择能把不用类别的数据集贴上对应类标签。特征选择的目标使得分类后的数据集比较纯。如何衡量一个数据集纯度,这里须要引入数据纯度函数。信息熵是能够表示数据纯度的函数。函数

1.3 决策树的算法

构造决策树的关键性内容是进行属性选择度量,属性选择度量是一种选择分裂准则,是将给定的类标记的训练集合的数据划分。属性选择度量算法不少,通常使用自顶
而下递归分治法,并采用不回溯的贪心策略。这里介绍ID3和C4.5算法。学习

1.3.1 ID3算法

信息增益spa

信息熵表示的是不肯定度。均匀分布时,不肯定度最大,此时熵最大。当选择某个特征对数据集进行分类时,分类后的数据集信息熵会比分类前的小,其差值表示为信息增益。信息增益能够衡量某个特征对分类结果的影响大小。.net

假设在样本数据集D中,混有C中类别的数据。构建决策树时,根据给定的样本数据集选择某个特征值做为树的节点。在数据集中,能够计算出该数据的信息熵:日志

其中D表示训练数据集,m表示数据类别数,Pi表示类别i样本数量占全部样本的比例。htm

对应数据集D,选择特征A做为决策树判断节点时,在特征A做用后的信息熵为InfoA(D),计算以下:对象

而信息增益即为二者的差值:

总结:对于决策树节点最合适的特征选择,就是gain(A)值最大的特征。

ID3算法就是在每次须要分裂时,计算每一个属性的增益率,而后选择增益率最大的属性进行分裂。下面咱们继续用某社区不真实检测的例子说明如何使用ID3算法构造决策树。为了简单起见,咱们假设训练集合包含3个元素:

日志密度 好友密度 是否使用真实头像 帐号是否真实
s s no no
s l yes yes
l m yes yes
m m yes yes
l m yes yes
m l no yes
m s no no
l m no yes
m s no yes
s s yes no

其中,s、m、l分别表明小、中、大。 设L、F、H和R表示日志密度、好友密度、是否使用真实头像和帐号是否真实

该数据的信息熵 :

对应数据集D,选择特征日志密度做为决策树判断节点时,在特征日志密度做用后的信息熵为InfoL(D),计算以下:

所以日志密度的信息增益是0.276:

用一样方法获得H和F的信息增益分别为0.033和0.553。

所以F具备最大的信息增益,因此第一次分裂选择F做为分裂属性,分裂后的结果以下图表示:

在上图的基础上,再递归使用这个方法计算子节点的分裂属性,最终就能够得出整棵决策树。

1.3.2 C4.5算法

ID3算法存在一个问题,就是偏向于多值属性,例如,若是存在惟一标识属性ID,则ID3会选择它做为分裂属性,这样虽然使得划分充分纯净,但这种划分对分类几乎毫无用处。ID3的后继算法C4.5使用增益率(gain ratio)的信息增益扩充,试图克服这个偏倚。

C4.5算法首先定义了"分裂信息",其定义能够表示成:

 其中各符号意义与ID3算法相同,而后增益率被定义为:

C4.5选择具备最大增益率的属性做为分裂属性,其具体应用与ID3相似,再也不赘述。

1.4 关于剪枝

在分类模型创建的过程当中,很容易出现过拟合的现象。过拟合是指在模型学习训练中,训练样本达到很是高的逼近精度,但对校验样本的逼近偏差随着训练次数而呈现先降低后上升的现象。过拟合时训练偏差很小,可是检验偏差很大,不利于实际应用。

决策树的过拟合现象能够经过剪枝进行必定的修复。剪枝分为预先剪枝和后剪纸两种。

预先剪枝指在决策树生长过程当中,使用必定条件加以限制,使得产生彻底拟合的决策树以前就中止生长。预先剪枝的判断方法也有不少,好比信息增益小于必定阈值的时候经过剪枝使决策树中止生长。但如何肯定一个合适的阈值也须要必定的依据,阈值过高致使模型拟合不足,阈值过低又致使模型过拟合。

后剪枝是咋决策树生长完成以后,按照自底向上的方式修剪决策树。后剪枝有两种方式,一种用新的叶子节点替换子树,该节点的预测类有子树数据集中的多数类决定。另外一种用子树中最常使用的分支替代子树。

总结:预先剪枝可能过早地终止决策树的生长,后剪枝通常可以产生更好的效果。可是后剪枝在子树被剪掉后,决策树生长的一部分计算就被浪费了。

 

 

 


 

 

 

参考:http://blog.csdn.net/nieson2012/article/details/51314873

参考:http://www.cnblogs.com/leoo2sk/archive/2010/09/19/decision-tree.html

相关文章
相关标签/搜索