ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

机器学习西瓜书(周志华)第四章 决策树

2019-05-22 22:54:40  阅读:1008  来源: 互联网

标签:周志华 样本 分类 分类器 增益 类别 第四章 决策树


第四章 决策树

1. 概述

       决策树(decision tree)是一种基本的分类与回归方法。决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程。它可以认为是if-then规则的集合(互斥并且完备),也可以认为是定义在特征空间与类空间上的条件概率分布。其主要优点是模型具有可读性,分类速度快。学习时,利用训练数据,根据损失函数最小化的原则建立决策树模型。预测时,对新的数据利用决策树模型进行分类。决策树学习通常包括三个步骤:特征选择、决策树的生成和决策树的修剪

  • 特征选择:从训练数据的特征中选择一个特征作为当前节点的分裂标准(特征选择的标准不同产生了不同的特征决策树算法)。
  • 决策树生成:根据所选特征评估标准,从上至下递归地生成子节点,直到数据集不可分则停止决策树停止声场。
  • 决策树剪枝:决策树容易过拟合,需要剪枝来缩小树的结构和规模(包括预剪枝和后剪枝)。

决策树学习的本质是从训练数据集中归纳出一组分类规则或者说是条件概率模型,与训练数据集不相矛盾的决策树可能有多个或者一个没有,我们需要找到一个与训练数据集矛盾较小的决策树,同时具有很好的泛化能力。换句话说,我们选择的条件概率模型应该不仅对现有的训练数据集有很好的拟合效果,而且能够对未知的数据有很好的预测(泛化能力)。实现的方法通过以上的三个方法。
决策树特点:

优点:

  • 计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据。
  • 准确性高: 挖掘出来的分类规则准确性高, 便于理解, 决策树可以清晰的显示哪些字段比较重要, 即可以生成可以理解的规则。
  • 可以处理连续和离散字段
  • 不需要任何领域知识和参数假设
  • 适合高维数据
    缺点:
  • 对于各类别样本数量不一致的数据, 信息增益偏向于那些更多数值的特征
  • 容易过拟合
  • 忽略属性之间的相关性

适用数据类型:数值型和标称型

2. 特征选择

特征选择决定用哪个特征来划分空间,即如何选择最优划分属性。在划分的过程中,我们希望决策树的分支结点所包含的样本尽可能属于同一类别,即结点的“纯度”越来越高。
特征选择的准则:信息增益信息增益比(增益率)基尼指数

数据集
在这里插入图片描述

2.1 信息增益

熵是表示随机变量不确定性的度量。熵只依赖于D的分布,与D的取值无关。

在这里插入图片描述
信息增益表示在得知特征D的属性对应的属性值的种类和个数a后,而使得类信息不确定性的减少程度。
熵(不确定性)与条件熵(知道信息以后可确定的部分)之差称为互信息,决策树学习中的信息增益等价于训练数据集中类与特征的互信息。
信息增益准则的特征选择方法:对于训练集,计算每个特征D的信息增益,选择信息增益最大的特征作为特征选择的属性。

2.2 信息增益率

为什么引入信息增益率?
这是为了解决信息增益的使用过程中,对属性值种类较多的属性比较偏好,这个问题,所以引入信息增益率。比如当误把编号当成属性时,此时条件熵为0,信息增益达到最大,因此将选择编号作为分类的一个属性,这显然是不合理的。

在这里插入图片描述

需要注意的是,信息增益率对属性值较少的属性比较偏好,因此,C4.5算法并不是直接选择增益率最大的作为候选划分属性,而是使用一个启发式:先从候选划分属性中找出信息增益高于平均水平的属性(保证属性值多的属性被选择),再从中选择增益率最高的(在属性值多的属性中挑属性值少的属性),这样是保证了相对准确。

2.3 基尼指数

在这里插入图片描述

3. 决策树生成

决策树生成算法:

输入:训练数据集D,特征集A,阈值ε(预剪枝用,后剪枝不需要此项);

输出:决策树T。

(1)若D中所有样本属于同一类CkC_kCk​,则 T 为单结点树,并将CkC_kCk​作为该结点的类标记,返回T;

(2)若A = Ø,则T为单结点树,并将D中样本数最多的类CkC_kCk​作为该结点的类标记,返回T;

(3)否则,计算A中各个特征对D的信息增益或者信息增益比,选择信息增益或信息增益比最大的特征 AgA_gAg​;

(4)如果 AgA_gAg​ 的信息增益或信息增益比小于阈值ε,则置T为但结点树,并将D中样本数最多的类Ck作为该结点的类标记,返回T;(后剪枝没有这步)

