决策树学习(ID3,C4.5)

简介
决策树学习是一种逼近离散值目标函数的方法,在这种方法中学习到的函数被表示成一颗决策树。是归纳推理算法之一,已经被成功的应用到从学习医疗诊断到学习评估贷款申请的信用风险的广阔领域。下面通过一个例子来简单说明一下决策树学习。
小丽认识一个男网友,在考虑要不要跟他见面。然后请好朋友来参考:
好朋友:他的年龄是多大?
小   丽:25岁。
好朋友:长的怎么样?
小   丽:帅。
好朋友:收入高不?
小   丽:中等情况。
好朋友:是公务员不?
小   丽:嗯。
好朋友:那可以。

好朋友给小丽决策的过程就是典型的决策树学习。通过这些条件将其分为见还是不见。


决策树表示法
决策树通过把实例从根节点排列到某个叶子节点来分类实例,叶子结点即为实例所属的分类。下图中画出了一棵典型的学习到的决策树。根据天气情况来分类“星期六是否适合打网球”。例如下面这个实例将被判定为反例,即PlayTennis=No。
决策树学习(ID3,C4.5)_第1张图片
决策树学习的适用问题
通常决策树学习最适合具有以下特征的问题:
  • 实例是由“属性-值”对表示的:实例是用一系列固定的属性和它们的值构成,例如Temperature=Hot;最简单的决策树学习,每一个属性取少数的离散的值,但扩展d算法也允许处理值域为实数的属性
  • 目标函数具有离散的输出值:例如上图给每个实例赋予一个布尔型的分类,yes or no;
  • 可能需要析取的描述
  • 训练数据可以包含错误
  • 训练数据可以包含缺少属性值的实例
基本的决策树学习算法(ID3算法)
基本的ID3算法通过自顶向下构造决策树来进行学习。构造过程是从“哪一个属性将在根节点被测试?”这个问题开始的。
我们使用分类能力最好的属性被选作树的根节点来测试,然后为根节点属性的每个可能值产生一个分支,并把训练样例排列到适当的分支之下,然后重复整个过程。
1、哪个属性是最佳的分类属性
ID3算法在增长书的每一步使用“信息增益”标准从候选属性中选择属性。为了精确的定义信息增益,我们先来定义信息论中广泛使用的一个度量标准,
它刻画了任意样例集的纯度,给定包含关于某个目标概念的正反样例的样例集S,那么S相对这个布尔型分类的熵为:

其中,p+为正例的比例,p-为反例的比例。举例说明,假设S是关于某布尔概念的有14个样例的集合,包括9个正例和5个反例,即[9+,5-]。那么S的熵为:

至此,我们讨论了目标分类是布尔型的情况下的熵。更一般的,如果目标属性具有c个不同的值,那么定义为i:

信息增益
一个属性的信息增益就是由于使用这个属性分隔样例而导致的期望熵降低。具体的定义为:

例如:假定S是关于天气的训练样例,描述它的属性可具有Weak和Strong两个值的wind,包含14个样例[9+,5-]。在这14个样例中,假定正例中的6个和反例中的2个有Wind=Weak,其他的有Wind=Strong。对于这个例子,其信息增益计算为:
决策树学习(ID3,C4.5)_第2张图片
信息增益是ID3算法中每一步选取最佳属性的度量标准
决策树学习的常见问题
包括:确定决策树增长的深度;处理连续值的属性;选择一个适当的属性筛选度量标准;处理属性值不完整的训练数据;处理不同代价的属性;提高计算效率。事实上,为了解决大多数问题,ID3已经被扩展为C4.5。
1、避免过度拟合数据
通俗的讲,过度拟合是这样一种现象,一个假设在训练数据上能够获得比其他假设更好的拟合,但是在实例的整个分布(也就是训练数据外的数据集)上却不能更好的拟合数据,我们就说这个假设过渡拟合训练样例。出现这种现象的主要原因是训练数据中存在噪音或者训练数据太少。
解决这个问题的途径主要有两类:及早停止树增长或者后修剪法。 后修剪法在实践中更成功,因为第一种方法精确的估计何时停止树增长很困难。
关于过度拟合更详细的介绍,可以参考另一个博文。
2、合并连续值属性
我们最初定义ID3限制为取离散值的属性,但对于连续值属性,我们可以通过动态的定义新的离散值属性来实现。例如,对于连续值的属性A,可动态的创建一个新的布尔属性F,如果A
我们现在需要解决的问题就是如何选取最佳的阀值c。
3、属性选择的其他度量标准
信息增益度量存在一个偏置,它偏袒具有较多值的属性。
在选择决策属性的时候,可以通过使用其他度量而不是信息增益来解决这个不足。 增益比率是一个很好的选择(这也是C4.5的一个核心)。一般来说率就是用来取平衡用的,就像方差起的作用差不多,比如有两个跑步的人,一个起点是10m/s的人、其10s后为20m/s;另一个人起速是1m/s、其1s后为2m/s。如果紧紧算差值那么两个差距就很大了,如果使用速度增加率(加速度,即都是为1m/s^2)来衡量,2个人就是一样的加速度。因此,用这个就能克服了ID3用信息增益选择属性时偏向选择取值多的属性的不足。
增益比率通过加入一个被称作分裂信息的项来衡量属性分裂数据的广度和均匀性。

其中S1到Sc是c个值的属性A分割S而形成的c个样例子集。注意分裂信息实际上就是S关于属性A的各值的熵。这与我们前面对熵的使用不同,在那里我们只考虑S关于学习到的树要预测的目标属性的值的熵。
所以增益比率就可以用前面的信息增益+分裂信息来共同定义:

使用增益比率代替增益来选择属性产生的一个实际问题是,当某个Si接近S(|Si|»|S|)时分母可能为0或非常小。如果某个属性对于S的所有样例有几乎同样的值,这时要么导致增益比率未定义,要么是增益比率非常大。为了避免选择这种属性,我们可以采用这样一些启发式规则,比如先计算每个属性的增益,然后仅对那些增益高过平均值的属性应用增益比率测试。
4、处理缺少属性值的训练样例
在某些情况下,可供使用的数据可能缺少某些属性的值。
处理缺少属性值的一种策略是赋给它节点n的训练样例中该属性的最常见值。另一种策略是可以赋给它节点n的被分类为c(x)的训练样例中该属性的最常见值。然后使用这个估计值的训练样例就可以被现有的决策树学习算法使用了。
第二种更复杂的策略是为A的每个可能值赋予一个概率,而不是简单的将最常见的值赋给它。根据节点n的样例上A的不同值的出现概率,这些概率可以被再次估计。C4.5使用这种方法来处理缺少的属性值。




你可能感兴趣的:(机器学习)