机器学习--树模型小结
引言:
这篇小结是为了准备面试而写的,从决策树的基本概念到决策树的学习再到决策树的剪枝,粗中有细,话不多说开始咯。
决策树模型
决策树模型是一个有监督的分类模型,其本质是选择一个能带来最大信息增益的特征进行节点分裂,直到满足某些约束条件例如叶子结点纯度到达一定阈值。下图为决策树的一个示例:
1.决策树与if-then规则、条件概率分布
在理解决策树的时候,可以将决策树看做一个if-then规则的集合。对于一棵决策树,我们将决策树的根节点到叶子节点的每一条路径对应一条规则;其中路径上的内部节点对应着规则的条件,而叶节点的类或者值对应这条规则的结论。决策树上的路径有一个重要的性质:互斥且完备性质。什么意思呢,就是说每一个实例都被一条路径所覆盖,且一个实际仅被一条路径覆盖。这里所谓的特征是指实例的特征与路径上的特征一致或实例满足规则的条件。
决策树还可以表示为给定特征下的类条件概率分布。这个条件概率分布定义在特征空间的一个划分上。将特征空间划分为互补相斥的区域,并在每个区域上定义一个类的概率分布就构成了一个条件概率分布。决策树的一条路径对应划分中的一个区域,决策树所表示的条件概率分布由各个单元给定条件下的类的条件概率组成(有点绕)。举个例子,假设$X$为表示特征的随机变量,$Y$为表示类别的随机变量,那么这个条件概率分布可以写为$P(Y|X)$。$X$的取值于给定划分下区域的集合,Y取值于类的集合。决策树分类的时候将该节点的实例强行分到条件概率大的一类中去。
下图(a)表示了特征空间的一个划分。图中的大正方形表示特征空间。这个大正方形被若干个小矩形分割,每个小矩形表示一个单元。特征空间划分上的单元构成了一个集合,$X$取值为单元的集合。为简单起见,假设只有两类:正类和负类。下图(b)表示特征空间划分确定的时候,特征给定条件下类的条件概率分布,当某个单元$c$的条件概率满足$P(Y = +1|X = c) > 0.5$时,则认为这个单元属于正类。图(c)为对应于图(b)中条件概率分布的决策树。
2. 决策树的学习
决策树的学习本质上是从训练集中归纳出一组分类规则。与训练数据集不矛盾的决策树可能有n个(n>=0),我们需要的是一个与训练数据矛盾较小的决策树,同时这棵树也要具备较好的泛化能力。决策树的学习的损失函数通常是正则化的极大似然函数,学习的策略是以损失函数为目标函数,调整树的结构使目标函数最小化。
当损失函数确定之后,学习的问题就变为在损失函数确定情况下选择最优决策树的问题了。因为从所有可能的决策树中选取最优决策树是$NP$完全问题,所以在实践中决策树的学习算法一般是采用启发式方法,近似求解这一最优化问题。大致的构造流程为:构建根结点,将所有训练数据都放在根结点。 选择一个最优特征,按照这一特征将训练数据集分割成子集,使得各个子集有一个在 当前条件下最好的分类。如果这些子集己经能够被基本正确分类,那么构建叶结点, 并将这些子集分到所对应的叶结点中去:如果还有子集不能被基本正确分类,那么就 对这些子集选择新的最优特征,继续对其进行分割,构建相应的结点。如此递归地进 行下去,直至所有训练数据子集被基本正确分类,或者没有合适的特征为止。最后每 个子集都被分到叶结点上,即都有了明确的类。这就生成了一棵决策树。
以上方法生成的决策树可能对训练数据有很好的分类能力,但对未知的测试数据 却未必有很好的分类能力,即可能发生过拟合现象。 我们需要对己生成的树自下而上进行剪枝,将树变得更简单,从而使它具有更好的泛化能力。具体地,就是去掉过于细分的叶结点,使其回退到父结点,甚至更高的结点,然后将父结点或更高的结点改为新的叶结点。
简单的总结就是决策树的生成对应于模型的局部选择,决策树的剪枝对应于模型的全局选择。 决策树的生成只考虑局部最优,相对地,决策树的剪枝则考虑全局最优。决策树学习常用的算法有ID3、C4.5与CART,接下来会结合这些算法简单的讲解决策树学习的特征选择、决策树的生成和剪枝。
2.1 特征选择
特征选择在于选取对训练数据具有分类能力的特征,使用具备较好分类能力的特征进行训练可以提高决策树学习的效率。如果利用一个特征进行分类的结果与随机分类的结果没有很大差别,则称这个 特征是没有分类能力的。经验上扔掉这样的特征对决策树学习的精度影响不大。通常特征选择的准则是信息增益或信息增益比。
2.1.1 信息增益(ID3)
先给出熵以及条件熵的定义。
在信息论与概率统计中,熵(entropy)是对随机变量不确定性的度量。设$X$是一个取有限个值的离散随机变量,其概率分布为:$P(X = x_{i}) = p_{i}, i = 1, 2, ...,n$。则随机变量$X$的熵定义为:
上式中log以2为底或以e为底(自然对数),这时熵的单位分别为比特(bit)或者(nat)。由定义可知,熵只依赖于$X$的分布,而与$X$的取值无关,熵越大,随机变量的不确定性也就越大。当随机变量只取两个值的时候,例如0、1时,$X$的分布为:
熵为:
这时,熵$H(p)$随概率p变化的曲线如下所示(熵的单位为比特):
当 $p = 0$ 或者 $p = 1$的时候$H(p) = 0$,随机变量完全没有不确定性。当$p = 0.5$时,$H(p) = 1$,熵取值最大,随机变量不确定性最大。
设有随机变量$(X,Y)$,其联合概率分布为:
条件熵$H(Y|X)$表示在已知随机变量$X$的条件下随机变量$Y$的不确定性。随机变量$X$给定条件下随机变量$Y$的条件熵$H(Y|X)$,定义为$X$给定条件下$Y$的条件概率分布的熵对$X$的数学期望:
当熵和条件熵中的概率率由数据估计(特别是极大似然估计)得到时,所对应的熵与条件熵分别称为经验熵 (Cempirical entropy) 和经验条件熵 (Cempirical conditional entropy)。信息增益$g(D,A)$表示得知特征$X$的信息而使得类$Y$的信息不准确性减少的程度。公式如下所示:
其中$D$为已知数据集,$A$为特征。一般而言,熵$H(Y)$与$H(Y|X)$之差称为互信息。决策树学习中的信息增益等价于训练数据集中类与特征的互信息。
设训练数据集为$D$,$|D|$表示其样本容量。设有$K$个类$C_{k}$,$k = 1,2,...,K$,$|C_{k}|$为属于类$C_{k}$的样本个数,$\sum_{k = 1}^{K} |C_{k}| = |D|$。设特征$A$有n个不同的取值${a_{1},a_{2},...,a_{n}}$,根据特征$A$的取值将D划分为$n$个子集$D_{1},D_{2},...D_{n}$,$|D_{i}|$为$D_{i}$的样本个数。记子集$D_{i}$中属于类$C_{k}$的样本集合为$D_{ik}$,即$D_{ik} = D_{i} \cap C_{k}$。以信息增益为标准生成的决策树就是ID.3,信息增益的算法如下:
2.1.2 信息增益比(C4.5)
假设每个记录有一个属性“ID”,若按照ID来进行分割的话,由于ID是唯一的,因此在这一个属性上,能够取得的特征值等于样本的数目,也就是说ID的特征值很多。那么无论以哪个ID为划分,叶子结点的值只会有一个,纯度很大,得到的信息增益会很大,但这样划分出来的决策树是没意义的,由此可以看出以信息增益为标准分裂节点的时候,存在偏向于选择取值较多的特征的问题。使用信息增益比可以对这一问题进行矫正,这是特征选择的另一个标准。
信息增益比例相较于信息增益多了一个分母,这个分母由属性A的特征值个数决定,个数越多,$H_{A}(D)$的值越大(根据熵的定义)。$H_{A}(D)$的值越大,信息增益率越小,这样就可以避免模型偏好特征值多的属性。使用信息增益率为标准构造树的算法为C4.5。为了避免模型偏向选择特征数少的特征,C4.5决策树先从候选划分属性中找出信息增益高于平均水平的属性,在从中选择增益率最高的。
2.1.3 平方误差(CART--回归树)
假设$X$与$Y$分别为输入和输出变量,并且$Y$是连续变量,给定训练数据集$D = {(x_{1},y_{1}),(x_{2},y_{2}),...,(x_{n},y_{n})}$,对于一颗回归树而言,我们将输入空间划分为$M$个单元$R_{1},R_{2},...,R_{M}$,并且每个单元$R_{m}$上有一个固定的输出值$c_{m}$,于是回归树模型可以表示为:
当输入空间的划分确定的时候,可以用平方误差$\sum_{x_{i} \in R_{m}} (y_{i} - f(x_{i}))^{2}$来表示回归树对于训练数据的误差,用平方误差最小的准则求解每个单元上的最优输出值。划分后的单元$R_{m}$的最优值$\hat{c}_{m}$为$R_{m}$上所有输入实例$x_{i}$对应的输出$y_{i}$的均值,即:
在区域划分的时候,CART采用的是一个启发式的方法,选择第$j$个变量$x^{(j)}$和它取的值$s$,作为切分变量和切分点,并定义两个区域:
然后寻找最优的切分变量$j$和最优切分点$s$。具体地,求解:
对固定输入变量$j$可以找到最优切分点$s$。遍历所有输入变量,找到最优的切分变量 $j$ ,构成一个对$(j,s)$ 。 依此将输入空间划分为两个区域,接着对每个区域重复上述划分过程,直到满足停止条件为止。这样就生成一棵回归树。 这样的回归树通常称为最小二乘回归树。
2.1.4 基尼指数(CART--分类树)
分类树是基尼指数选择最优特征,同时决定该特征的最优二值切分点。假设在分类问题中,有$K$个样本,样本点属于第$k$类的概率为$p_{k}$,则概率分布的基尼指数定义为:
对于二分类问题,若样本点为正类的概率为$p$,则该概率分布的基尼指数为:
对于给定的样本集合$D$,其基尼指数为:
这里,$C_{k}$是$D$中属于第$k$类的样本子集,$K$是类的个数。如果样本集合$D$根据特征$A$是否取某一可能值$a$被分割成$D_{1}$和$D_{2}$两部分,即:
则在特征$A$的条件下,集合$D$的基尼指数定义为:
基尼指数$Gini(D)$表示集合$D$的不确定性,基尼指数$Gini(D,A)$表示经$A = a$分割后集合$D$的不确定性。基尼指数越大,样本集合的不确定性也就越大,这一点与熵相似。下图显示二分类问题中基尼指数$Gini(p)$与熵之半$H(p)/2$和分类误差率的关系。横坐标表示概率$p$,纵坐标表示损失。可以看出基尼指数和熵之半都能够近似代表分类误差率。