目录
第4章 决策树
4.1 基本流程
-
决策树(Decision Tree):一类常见的机器学习方法。决策树学习的目的是为了产生一颗泛化能力强,即处理未见事例能力强的决策树。基本流程遵循分治策略(Divide and Conquer),是一个递归的过程。
-
在该算法中,有三种情形会导致递归返回:
- 当前节点包含的样本全属于同一类别,无需划分。eg 温度(冷,热)所有样例都是热的
- 当前属性集为空,或是所有样本在所有属性上取值相同导致无法划分。eg A=空集。在这种情况下,我们把当前节点标记为叶节点,并将其类别设定为该节点所含样本最多的类别。(利用当前节点的后验分布)
- 当前节点包含的样本集合为空,不能划分。eg D=空集。同样把当前节点标记为叶节点,但将其类别设定为其父节点所含样本最多的类别。(利用父节点的样本分布当做当前节点的先验分布)
-
[理解] 输入的样本数据集D是有类别的(即若样本是若干西瓜数据,有色泽根蒂敲声等属性,他的类别就两种,好和坏),经过决策树算法训练,才将一个个属性选择出来进行细分类使有新数据来的时候可以根据树的规则来分类。决策树就是根据属性的选择对已有数据学习形成对类别的划分的树。
-
[理解] 属性/变量:temperature,code和hot是元变量(unit)。
4.2 划分选择
随着划分过程不断进行,我们希望决策树的分支结点所包含的样本尽可能属于同一类别,即结点的"纯度" (purity) 越来越高。
决策树有三种常用算法:ID3,C4.5,CART:
4.2.1 信息增益
- ID3(Iterative Dichotomiser 迭代二分器)算法:用信息增益来划分属性。
- 信息熵(Information Entropy):是度量样本集合纯度最常用的一种指标(熵能较好将分类效果好的属性选出)物体越不稳定,可能性越多,成分越复杂,信息熵越大。定义为:
其中 γ \gamma γ为初试的类别数(比如西瓜数据集,一开始在没有加入任何属性前,只有好瓜和坏瓜数量),pk是第k类样本占比。Ent(D)的值越小,D的纯度越高。 - 信息增益(Information Gain):
其中a为属性,V为属性a可能的取值 { a 1 . . . a V } \{a^1...a^V\} {a1...aV},按属性取值对样本D进行划分得到的在属性a上取值为 a V a^V aV的样本子集为 D v D^v Dv。这里的信息增益为按a分类后改变的信息熵。一般而言,信息增益越大意味着使用属性a来进行划分所获得的的“纯度提升”越大。
所以ID3算法算出所有候选属性的信息增益,其max的属性作为该时刻的划分属性进行划分。
计算过程在西瓜书P76-P77
- 信息熵(Information Entropy):是度量样本集合纯度最常用的一种指标(熵能较好将分类效果好的属性选出)物体越不稳定,可能性越多,成分越复杂,信息熵越大。定义为:
4.2.2 增益率
- C4.5算法:用增益率来划分属性。
- 信息增益准则对可取值数目较多的属性有所偏好(即比如一个属性的元属性有很多,这样的Gain更大,ID3算法可能会采用这样的属性来作为此时的划分属性),这种偏好可能带来过拟合的不良影响(划分太细太像训练集了,比如采用编号来进行划分)。C4.5作为ID3算法的改进,采用增益率作为指标来划分最优属性。
- 增益率:
其中, I V ( a ) IV(a) IV(a)称为属性a的"固有值"。属性a的可能取值数目越多(即V越大),则 I V ( a ) IV(a) IV(a)的值通常会越大。 - 增益率准则对可取值数目较少的属性有所偏好,因此C4.5算法并不是直接选择增益率最大的候选划分属性,而是使用了一个启发式:从候选划分属性中找出信息增益高于平均水平的属性,再从中选增益率最高的。
[理解] Dynamic programming
4.2.3 基尼指数
- CART算法:用基尼指数来度量数据集D的纯度。
- 基尼指数(Gini Index):反映随意从样本集中抽取两个样本,其类别标记不一致的概率,以此来度量纯度。基尼值越小越好。我们就选择使得划分后基尼指数最小的属性作为最优划分属性。
- 基尼指数(Gini Index):反映随意从样本集中抽取两个样本,其类别标记不一致的概率,以此来度量纯度。基尼值越小越好。我们就选择使得划分后基尼指数最小的属性作为最优划分属性。
4.3 剪枝处理
- 剪枝(Pruning):是决策树学习算法对付过拟合的主要手段。有时决策树分支过多可能将训练样本学的太好了,因此需要去掉一些分支。基本策略有:预剪枝和后剪枝。是否过拟合(泛化性能)的度量标准:验证集精度。
- 预剪枝(Prepruning):预剪枝是指在决策树生成过程中,对每个结点在划分前先进行估计,若当前结点的划分不能带来决策树泛化性能提升,则停止划分并将当前结点标记为叶结点。
- 验证集精度:因为“在划分之前所有样例集中在根结点,若不进行划分,根据算法该节点将被标记为叶结点,类别标记为训练样例数最多的类别(最多类不唯一可以任选一类)”。根据这个规则我们将于划分前的验证集精度与划分后验证集精度比较,若后大于前,则不剪掉。
- 一颗只有一层划分的决策树称为决策树桩(Decision Stump)。
- 这不仅降低了过拟合的风险,还显著减少了决策树的训练时间和测试时间开销。但另一方面,有些分支的当前划分虽不能提升泛化性能、甚至可能导致泛化性能暂时下降,但在其基础上进行的后续划分却有可能导致性能显著提高;预剪枝基于"贪心"本质禁止这些分支展开 给预剪枝决策树带来了
欠拟含的风险。
- 后剪枝(Postpruning):后剪枝则是先从训练集生成一棵完整的决策树,然后自底向上地对非叶结点进行考察,若将该结点对应的子树替换为叶结点能带来决策树泛化性能提升,则将该子树替换为叶结点。
- 验证集精度:后剪枝也是度量剪之前和剪之后的验证集精度大小决定是否剪枝。(eg 若将分支剪除,则相当于把该分支结点替换成叶子结点,该分支以下的类别都要被标记成多数类,这样比原先的精度会好还是会差?若好则剪)
- 一般情形下,后剪枝决策树的欠拟合风险很小,泛化性能往往由于预剪枝决策树;因其在生成决策树之后进行,并且自底向上注意考察,训练时间开销是最大的。
4.4 连续与缺失值
4.4.1 连续值处理
指属性取值连续与否:离散:密度(密度大,密度小);连续:密度(0.1,0.24,0.45,0.57…)。
-
连续值的处理:一般采用连续属性离散化。最简单的策略是二分法(Bi-Partition),C4.5有采用这种机制。
- 二分法思想:给定样本集D与连续属性α,二分法试图找到一个划分点t将样本集D在属性α上分为≤t与>t:
[理解] 若要对连续值处理,那么整个操作就是:先对连续属性离散化,找出最佳划分点(二分+信息增益);接着从众多属性中选最佳划分属性(信息增益等)。
流程: 首先,将α的所有取值按升序排列,所有相邻属性的均值作为候选划分点(n-1个,n为α所有的取值数目)。 再计算每一个划分点划分集合D(即划分为两个分支)后的信息增益。 最后,选择最大信息增益的划分点作为最优划分点。
需注意的是,与离散属性不同,若当前结点划分属性为连续属性,该属性还可作为其后代结点的划分属性。
- 二分法思想:给定样本集D与连续属性α,二分法试图找到一个划分点t将样本集D在属性α上分为≤t与>t:
4.4.2 缺失值处理
给定划分属性,若某样本在该属性上缺失值,如何划分到具体的分支上。 假定为样本集中的每一个样本都赋予一个权重,根节点中的权重初始化为1,则定义:
其中,
ρ
\rho
ρ为不确实的样本占比;k为类(eg 好瓜坏瓜两类);v为取值(为一个属性下各元属性/变量)
-
对于(1):通过在样本集D中选取在属性α上没有缺失值的样本子集,计算在该样本子集上的信息增益,最终的信息增益等于该样本子集划分后信息增益乘以样本子集占样本集的比重。即:
-
对于(2):若该样本子集在属性α上的值缺失,则将该样本以不同的权重(即每个分支所含样本比例)划入到所有分支节点中。即让同一样本以不同概率划入到不同子结点当中去。
4.5 多变量决策树
- 从坐标空间的角度看(每个属性视为一个坐标轴),决策树对样本分类意味着在坐标空间中寻找不同类样本之间的分类边界。决策树找出的是与轴平行的边界(即分类边界由若干个与坐标轴平行的分段组成)。
- 多变量决策树(Multivariate Decision Tree):实现“斜划分”甚至更加复杂划分的决策树。即决策树中非叶结点不再是仅针对某个属性,而是对属性的线性组合进行测试。eg 分支结点变成:”-0.8密度-0.44含糖率<0.313?“这样的条件。如此在控坐标空间里分类边界就不再是与坐标轴平行的直线了