西瓜书学习笔记(二)——决策树

4.1基本流程

决策树(decision tree),亦称判定树,是一类常见的机器学习方法。

 

西瓜书学习笔记(二)——决策树_第1张图片

个人理解:由上图可看出,决策树就是通过将特征按层级划分,在上一层判断结果的基础上对下一层的特征值进行判定,如此循环往复,从而通过一系列判断结果产生决策。

一般地,一颗决策树包含一个根结点、若干个内部结点和若干个叶结点;叶结点对应于决策结果,其他每个结点则对应于一个属性测试;每个结点包含的样本集合根据属性测试的结果被划分到子结点中;根结点包含样本全集。从根结点到每个叶结点的路径对应了一个判定测试序列。

学习目的:产生一颗泛化能力强(处理未见示例能力强)的决策树。

决策树基本流程遵循简单而直观的“分而治之”(divide-and-conquer)策略。

根据下图伪代码可知,决策树的生成是一个递归过程

导致递归返回的三种情况:

对策

1.当前结点包含的样本全属于同一类别,无需划分;

 

2.当前属性集为空,或是所有样本在所有属性上取值相同,无法划分;

把当前结点标记为叶结点,并将其类别设定为该结点所含样本最多的类别(利用当前结点的后验分布)

3.当前结点包含的样本集合为空,不能划分。

同样把当前结点标记为叶结点,但将其类别设定为其父结点所含样本最多的类别(父结点的样本分布作为当前结点的先验分布)

 

西瓜书学习笔记(二)——决策树_第2张图片

4.2划分选择

选择最优划分属性:一般来说,随着不断划分,我们希望决策树的分支结点所包含的样本尽可能属于同一类别,即结点的“纯度”(purity)越来越高。

信息增益(information gain)

熵:度量不确定性的大小,衡量信息的缺失

信息熵(information entropy)度量样本集合纯度的常用指标。

假设当前样本集合D中第k类样本所占的比例为pk(k=1,2,…,|У|),则D的信息熵定义为:

信息熵定义

Ent(D)的值越小,则D的纯度越高。

假定:

离散属性a,取值V个:{a1,a2,…,aV}

使用a对样本集D进行划分,产生v个分支结点

D^{v}:第v个分支结点包含D中所有在属性a上的取值为av的样本

\frac{\left | D^{v} \right |}{\left | D \right |}:赋予分支结点的权重,样本数越多,分支结点影响越大

属性a对样本集D进行划分所获得的“信息增益”(information gain)为:

信息增益

一般而言,信息增益越大,使用属性a进行划分所获得的“纯度提升”越大(即按此属性进行划分的不确定性越大)

信息增益准则对可取值数目较多的属性有所偏好。

拓展:ID3决策树(ID: Iterative Dichotomiser迭代二分器)学习算法就是以信息增益为准则选择划分属性

 

数据集如下

 

西瓜书学习笔记(二)——决策树_第3张图片

计算信息增益如下:

 

 

 

增益率(gain ratio)

公式定义:

增益率

其中:

固有值

称为属性a的“固有值”(intrinsic value)。属性a可能的取值数目越多(V越大),IV(a)可能的值越大。

增益率准则对可取值数目较少的属性有所偏好

拓展:C4.5算法并不是选择增益率最大的候选划分属性,而是使用了一个启发式:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。

基尼指数(Gini index)

基尼指数

Gini(D)反映了从数据集D随机抽取两个样本,其类别标记不一致的概率。Gini(D)越小,数据集D纯度越高。

属性a的基尼指数定义为:

属性a的基尼指数

在候选集合A中,选择使划分后基尼指数最小的属性作为最优划分属性,即a=\begin{matrix} arg min & \\ a\epsilon A& Gini index(D,a) \end{matrix}

基尼系数、信息熵都是用来度量样本的纯度(混合度),基尼系数更多从样本的统计特性的角度来衡量,信息熵则更多从信息论的角度来衡量。

拓展:CART(Classification and Regression Tree)是一种著名的决策树学习算法,可用于分类或回归任务。CART算法使用基尼系数选择划分属性。

【补充】构建树的一般步骤:

  1. 判断信息熵/基尼系数大小;
  2. 找到criteria,使得树分裂过程停止。

树停止条件分为两类:

  1. 内生(本质上应该停下来,自然而然停下来):
  1. 一个问题的结点上,得到确定的回答——所有训练样本属于一个类;
  2. 剩余问题在此节点上信息增益=0;
  1. 附加(人为规定的):
  1. 设定阈值n,当叶片上样本数
  2. 层数>人为设定的最大值时;
  3. 信息有增长,但增长不明显时。

4.3剪枝处理

由于决策树使用“分而治之”的策略,因此其特别容易 “过拟合”。剪枝(pruning)是决策树对付过拟合的主要手段。

剪枝:决策树为尽可能正确分类训练样本,会不断重复划分结点导致其分支过多而造成过拟合,因此需要主动剪掉一些分支。

预剪枝(prepruning)生成决策树过程中,对每个结点划分前先对其进行估计,若当前结点的划分不能提升泛化性能,则停止划分并将其标记为叶结点;

后剪枝(postpruning)先训练出一颗完整的树,然后自底向上对非叶结点进行考察,若将该结点对应的子树替换为叶结点能提升泛化性能,则将该子树替换为叶结点。

数据集如下表,

 