(5)如果 AgA_gAg​的每一种可能值 aia_iai​,依 Ag=aiA_g = a_iAg​=ai​ 将D分割为若干非空子集DiD_iDi​,将DiD_iDi​中样本数最多的类作为标记,构建子结点,由结点及其子结点构成树T,返回T;

(6)对第i个子结点,以DiD_iDi​为训练集,以 AAgA-{A_g}A−Ag​为特征集,递归地调用步骤(1)~(5),得到子树 TiT_iTi​,返回TiT_iTi​ 。

ID3算法
  在决策树生成过程中,以信息增益为特征选择的准则。

C4.5算法
  在决策树生成过程中,以信息增益比为特征选择的准则。

CART算法
  在决策树生成过程中,以基尼指数为特征选择的准则。

2. 对数几率回归(logistic regression)

2.1 对数几率函数(logistic function)

在这里插入图片描述
对数几率函数(Sigmoid函数)在一定程度上近似单位阶跃函数的替代函数,并且单调连续可微,形式:
y=11+ez y = \dfrac{1}{1+e^{- z}} y=1+e−z1​

2.2 用极大似然求解

极大似然法:样本都是独立同分布的,通过若干次试验,利用试验结果得到某个参数值能够使样本出现的概率最大。
在这里插入图片描述
上式是关于β\betaβ的高阶可导连续凸函数(函数二阶导非负),经典的数值优化算法如梯度下降法、牛顿法等都可求得其最优解

2.3 LR的多分类问题

二分类问题

3. 线性判别分析

线性判别分析LDA(Linear Discriminant Analysis) LDA在模式识别领域(如人脸识别、航舰识别等图像识别领域)中有非常广泛的应用。
在学习LDA之前,有必要将自然语言处理领域中的LDA做出区分,在自然语言处理领域, LDA是隐含狄利克雷分布(Latent Dirichlet Allocation,简称LDA),他是一种处理文档的主题模型。我们本文只讨论线性判别分析,因此后面所有的LDA均指线性判别分析。
LDA是一种监督学习的降维技术,也就是说他的数据集的每个样本是有类别的输出,这一点与PCA不同,PCA是不考虑样本类别输出的无监督降维技术。LDA思想的的概括:“投影后类内方差最小,类间方差最大”。我们要将数据在低维度上进行投影,投影后希望每一种类别数据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大。

可能还是有点抽象,我们先看看最简单的情况。假设我们有两类数据 分别为红色和蓝色,如下图所示,这些数据特征是二维的,我们希望将这些数据投影到一维的一条直线,让每一种类别数据的投影点尽可能的接近,而红色和蓝色数据中心之间的距离尽可能的大。

在这里插入图片描述

上图中提供了两种投影方式,哪一种能更好的满足我们的标准呢?从直观上可以看出,右图要比左图的投影效果好,因为右图的红色数据和蓝色数据各个较为集中,且类别之间的距离明显。左图则在边界处数据混杂。以上就是LDA的主要思想了,当然在实际应用中,我们的数据是多个类别的,我们的原始数据一般也是超过二维的,投影后的也一般不是直线,而是一个低维的超平面。
在这里插入图片描述

