一、简介
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.0和C4.5算法的对比:
1)都是通过计算信息增益率来划分结点,两者的共同
2)C5.0算法通过构造多个C4.5算法,是一种boosting算法。准确率更高
3)C5.0算法运行速度快,可以出来例如,C4.5需要9个小时找到森林的规则集,但C5.0在73秒完成了任务。
4)C5.0运行内存小。C4.5需要超过3 GB.(工作不会对早些时候完成32位系统),但C5.0需要少于200 mb。
5)C5.0可以处理较大的数据集,特征可以是:数字,时间,日期,名义字段
6)C5.0可以加入惩罚项,(也就是第2条中boosting过程)