决策树

 

注:本文是《Mitchell机器学习》《JiaweiHan数据挖掘概念与技术》的学习笔记

 

概览一

 

1 决策树就是实例属性值约束的合取的析取式。从树根到树叶的每一条路径对应一组属性测试的合取,树本身对应这些合取的析取。

2 决策树建立时,使用统计测试来确定每一个实例属性单独分类训练样例的能力,在每个结点选取能最好地分类样例的属性,且从不回溯重新考虑以前的选择。因此,决策树学习是一个自顶向下的贪婪搜索算法。

3 每一步都使用统计测试使决策树学习对错误有很好的健壮性。

4 决策树学习的假设空间包含所有的决策树,它是关于现有属性的有限离散值函数的一个完整空间。每个有限离散值函数都可被表示为某个决策树。因此,决策树学习(ID3)的归纳偏置来自它的搜索策略,即较短的树比较长的树优先,信息增益高的属性更靠近根结点的树优先。这种类型的偏置称为优选偏置或搜索偏置。而候选消除算法的归纳偏置来自它对搜索空间的定义,被称为限定偏置或语言偏置。

5 奥坎姆剃刀:优先选择拟合数据的最简单假设。

一个解释:

       找到一个短的但同时与训练数据拟合的假设的可能性较小,不太可能是统计巧合。

两个难题:

I.               根据什么相信短描述的决策树组成的小假设集合比其它众多可定义的小假设集合更适当?

II.            假设的大小由学习器内部使用的特定表示决定。不同的内部表示方式,据奥坎姆剃刀产生两个不同的假设。

处理不同代价属性

使属性代价参与属性选择度量,如将信息增益除以属性代价。这在考虑获取属性的不同代价的现实条件时是很有用处的。

 

 

概览二

 

1 在决策树归纳分类之前,假设数据是预处理过的。不可忽略地,这其中包括数据清理,相关分析,数据变换与归约。具体实现及方法另述。

2 (离散)分类和(数值)预测是预测问题的两种主要类型,决策树一般用于分类。

3 归纳决策树时对于树的每一层都需要扫描一遍D中的元组,因此算法的计算复杂度为O(n*|D|*log|D|)

决策树归纳的scalability

1SLIQ使用若干驻留磁盘的属性列表和单个驻留内存的类列表

2SPRINT使用另一种属性列表,易于并行,消除了所有内存限制,但需要正比于训练集的散列树。

3RainForest对每个属性维护一个AVC(属性--类)集,可以选择任何属性度量。

4BOAT使用称作bootstrap的统计学技术,从子集构造多棵树后合并构造接近于真实树的新树。可使用二元分裂的属性选择度量,如Gini指标。只需扫描训练集两次,可以增量更新。


综述

 

1 属性选择度量:信息增益(ID3使用)

I (entropy)刻画了任意样例集的纯度,熵值越大表示越不纯,识别其中元组分类所需要的平均信息量就越大。公式如下:

       熵的最大可能为logc。信息论中熵的一种解释是,确定要编码集合S中任意成员的分类所需要的最少二进制位数。所以底数都是2

 

       II 信息增益Gain(S,A)有几种解释:

由于知道属性A的值而导致的期望熵减少;

原来的信息需求与新的需求的差,即信息需求的期望减少。

              公式如下,第二项描述的是每个子集的熵的加权和:

2 属性选择度量:增益率(C4.5使用)

       I 信息增益度量存在一个内在偏置,它偏袒具有较多值的属性。

       II 分裂信息:S关于属性A的各值的熵,用来衡量属性分裂数据的广度和均匀性,惩罚可取较多值的属性。公式如下:

       III 增益率: 

 

       IV 增益率存在的问题:当Si约等于S时,分裂信息趋向于0GainRatio变得不稳定。可以先计算每个属性的增益,仅对增益高过平均值的属性应用增益比率测试。

3 属性选择度量:Gini指标(CART使用)

       I Gini指标度量数据划分或训练元组集D的不纯度,如下,其中pi=|C(i,D)|/|D|

       II 只考虑属性的二元划分。因此对于有v个值的属性A,存在2^v-2中划分。从中选择该属性产生最小Gini指标的子集作为分裂子集。

       III 对连续值属性,考虑每对(排序的)相邻值之间的中点取作可能的分裂点。可以证明,产生最大信息增益的分裂点必定位于这样的边界中。

4 树剪枝

(1) 当数据中有噪声或训练样例的数量太少时,决策树归纳算法会出现过度拟合。另外决策树可能很大,很复杂,难以理解。因此需要修剪决策树。

(2) 两种常用的剪枝方法:先剪枝(即提前停止树增长),后剪枝。对于前者,精确地估计何时停止树增长非常困难,一般进行统计测试来估计扩展一个特定的节点是否可能改善质量,如用卡方测试统计显著性,另外可以使用信息增益,Gini指标及预定义的阈值。后剪枝更常用。

(3) 代价复杂度后剪枝(CART使用)。代价复杂度是树叶结点个数与错误率的函数,使用与训练和测试集合完全不同的修剪验证集合来评估。

(4) 悲观剪枝(C4.5使用)。不需要剪枝集,使用训练集评估错误率,但是假定此估计精度为二项分布,计算标准差,对于一个给定的置信区间,采用下界来估计错误率。虽然这种启发式方法不是统计有效的,但是它在实践中是有效的。

(5) 规则后修剪。将决策树转化为等价的IF-THEN规则,如何提取另述,并尝试修剪每个规则的每个前件(preconditions)。这样的好处是使对于决策树上不同的路径,关于一个属性测试的修剪决策可以不同。另外避免了修剪根结点后如何组织其子节点的问题。

(6) 以明确的标准来衡量训练样例和决策树的复杂度,如最小描述长度准则(MDL),而不是根据估计的错误率。

 

问题:

1 关于奥坎姆剃刀的第II个难题,进化产生的内部表示使得学习算法的归纳偏置成为seft-fulfilling prophecy。只因为它改变内部表示比改变学习算法更容易。推理中尽是假设?进化何以成立?

2 证明决策树学习的时间复杂度为On*|D|*log|D|)?

3 信息论中的熵?

4 为什么Gini指标只能用作二元划分?

5 证明产生最大信息增益的分裂点必定位于相邻值之间的中点中?

6 MDL准则如何用于树剪枝?

 

posted @ 2011-01-25 16:15  zhaoqian  阅读(9212)  评论(0编辑  收藏  举报