1)LDA原理
[https://www.cnblogs.com/pinard/p/6244265.html]
[https://www.cnblogs.com/liuyc/p/6151892.html]

在这里插入图片描述
线性判别分析——多分类任务
在这里插入图片描述
一种有监督的降维技术,但是目前用的比较少了。

2)LDA算法流程

在这里插入图片描述

以上就是使用LDA进行降维的算法流程。实际上LDA除了可以用于降维以外,还可以用于分类。一个常见的LDA分类基本思想是假设各个类别的样本数据符合高斯分布,这样利用LDA进行投影后,可以利用极大似然估计计算各个类别投影数据的均值和方差,进而得到该类别高斯分布的概率密度函数。当一个新的样本到来后,我们可以将它投影,然后将投影后的样本特征分别带入各个类别的高斯分布概率密度函数,计算它属于这个类别的概率,最大的概率对应的类别即为预测类别。

4. 多分类学习

4.1 利用二分类学习器解决多分类问题

多分类的基本思路:“拆解法”,即将多分类任务拆分成若干个二分类任务求解。
具体操作:(1)先对问题进行拆分;(2)为每个拆分的二分类问题训练一个分类器;(3)测试时,对这些分类的预测结果进行集成已获得最终的分类结果。**关键点在于:如何对多分类问题进行拆分,以及如何对多个分类器进行集成。

4.2 最经典的拆分策略(OvO,OvR,MvM)

(1)一对一(One vs. One),数据集一共有N个类别,按照一对一拆分得到(N-1)*N/2种可能,即一共得到(N-1)*N/2个分类器,在测试阶段将新样本放入各个分类器中,最终结果通过投票产生,被预测最多的类型作为最终的分类结果。
在这里插入图片描述
(2)一对剩余(One vs. Rest):数据集一共有N个类别,挑选一类为正类,其他剩余的样本为反类,一共得到N个分类器,在测试时若仅有一个分类器预测为正类,则对应的类标记为最终分类结果,若有多个分类器预测为正类,则通常考虑各分类器的预测置信度,选择置信度最大的类别标记作为分类结果。
在这里插入图片描述
图片参考:[https://blog.csdn.net/qq_22238533/article/details/77774223]

OvO和OvR的优缺点:

  • OvO有(N-1)*N/2个分类器,OvR有N个分类器,因此存储开销和测试时间开销OvO比较大。
  • OvO每个分类器只用了两个类别的样例,而OvR每个分类器都用了全部的样例,因此在类别较多的情况下,OvO的训练时间较短。
  • 对于测试性能,这取决于具体的数据分布,在多数情形下两者差不多。

(3)多对多(Many vs. Many)
MvM是每次将若干个类作为正类,若干个其他类作为反类。显然,OvO和OvR是MvM的特例。MvM的正、反类构造必须有特殊的设计,不能随意选取。这里我们介绍一种最常用的MvM技术纠错输出码 (Error CorrectingOutputCodes,简称 ECOC)
ECOC是将编码的思想引入类别拆分,并尽可能在解码过程中具有容错性。ECOC工作过程主要分为两步:

  • 编码:对N个类别做M次划分,每次划分将一部分类别划为正类,一部分划为反类,从而形成一个二分类训练集。这样一共产生M个训练集,可训练出M个分类器。
  • 解码:M 个分类器分别对测试样本进行预测,这些预测标记组成一个编码。将这个预测编码与每个类别各自的编码进行比较,返回其中距离最小的类别作为最终预测结果。

类别划分通过"编码矩阵"指定。编码矩阵有多种形式,常见的主要有二元码和三元码。前者将每个类别分别指定为正类和反类,后者在正、反类之外,还可指定"停用类"。图3.5给出了一个示意图,在图 3.5(a) 中,分类器f2将Cl类和C3类的样例作为正例,C2类和C4类的样例作为反例;在图3.5(b)中,分类器f4将C1类和C4类的样例作为正例,C3 类的样例作为反例。在解码阶段,各分类器的预测结果联合起来形成了测试示例的编码,该编码与各类所对应的编码进行比较,将距离最小的编码所对应的类别作为预测结果。例如在图 3.5(a) 中,若基于欧民距离,预测结果将是 C3。

在这里插入图片描述
海明距离:xy|x-y|∣x−y∣
欧式距离:(xy)2\sqrt{(x-y)^2}(x−y)2
公式参考: [https://www.zybuluo.com/codeep/note/163962#1如何插入公式]

为什么称为"纠错输出码"呢?
  这是因为在测试阶段,ECOC编码对分类器的错误有一定的容忍和修正能力。例如图3.5(a) 中对测试示例的正确预测编码是(-1,+1,+1,-1,+1),假设在预测时某个分类器出错了,例如 h 出错从而导致了错误编码(-1,-1,+1,-1,+1),但基于这个编码仍能产生正确的最终分类结果C3。这就是纠错输入码。

  • 一般来说,对同一个学习任务,ECOC编码越长,纠错能力越强
  • 但并不是说EOCO编码长度越长,纠错能力越强。编码越长,意味着所需训练的分类器越多,计算、存储开销都会增大
  • 另一方面,对有限类别数,可能的组合数目是有限的,码长超过一定范围后就失去了意义。
  • ** 对同等长度的编码,理论上来说,任意两个类别之间的编码距离越远,则纠错能力越强**。因此,在码长较小时可根据这个原则计算出理论最优编码。
  • 然而,码长稍大一些就难以有效地确定最优编码,事实上这是 NP 难问题。不过,通常我们并不需获得理论最优编码,因为非最优编码在实践中往往己能产生足够好的分类器
  • 另一方面,并不是编码的理论性质越好,分类性能就越好,因为机器学习问题涉及很多因素,例如将多个类拆解为两个“类别子集”,不同拆解方式所形成的两个类别子集的区分难度往往不同,即其导致的二分类问题的难度不同。于是一个理论纠错牲质很好、但导致的二分类问题较难的编码,与另一个理论纠错性质差一些、但导致的二分类问题较简单的编码,最终产生的模型性能孰强孰弱很难说。

(4)回到起初多分类的两个核心点

拆分策略 问题的拆分方式 对预测结果集集成
OvO 各类别依次组合(N-1)*N/2种分类器 分类器的预测结果集出现最多的类别作为预测结果
OvR 选择一类为正,剩余样例为负N种分类器 预测集只出现一次正类对应的类标记作为预测结果
MvM 若干正、反类,构造必须有特殊的设计 纠错输出码ECOC,海明距离或欧式距离,距离最小

5. 类别不平衡问题

5.1 定义

如果不同类别的训练样例数目稍有差别,通常影响不大,但若差别很大,则会对学习过程造成困扰。例如有998个反例,但是正例只有2个,那么学习方法只需要返回一个永远将新样本预测为反例的学习器,就能达到99.8%的精度;然而这样的学习器往往没有价值,因为它不能预测出任何正例。
  **类别不平衡(class-imbalance)就是指分类任务中不同类别的训练样例数目差别很大的情况。**在现实的分类学习任务中,我们经常会遇到类别不平衡,例如在通过拆分法解决多分类问题时,即使原始问题中不同类别的训练样例数目相当,在使用OvR(一对其余,One vs. Rest,简称OvR)、MvM(多对多,Many vs. Many,简称MvM)策略后产生的二分类任务仍可能出现类别不平衡现象,因此有必要了解类别不平衡性处理的基本方法。
  
从线性分类器的角度理解

通常在一个二分类的问题中,我们经常将0.5作为预测结果的分类标准,比如将预测概率大于0.5分为A类,预测概率小于0.5分为B类,这里的0.5就是分类阈值。

在二分类问题中,假如预测一个样本为A的概率为p,那么它为B的概率为1-p,而p/(1-p)表示两类可能性的比,即几率(odds),或称为优势比。如果p/(1-p)>1,我们认为该样本是A类的几率大于B。然而,在一个数据集中正负样本比例不相同时,此时会有一个观测几率,假设在数据集中有m个A样本,n个B样本,那么观测几率为m/n(样本均衡的情况下观测几率为1)。

在算法分类过程中,如果预测几率p/(1-p)大于实际的观测几率m/n,此时我们才把样本分类为A,而不是以0.5作为分类阈值(样本均衡情况下以0.5作为阈值)
用公式表示:  
             p/(1p)>m/np/(1-p)>m/np/(1−p)>m/n
计算结果得到:   
             p>m/m+np>m/(m+n)p>m/(m+n)

此时只有当 p>m/(m+n)p>m/(m+n)p>m/(m+n) 时,预测结果为A类,这里m/(m+n)m/(m+n)m/(m+n) 取代 0.5 成为新的分类阈值。

借助以上的原理,在分类学习中面对样本不均衡时,我们可以采用原有不均衡的样本进行学习,然后通过改变决策规则来做分类,比如在样本均衡时我们0.5作为分类阈值,而在样本不均衡的情况下我们可以规定预测概率需要达到0.8才能被预测为多数类。也可以通过以下公式进行转化,将阈值重新转化为0.5:
p1p=p1p×nm\frac{p'}{1-p'} = \frac{p}{1-p}×\frac{n}{m}1−p′p′​=1−pp​×mn​
这种类别不平衡学习的策略也叫“再缩放”(rescaling)或“再平衡”(rebalance)

5.2 类别不平衡的解决方法

再缩放的思想虽然简单,但是实际操作却不平凡。
解决方法:
1、欠采样(undersampling),减少数量较多那一类样本的数量,使得正负样本比例均衡。
2、过采样(oversampling),增加数量较少那一类样本的数量,使得正负样本比例均衡。
3、不处理样本,样本分类阈值移动(threshold-moving)。

详细的介绍参考另外一篇博客:[]

6. 课后练习参考答案

[https://blog.csdn.net/icefire_tyh/article/details/52065224]

参考文献:
[1] [统计学习-李航]
[2] [机器学习西瓜书-周志华]
[3] 期刊:基于聚类欠采样的集成不均衡数据分类算法,工程学报

标签:周志华,样本,分类,分类器,增益,类别,第四章,决策树
来源: https://blog.csdn.net/weixin_41725746/article/details/90447839

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有