西瓜书学习笔记(二)——决策树_第4张图片

 

预剪枝

假设产生如下图4.5所示决策树,先对其泛化性能进行评估。根据训练集可知,若不进行划分,则只有根结点①,此时训练集中好瓜与坏瓜各占50%,因此假设将根结点①标记为“好瓜”(也可标记为坏瓜),在数据集中可以看出验证集上有三条数据被标记为好瓜,因此其验证集精度为37×100%

若将结点①划分,则产生图4.6的预剪枝决策树,根据训练集,结点②对应的脐部凹陷情况下好瓜标记占3/4,因此结点②标记为“好瓜”,同理,结点③、④分别标记为“好瓜”、“坏瓜”。而验证集中分类符合标记的数据数

西瓜书学习笔记(二)——决策树_第5张图片

 

西瓜书学习笔记(二)——决策树_第6张图片

 

量为5条,则验证精度为57×100% ,很明显,划分后验证精度大于划分前验证精度,因此对于结点①的预剪枝决策为“划分”。同理可得结点②③④的预剪枝决策。

如图4.6所示只有一层划分的决策树也称作“决策树桩”(decision stump)。

预剪枝降低了过拟合的风险,还显著减少了训练时间开销和测量时间开销。但其基于“贪心”本质带来了欠拟合的风险。

后剪枝

先从训练集生成一颗完整的决策树,假设生成上图4.5的树。根据数据集易知,该树验证集精度为42.9%(3/7)。

先考察最末层结点,如图中结点⑥。将结点⑥替换为叶结点(即将其分支去掉/剪除),根据其训练样本,结点⑥应标记为“好瓜”,计算其验证集精度为57.1%,则后剪枝决策为剪枝。同理,对剩余结点进行验证集精度检测,做出后剪枝决策。

后剪枝通常比预剪枝保留了更多的分支。一般情况下,后剪枝决策树的欠拟合风险很小,其泛化性能往往优于预剪枝决策树。但后剪枝训练时间开销大得多。

4.4连续与缺失值

连续值处理(回归树)

理念——设定属性阈值,将树分割;最简单的策略——二分法(bi-partition)。

假定:

样本集D       连续属性a        划分点t

{a1,a2,…,an}为aD上出现的不同取值,从大到小排序

基于tD分为子集Dt-Dt+Dt- 包含a*<=tDt+ 包含a*>t

对相邻属性取值aiai+1来说,t在[ai, ai+1)内取任意值产生的划分结果相同。则对连续属性a,包含n-1个元素的候选划分点集合(区间中位点作为候选划分点):

候选划分点

选取最优划分点进行样本集合的划分:

划分

其中Gain(D,a,t) 是样本集基于划分点t二分后的信息增益,选择使其最大化的划分点即可。

数据集如下图:

西瓜书学习笔记(二)——决策树_第7张图片

计算密度的信息增益如下:

 

 

注:与离散属性不同,若当前结点划分属性为连续属性,该属性还可作为其后代结点的划分属性。

缺失值处理:

现实任务中经常遇见不完整样本,即样本的某些属性值缺失。由此引出两个问题:

  1. 如何在属性缺失的情况下进行划分属性选择?
  2. 给定划分属性,若样本在该属性上的值缺失,如何划分样本?

对于以上两个问题,给出以下解决方案(C4.5算法):

给定:

训练集D     属性a     D 表示D 中在属性a 上没有缺失值的样本子集

aV 个可取值{a1,a2,…,aV},Dv 表示Da 上取值为av 的样本子集

Dk 表示D 中属于第k 类的样本子集(k =1,2,…,|У|)

样本子集

假定为每个样本x赋予一个权重wx,并定义:

西瓜书学习笔记(二)——决策树_第8张图片

对属性aρ 表示无缺失值样本所占的比例,pk 表示无缺失值样本中第k类所占的比例,rv 表示无缺失值样本中在属性a上取值av 的样本所占的比例。显然,结果

基于上述定义,将信息熵推广为:

信息熵推广

由信息熵公式,有:

Dhat信息熵

若样本x在划分属性a上的取值已知,则将x划入与其取值对应的子结点,且样本权值在子结点中保持为wx。若样本x在属性划分a上的取值未知,则将所有x同时划入所有子结点,且样本权值在与属性值av对应的子结点中调整为属性av对应子结点;直观地看,就是让同一个样本以不同的概率划入到不同的子结点中去。

4.5多变量决策树:

决策树所形成的分类边界有一个明显的特点:轴平行(axis-parallel)——分类边界由若干个与坐标轴平行的分段组成。如下图所示:

西瓜书学习笔记(二)——决策树_第9张图片

多变量决策树(multivariate decision tree)可实现“斜划分”甚至更复杂的划分。

斜划分的决策树也叫“斜决策树”(oblique decision tree)

在斜决策树中,非叶结点不再仅针对某个属性,而是对属性的线性组合进行测试:每个非叶结点都是一个形如线性分类器 的线性分类器,w是属性a的权重,w和t可在该结点所含的样本集合属性集上学得。

多变量决策树试图建立一个合适的线性分类器,如下图所示:

 

西瓜书学习笔记(二)——决策树_第10张图片

 

参考资料:

【1】《机器学习》周志华

【2】“万门大学”课程——“机器学习原理与应用入门”

你可能感兴趣的:(初学AI,西瓜书学习)