决策树算法

目录

​​决策树算法    1 ​​

​​1    算法介绍    2​​

​​2    适用场景    2​​

​​3    方法步骤(案例)    3​​

​​3.1    计算公式    3​​

​​3.2    建立方法    3​​

​​3.3    采用量化方法划分数据    4​​

​​3.4    决策树的剪枝    4​​

​​3.5    应用案例    4​​

​​4    代码实现    5​​

​​5    发展    6​​

​​5.1    ID3算法    6​​

​​5.2    C4.5算法    7​​

​​5.3    CART算法    8​​

​​5.4    CHAID算法    8​​

​​5.5    MARS算法    8​​

​​6    不足    8​​

​​6.1    对连续性的字段比较难预测。    8​​

​​6.2    对有时间顺序的数据,需要很多预处理的工作。    8​​

​​6.3    当类别太多时,错误可能就会增加的比较快。    8​​

​​6.4    一般的算法分类的时候,只是根据一个字段来分类。    8​​

​​7    参考    9​​

 

 

 

算法介绍

决策树(Decision tree)是一个预测模型;他代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的属性值,而每个叶结点则对应从根节点到该叶节点所经历的路径所表示的对象的值。决策树仅有单一输出,若欲有复数输出,可以建立独立的决策树以处理不同输出。 数据挖掘中决策树是一种经常要用到的技术,可以用于分析数据,同样也可以用来作预测。

从数据产生决策树的机器学习技术叫做决策树学习,通俗说就是决策树。

一个决策树包含三种类型的节点:

决策点:是对几种可能方案的选择,即最后选择的最佳方案。如果决策属于多级决策,则决策树的中间可以有多个决策点,以决策树根部的决策点为最终决策方案。通常用矩形框来表式。

状态节点:代表备选方案的经济效果(期望值),通过各状态节点的经济效果的对比,按照一定的决策标准就可以选出最佳方案。由状态节点引出的分支称为概率枝,概率枝的数目表示可能出现的自然状态数目每个分枝上要注明该状态出现的概率,状态节点也叫机会节点,通常用圆圈来表式。

结果节点,将每个方案在各种自然状态下取得的损益值标注于结果节点的右端,也称终结点,通常用三角形来表示。

示例图如下:

s

适用场景

由于决策树算法以及变种算法应用非常广泛,普遍应用于各种不同的需要进行决策或分类等的领域中,不再做具体举例。

方法步骤(案例)


  1. 计算公式


Entropy = 系统的凌乱程度,使用算法ID3, C4.5和C5.0生成树算法使用熵。这一度量是基于信息学理论中熵的概念。

建立方法

以资料母群体为根节点。

作单因子​​变异数分析​​等,找出变异量最大的变项作为分割准则。(决策树每个叶节点即为一连串法则的分类结果。)

若判断结果的正确率或涵盖率未满足条件,则再依最大变异量条件长出分岔。

决策树法的决策程序如下:

(1)绘制树状图,根据已知条件排列出各个方案和每一方案的各种自然状态。

(2)将各状态概率及损益值标于概率枝上。

(3)计算各个方案期望值并将其标于该方案对应的状态结点上。

(4)进行剪枝,比较各个方案的期望值,并标于方案枝上,将期望值小的(即劣等方案剪掉)所剩的最后方案为最佳方案。

绘制方法:

决策树由决策结点、机会结点与结点间的分枝连线组成。通常,人们用方框表示决策结点,用圆圈表示机会结点,从决策结点引出的分枝连线表示决策者可作出的选择,从机会结点引出的分枝连线表示机会结点所示事件发生的概率。

在利用决策树解题时,应从决策树末端起,从后向前,步步推进到决策树的始端。在向前推进的过程中,应在每一阶段计算事件发生的期望值。需特别注意:如果决策树所处理问题的计划期较长,计算时应考虑资金的时间价值。

计算完毕后,开始对决策树进行剪枝,在每个决策结点删去除了最高期望值以外的其他所有分枝,最后步步推进到第一个决策结点,这时就找到了问题的最佳方案。

采用量化方法划分数据

如果数据存在多个特征,如何根据数据的特征就数据进行最佳分类?其中最大的原则就是:将无序的数据变得更加有序。那么这些无序的数据(或称为信息)如何进行度量划分呢或者称为如何进行量化呢?这要用到信息论的部分知识,信息论是处理量化信息的分支科学。我们可以再划分数据集之前后之后使用信息论进行量化度量信息的内容。

在划分数据集之前或之后信息发生的变化称为信息增益,获得信息增益最高的特征就是最好的数据集划分选择。

决策树的剪枝

剪枝是决策树停止分支的方法之一,剪枝有分预先剪枝和后剪枝两种。预先剪枝是在树的生长过程中设定一个指标,当达到该指标时就停止生长,这样做容易产生"视界局限",就是一旦停止分支,使得节点N成为叶节点,就断绝了其后继节点进行"好"的分支操作的任何可能性。不严格的说这些已停止的分支会误导学习算法,导致产生的树不纯度降差最大的地方过分靠近根节点。后剪枝中树首先要充分生长,直到叶节点都有最小的不纯度值为止,因而可以克服"视界局限"。然后对所有相邻的成对叶节点考虑是否消去它们,如果消去能引起令人满意的不纯度增长,那么执行消去,并令它们的公共父节点成为新的叶节点。这种"合并"叶节点的做法和节点分支的过程恰好相反,经过剪枝后叶节点常常会分布在很宽的层次上,树也变得非平衡。后剪枝技术的优点是克服了"视界局限"效应,而且无需保留部分样本用于交叉验证,所以可以充分利用全部训练集的信息。但后剪枝的计算量代价比预剪枝方法大得多,特别是在大样本集中,不过对于小样本的情况,后剪枝方法还是优于预剪枝方法的。

 

