决策树
决策树(decision tree)是一种基本的分类与回归方法。其主要有哦电视模型具有可读性,分类速度快。学习时,利用训练数据,根据损失函数最小化的原则建立决策树模型。预测时,对新的数据,利用决策树模型进行分类。决策树学习通常包含3个步骤:特征选择、决策树的生成和决策树的修剪。
5.1 决策树模型与学习
5.1.1 决策树模型
分类决策树模型时一种描述对实例进行分类的树形结构。决策树由节点(node)和有向边(directed edge)组成。结点有两种类型:内部结点(internal node)和叶结点(leaf node)。内部节点表示一个特征或属性,叶节点表示一个类。
5.1.2 决策树与if-then规则
决策树的路径或其对应的if-then规则集合具有一个重要的性质:互斥且完备。这就是说,每一个实例都被一条路径或一条规则所覆盖,而且只被一条路径或一条规则所覆盖。这里所谓覆盖是指实例的特征与路径上的特征一致或实例满足规则的条件。
5.1.3 决策树与条件概率分布
决策树还表示给定特征条件下类的条件概率分布。
各叶结点(单元)上的条件概率往往偏向某一个类,即属于某一类的概率较大。决策树分类时将该节点的实例抢新娘公分到条件概率大的那一类去。
5.1.4 决策树学习
与训练数据集不相矛盾的决策树(即能对训练数据进行正确分类的决策树)可能有多个,也可能一个都没有。我们需要的是一个与训练数据矛盾较小的决策树,同时具有很好的泛化能力。从另一个角度来看,决策树学习是由训练数据集估计条件概率模型。基于特征空间划分的条件概率模型有无穷多个。我们选择的条件概率模型你应该不仅对训练数据由很好的拟合,而且对未知数据有很好的预测。
决策树学习的损失函数通常是正则化的极大似然函数。决策树学习的策略是以损失函数为目标函数的最小化。
因为从所有可能的决策树中选取最优决策树是NP完全问题,所以现实中决策树学习算法通常采用启发式方法,近似求解这一最优化问题。这样得到的决策树是次最优(sub-optimal)的。
决策树学习的算法通常是一个递归的选择最优特征,并根据该特征对训练数据进行分割,使得各个子数据集有一个最好的分类的过程。
以上方法生成的决策树可能对训练数据有很好的分类能力,但对未知的测试数据却未必有很好的分类能力,即可能发生过拟合现象。我们需要对已生成的树自下而上进行剪枝,将树变得简单,从而使他具有更好的泛化能力。具体的,就是去掉过于细分的叶结点,使其回退到父结点,甚至更高的结点,然后将父结点或更高的结点改为新的叶结点。
决策树得到的结果不是全局最优的,而是在每一个结点做的局部最优决策得到的。
决策树的生成对应于模型的局部选择,决策树的剪枝对应于模型的全局选择。决策树的生成只考虑局部最优,相对的,决策树的剪枝则考虑全局最优。
5.2 特征选择
5.2.1 特征选择问题
特征选择是决定用那个特征来划分特征空间。通常特征选择的准则是信息增益或信息增益比。
直观上,如果一个特征具有更好的分类能力,或者说,按照这一特征将训练数据分割成子集,使得各个子集在当前条件下有最好的分类,那么就更应该选择这个特征。信息增益(information gain)就能够很好的表示这一直观的准则。
5.2.2 信息增益
-
熵(entropy)是表示随机变量不确定的度量。设X是一个取有限个值的离散随机变量,其概率分布为:
则随机变量X的熵定义为:
对数以2为底或以e为底(自然对数),这时熵的单位分别称作比特(bit)或纳特(nat),熵只依赖于X的分布,与X的取值无关。 -
设有随机变量(X,Y),其联合概率分布为:
条件熵H(Y|X)表示在已知随机变量X的条件下随机变量Y的不确定性。随机变量X给定的条件下随机变量Y的条件熵(conditional entropy)H(Y|X),定义为X给定条件下Y的条件概率分布的熵对X的数学期望:
当熵和条件熵中的概率由数据估计(特别是极大似然估计)得到时,所对应的熵与条件熵分别成为经验熵(empirical entropy)和经验条件熵(empirical conditional entropy)。此时,如果有0概率,令0log0=0。 -
信息增益表示得知特征X的信息而使得类Y的信息的不确定性减少的程度。
特征A对训练数据集D的信息增益g(D,A),定义为集合D的经验熵H(D)与特征A给定条件下D的经验条件熵H(D|A)之差,即: g(D,A)=H(D)-H(D|A)
一般的,熵H(Y)与条件熵H(Y|X)之差称为互信息(mutual information)。决策树学习中的信息增益等价于训练数据集中类与特征的互信息。
显然,对于数据集D而言,信息增益依赖于特征,不同的特征往往具有不同的信息增益。信息增益大的特征具有更强的分类能力。
-
根据信息增益准则的特征选择方法是:对训练数据集(或子集)D,计算其每个特征的信息增益,比较它们的大小,选择信息增益最大的特征。
信息增益的算法:
输入:训练数据集D和特征A
输出:特征A对训练数据集D的信息增益g(D,A)
(1)计算数据集D的经验熵H(D)
(2)计算特征A对数据集D的经验条件熵H(D|A)
(3)计算信息增益
5.2.3 信息增益比
以信息增益作为划分训练数据集的特征,存在偏向于选择取值较多的特征的问题。使用信息增益比(information gain ratio)可以对这一问题进行校正。
特征A对训练数据集D的信息增益比gR(D,A)定义为其信息增益g(D,A)与训练数据集D的关于特征A的值的熵HA(D)之比,即:
其中,
5.3 决策树的生成
5.3.1 ID3算法
ID3算法的核心是在决策树的各个节点上应用信息增益准则选择特征,递归的构建决策树。
ID3算法只有树的生成,所以该算法生成的树容易产生过拟合。
5.3.2 C4.5的生成算法
C4.5在生成过程中,用信息增益比来选择特征。
5.4 决策树的剪枝
在决策树学习中将已生成的树进行简化的过程称为剪枝(pruning)。
决策树的剪枝往往通过极小化决策函整体的损失函数(loss function)或代价函数(cost function)来实现。
设树T的叶结点个数为|T|,t是树T的叶结点,该叶结点有Nt个样本点,其中k类的样本点有Ntk个,k=1,2…K,,Ht(T)为叶结点t上的经验熵,α≥0为参数,则决策树学习的损失函数可以定义为:
其中经验熵为:
在损失函数中,将右端的第一项记作:
这时有
-
其中,C(T)表示模型对训练数据的预测误差,即模型与训练数据的拟合程度,|T|表示模型复杂度,α≥0控制两者之间的影响。较大的α促使选择较简单的模型,较小的α促使选择较复杂的模型,α=0意味着只考虑模型与训练数据的拟合程度,不考虑模型的复杂度。
-
剪枝,就是当α确定时,选择损失函数最小的模型,即损失函数最小的子树。
-
可以看出,决策树生成只考虑了通过提高信息增益(信息增益比)对训练数据进行更好的拟合。而决策树剪枝通过优化损失函数还考虑了减小模型复杂度。决策树生成学习局部的模型,而决策树剪枝学习整体的模型。
-
损失函数的极小化等价于正则化的极大似然估计,所以利用损失函数最小原则进行剪枝就是用正则化的极大似然估计进行模型选择。
树的剪枝算法: