决策树
1.目标
决策树的目标是根据给定的训练数据集构建一个决策树模型,使它能够对未知数据类型的数据进行 正确分类,其中输入数据的格式为:
其中 xi=(x(1)i,x(2)i,...,x(n)i) 为输入实例(特征向量),n为特征个数 yi 为类标记。
2决策树模型
我们在理解过程中实际上可以将决策树看作程序中的一组if-then规则的集合,也就是说从决策树的根节点到叶子节点的一条路径就标示决策树判断的一条完整的集合,其中每一条路径都对应着多个if-then条件。
从另一方面理解还可以把决策树理解为对特征空间的划分,根据概率条件将特征空间划分为一个互不相交的区域
举个通俗的例子(该例子引用于http://www.cnblogs.com/leoo2sk/archive/2010/09/19/decision-tree.html)
决策树分类的思想类似于找对象。现想象一个女孩的母亲要给这个女孩介绍男朋友,于是有了下面的对话:
决策树分类的思想类似于找对象。现想象一个女孩的母亲要给这个女孩介绍男朋友,于是有了下面的对话:
女儿:多大年纪了?
母亲:26。
女儿:长的帅不帅?
母亲:挺帅的。
女儿:收入高不?
母亲:不算很高,中等情况。
女儿:是公务员不?
母亲:是,在税务局上班呢。
女儿:那好,我去见见。
这个女孩的决策过程就是典型的分类树决策。相当于通过年龄、长相、收入和是否公务员对将男人分为两个类别:见和不见。假设这个女孩对男人的要求是:30岁以下、长相中等以上并且是高收入者或中等以上收入的公务员,那么这个可以用下图表示女孩的决策逻辑(声明:此决策树纯属为了写文章而YY的产物,没有任何根据,也不代表任何女孩的择偶倾向,请各位女同胞莫质问我^_^):
上图完整表达了这个女孩决定是否见一个约会对象的策略,其中绿色节点表示判断条件,橙色节点表示决策结果,箭头表示在一个判断条件在不同情况下的决策路径,图中红色箭头表示了上面例子中女孩的决策过程。
这幅图基本可以算是一颗决策树,说它“基本可以算”是因为图中的判定条件没有量化,如收入高中低等等,还不能算是严格意义上的决策树,如果将所有条件量化,则就变成真正的决策树了。
有了上面直观的认识,我们可以正式定义决策树了:
决策树(decision tree)是一个树结构(可以是二叉树或非二叉树)。其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。
3 决策树特征选择
为了能提高决策树的学习效率,特征选择是决策树中需要解决的一个比较重要的问题,不同的特征选择方案可以构造不同的决策树,对于分类能力较为弱的特征理论上可以将其丢弃。为了能够选择出合理的特征,学术上提出了ID3, C4.5等算法。
首先介绍一下信息增益
熵(entropy)是表示随机变量不确定性的度量,设
X
是一个取有限个值的离散随机变量,其概率可以表示为:
则随机变量 X 的熵定义为:
从公式可以看出,熵越大表示随机变量的不确定性越大。
信息增益:记特征A对训练集D的信息增益 g(D,A) ,该信息增益被定义为集合D的信息增益 H(D) 与特征A给定的条件下D的经验条件熵H(D|A)的差。
ID3S算法
ID3算法的核心是在决策树各个节点上应用信息增益准则选择特征,采用递归的方法构造决策树。具体的方法是:从根节点开始,计算所有可能特征的信息增益,选择信息增益最大的特征作为节点的特征,由该特征的不同取值建立子节点;再对子节点递归的调用以上方法,构造决策树。
算法
输入:训练数据集D,特征集A,阈值
ϵ
输出:决策树T
(1)若D中所有实例属于同一类
Ck
,则T为单节点树,并将类
Ck
作为该节点的类标记,返回T;
(2)若
A≠∅
,则T为单节点树,并将D中实例数最大的
Ck
作为该节点类标记。返回T;
(3)否则,按照计算计算信息增益的方法计算信息增益,选择信息增益最大的特征
Ag
;
(4)如果
Ag
的信息增益小于阈值
ϵ
,则置T为单节点树,并将D中实例数最大的类
Ck
作为该节点的类标记,返回T;
(5)否则,对
Ag
的每一可能值
ai
,依
Ag=ai
将D分割为若干非空子集
Di
,将
Di
中实例数最大类作为标记,构建子节点,由节点及子节点构成树T,返回T;
(6)对第i个子节点,以
Di
为训练集,以$A-{A_g}为特征集,递归地电泳上述步骤,得到子树。