应用案例

为了适应市场的需要,某地准备扩大电视机生产。市场预测表明:产品销路好的概率为0.7;销路差的概率为0.3。备选方案有三个:第一个方案是建设大工厂,需要投资600万元,可使用10年;如销路好,每年可赢利200万元;如销路不好,每年会亏损40万元。第二个方案是建设小工厂,需投资280万元;如销路好,每年可赢利80万元;如销路不好,每年也会赢利60万元。第三个方案也是先建设小工厂,但是如销路好,3年后扩建,扩建需投资400万元,可使用7年,扩建后每年会赢利190万元。

各点期望:

点②:0.7×200×10+0.3×(-40)×10-600(投资)=680(万元)

决策树分析

决策树分析[6]

点⑤:1.0×190×7-400=930(万元)

点⑥:1.0×80×7=560(万元)

比较决策点4的情况可以看到,由于点⑤(930万元)与点⑥(560万元)相比,点⑤的期望利润值较大,因此应采用扩建的方案,而舍弃不扩建的方案。把点⑤的930万元移到点4来,可计算出点③的期望利润值。

点③:0.7×80×3+0.7×930+0.3×60×(3+7)-280 = 719(万元)

最后比较决策点1的情况。由于点③(719万元)与点②(680万元)相比,点③的期望利润值较大,因此取点③而舍点②。这样,相比之下,建设大工厂的方案不是最优方案,合理的策略应采用前3年建小工厂,如销路好,后7年进行扩建的方案。

代码实现

决策树的要点在于分类,将数据进行正确的分割,如果当前分支不能满足需要,则需要重新进行划分数据集合,直到所有的具有相同类型的数据均在一个子集中,这个过程称为构建决策数,以下为创建分支(createBranch的伪代码实现:

if so return 类标签

else

    寻找划分数据集的最好特征

划分数据集

创建分支节点

    For 每一个划分的子集

        调用创建分支函数(createBranch)并增加返回结果到分支节点中

    Return 分支节点

 

发展


  1. ID3算法


ID3算法(Iterative Dichotomiser 3 迭代二叉树3代)是一个由Ross Quinlan发明的用于决策树的算法。

算法描述:

 

这个算法是建立在奥卡姆剃刀的基础上:越是小型的决策树越优于大的决策树(简单理论)。尽管如此,该算法也不是总是生成最小的树形结构。而是一个启发式算法。奥卡姆剃刀阐述了一个信息熵的概念:

这个ID3算法可以归纳为以下几点:

使用所有没有使用的属性并计算与之相关的样本熵值

选取其中熵值最小的属性

生成包含该属性的节点

 

C4.5算法

由于ID3算法在实际应用中存在一些问题,于是Quinlan提出了C4.5算法,严格上说C4.5只能是ID3的一个改进算法。

C4.5算法继承了ID3算法的优点,并在以下几方面对ID3算法进行了改进:

1) 用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足;

2) 在树构造过程中进行剪枝;

3) 能够完成对连续属性的离散化处理;

4) 能够对不完整数据进行处理。

C4.5算法有如下优点:产生的分类规则易于理解,准确率较高。其缺点是:在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效。此外,C4.5只适合于能够驻留于内存的数据集,当训练集大得无法在内存容纳时程序无法运行。

具体算法步骤如下;

1创建节点N

2如果训练集为空,在返回节点N标记为Failure

3如果训练集中的所有记录都属于同一个类别,则以该类别标记节点N

4如果候选属性为空,则返回N作为叶节点,标记为训练集中最普通的类;

5for each 候选属性 attribute_list

6if 候选属性是连续的then

7对该属性进行离散化

8选择候选属性attribute_list中具有最高信息增益率的属性D

9标记节点N为属性D

10for each 属性D的一致值d

11由​​节点​​N长出一个条件为D=d的分支

12设s是训练集中D=d的训练样本的集合

13if s为空

14加上一个树叶,标记为训练集中最普通的类

15else加上一个有C4.5(R - {D},C,s)返回的点

 

CART算法

含分类树与回归树。

CHAID算法

CHi-squared Automatic Interaction Detector在生成树的过程中用多层分裂.

MARS算法

可以更好的处理数值型数据

不足


  1. 对连续性的字段比较难预测。



  2. 对有时间顺序的数据,需要很多预处理的工作。



  3. 当类别太多时,错误可能就会增加的比较快。



  4. 一般的算法分类的时候,只是根据一个字段来分类。


 

 

参考

百度百科:​​http://baike.baidu.com/view/589872.htm?fr=aladdin​

Wiki百科: ​​http://zh.wikipedia.org/wiki/%E5%86%B3%E7%AD%96%E6%A0%91​

《机器学习实战》 决策树