1、简介
决策树学习是一种逼近离散值目标函数的方法,在统计学、数据挖掘、机器学习等领域都有应用。利用已有的数据样例集合,学习构造一颗决策树,便于以后预测目标数据的取值(比如分类时的类别等),这种决策树有时也被称作类别树或回归树。
2、决策树表示
决策树通过把实例从根节点排列到某个叶子节点来分类实例,叶子节点即为实例所属的分类。
下图画出了一颗典型的学习到的决策树,这棵树根据天气情况分类“是否打网球”。
比如:下面的实例将被沿着这可决策树的最左分支向下排列,因而被判定为反例。
<Outlook = Sunny,Temperature = Hot,Humidity = High,Wind = Strong>
通常决策树代表实例属性值约束合取的析取式,这种形式如(a ^ b ^ c) v(a ^ ~b ^ ~c ),上图表示的决策树对应于以下表达式:
3、基本的决策树学习算法
目前决策树算法已经形成了很多种,比较有代表性的是ID3和C4.5算法,下面给出的基本算法相当于ID3算法的一个概要,ID3算法是通过自顶向下构造决策树来进行学习的。在构造的过程中需要决定当前需要用哪个属性来进行树的分支?通过设计好的分支策略,重复各属性的分支算法,直到构造完毕,以下是一个ID3算法学习布尔函数的版本:
3.1 最佳属性的确定
ID3算法的核心问题是选取在树的每个节点要测试的属性,我们希望能够选取最有助于实例分类的属性,我们通过一个称为“信息增益”的量来衡量一个属性对于分类的价值。
在介绍信息增益之前有必要了解信息论中的熵,它刻画了任意样例集的纯度,如下表示:
其中:E(s)就是集合s 的熵,fs(j)是集合中取值为j的概率或频率,n是s中可以取的可能值的个数。
在熵的基础上,引进信息增益Gain(S,A),简写为G(S,A)的定义:
其中:G(S,A)为属性A对于集合S的信息增益,E(S)为集合S的信息熵,f_s(A_i)是指属性A的值等于A_i的子集大小占集合S大小的比率,m表示属性A可以取m个不同的值,E(A_i)表示属性A = A_i的子集的熵。
信息增益越大的属性对于决策分类越有帮助,所以,在决策树的构造过程中,优先选择信息增益大的属性。
3.2 举例
如下样例集合表:
我们计算出四个属性的信息增益分别为:
G(S,outlook) = 0.246
G(S,Humidity) =0.151
G(S,Wind) = o.o48
G(S,temperature) = 0.029
因为Outlook具有最大的信息增益,所以选outlook属性作为根节点构造树,如下图:
下一步在每个分支中重复进行上面的步骤,比如在Sunny分支中,选取S中所有outlook = sunny 的子集作为新的s,然后依次计算剩下3中属性的信息增益,继续构造剩下的树,如前面ID3算法描述。
4、决策树知识补充
ID3算法中的假设空间包含所有的决策树,当遍历决策树空间时,ID3仅维护单一的当前假设,基本的ID3算法在搜索中不进行回溯,且使用了所有的训练实例,大大降低了对于个别样例错误的敏感性。
ID3归纳偏置的近似:
较短的树比较长的树优先,那些信息增益高的属性更靠近根节点的树优先。
决策树学习的一个常见问题是避免过度拟合,这种情况发生的一种可能的原因就是训练样例含有随机错误或者噪声。
对于基本的ID3算法,现在已经开发了大量的扩展,包括处理实数的属性、容纳缺少属性值的训练样例、使用信息增量的其他度量来选取属性。
参考网址:
http://en.wikipedia.org/wiki/ID3_algorithm
http://en.wikipedia.org/wiki/Decision_tree_learning
http://www.cise.ufl.edu/~ddd/cap6635/Fall-97/Short-papers/2.htm
(
本文参考Mitchell的《机器学习》第三章,是为读书笔记)