机器学习实战---决策树

一、简介

1.什么是决策树

决策树算法是一种归纳分类算法,它通过对训练集的学习,挖掘出有用的规则,用于对新集进行预测。

1)决策树是附加概率结果的一个树状的决策图,是直观的运用统计概率分析的图法。

2)预测模型。表示对象属性和对象值之间的一种映射。树中的每一个节点表示对象属性的判断条件,其分支表示符合节点条件的对象。

3)树的叶子节点表示对象所属的预测结果。

2.如何构造决策树

构造一棵决策树要解决四个问题:

1)收集待分类的数据,这些数据的所有属性应该是完全标注的。

2)设计分类原则,即数据的哪些属性可以被用来分类,以及如何将该属性量化。

3)分类原则的选择,即在众多分类准则中,每一步选择哪一准则使最终的树更令人满意。

4)设计分类停止条件,实际应用中数据的属性很多,真正有分类意义的属性往往是有限几个,因此在必要的时候应该停止数据集分裂:

  • n该节点包含的数据太少不足以分裂,
  • n继续分裂数据集对树生成的目标(例如ID3中的熵下降准则)没有贡献,
  • n树的深度过大不宜再分。

通用的决策树分裂目标是整棵树的熵总量最小,每一步分裂时,选择使熵减小最大的准则,这种方案使最具有分类潜力的准则最先被提取出来

3.如果属性用完了怎么办

      在决策树构造过程中可能会出现这种情况:所有属性都作为分裂属性用光了,但有的子集还不是纯净集,即集合内的元素不属于同一类别。在这种情况下,由于没有更多信息可以使用了,一般对这些子集进行“多数表决”,即使用此子集中出现次数最多的类别作为此节点类别,然后将此节点作为叶子节点。

二、算法

1.算法流程

2.算法考虑的三个问题

  • 数据是怎么分裂的
  • 如何选择分类的属性
  • 什么时候停止分裂

 

3.ID3算法

1)ID3算法是以信息熵和信息增益作为衡量标准的分类算法。

  • 信息熵(Entropy):熵的概念主要是指信息的混乱程度,变量的不确定性越大,熵的值也就越大
  • 信息增益(Information gain):信息增益指的是划分前后熵的变化

 ID3算法就是在每次需要分裂时,计算每个属性的增益,然后选择增益最大的属性进行分裂。

2)例子

      

3)停止分裂条件

a)最小节点数

  当节点的数据量小于一个指定的数量时,不继续分裂。两个原因:一是数据量较少时,再做分裂容易强化噪声数据的作用;二是降低树生长的复杂性。提前结束分裂一定程度上有利于降低过拟合的影响。

b)熵或者基尼值小于阀值。

     由上述可知,熵和基尼值的大小表示数据的复杂程度,当熵或者基尼值过小时,表示数据的纯度比较大,如果熵或者基尼值小于一定程度时,节点停止分裂。

c)决策树的深度达到指定的条件

   节点的深度可以理解为节点与决策树跟节点的距离,如根节点的子节点的深度为1,因为这些节点与跟节点的距离为1,子节点的深度要比父节点的深度大1。决策树的深度是所有叶子节点的最大深度,当深度到达指定的上限大小时,停止分裂。

d)所有特征已经使用完毕,不能继续进行分裂。

 

4.C4.5算法

1)简介

2)例子

    

C4.5处理离散型属性的方式与ID3一致,新增对连续型属性的处理。处理方式是先根据连续型属性进行排序,然后采用一刀切的方式将数据砍成两半。

2)剪枝

决策树只已经提到,剪枝是在完全生长的决策树的基础上,对生长后分类效果不佳的子树进行修剪,减小决策树的复杂度,降低过拟合的影响。

  • 先剪枝说白了就是提前结束决策树的增长,跟上述决策树停止生长的方法一样。
  • 后剪枝是指在决策树生长完成之后再进行剪枝的过程。

 

5.C5.0算法

C5.0算法是在C4.5算法的基础上提出的C5.0C4.5算法的对比:

1)都是通过计算信息增益率来划分结点,两者的共同

2)C5.0算法通过构造多个C4.5算法,是一种boosting算法。准确率更高

3)C5.0算法运行速度快,可以出来例如,C4.5需要9个小时找到森林的规则集,C5.073秒完成了任务。

4)C5.0运行内存小。C4.5需要超过3 GB.(工作不会对早些时候完成32位系统),C5.0需要少于200 mb

5)C5.0可以处理较大的数据集,特征可以是:数字,时间,日期,名义字段

6)C5.0可以加入惩罚项,(也就是第2条中boosting过程)

猜你喜欢

转载自blog.csdn.net/github_37002236/article/details/83246188