数据挖掘导论 - 第四章:决策树 - 笔记

预备知识

分类与回归

通过学习得到一个目标函数(分类模型) f,把每个属性集x映射到一个预先定义的类标号y
回归是一种预测建模任务,其中目标属性y是连续的

分类模型的目的

  • 描述性建模
    分类模型可以作为解释性的工具,用于区分不同类中的对象。
  • 预测性建模
    用于预测位置记录的类标号
    分类计数适合预测或描述二元或标称类型的数据集,对于叙述分类不太有效。

解决分类问题的一般方法

分类技术:根据输入数据集建立分类模型的系统方法。例如:决策树分类法、基于规则的分类法、神经网络、支持向量机、朴素贝叶斯分类法。以上属于学习算法,即拟合输入数据中类标号和属性集之间的联系,预测未知样本的类标号。
建立分类模型的过程
混淆矩阵提供衡量分类模型性能的信息
下图中的f01为实际属于类0但是被错误分为类1。因此在该图中正确分类的样本总数为(f11+f00),错误预测的样本总数是(f01+f10)。
二类问题的混淆矩阵
性能度量
准确率
准确率公式
错误率
错误率公式

决策时归纳

决策树工作原理

结点类型

  • 根结点:没有入边,担忧零条或多条出边
  • 内部结点:恰有一条入边和两条或多天出边
  • 叶结点(终结点):恰有一条入边,但没有出边
    决策树中每个叶结点都赋予一个类标号,非终结点包含测试条件

如何建立决策树

贪心策略:在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法

  1. Hunt算法:将训练记录集相继划分成较纯的子集,以递归方式建立决策树。
    设Dt是与结点t相关联的训练集,而y = {y1, y2, …, ye}是类标号,则Hunt算法的递归定义为
    (1)如果Dt中所有记录都属于同一个类yt,则t是叶结点,用yt标记
    (2)如果Dt中包含属于多个类的记录,则选择一个属性测试条件,将记录划分成较小的子集。对于测试条件的每个输出,创建一个子女结点,兵哥工具测试结果将Dt中的记录分散到子女结点中。然后对于每个子女结点,递归的调用该算法。
    附加条件处理以下情况
    (1)算法第二部创建的子女结点可能为空,即不存在与这些结点相关联的记录。如果没有一个训练记录包含于这样的结点相关联的属性值组合,这种情形就可能发生。这时,该结点成为叶结点,类标号为其父结点上训练记录的多数类。
    (2)第二步,如果于Dt相关联的所有记录都具有相同的属性值(目标属性除外),则不可能进一步划分这些记录。在这种情况下,该结点为叶结点
  2. 决策树归纳的设计问题
    (1)如何分裂训练记录?
    树增长过程的每个递归步都必须选择一个属性测试条件,将记录划分成较小的子集。为了实现这个步骤,算法必须提供为了不同类型的属性指定测试条件的方法,并且提供评估每种测试条件的客观度量
    (2)如何停止分裂过程?
    需要有结束条件,以终止决策树的生长过程。一个可能的策略是分裂结点,直到所有记录都属于同一个类,或者所有极了都具有相同的属性值。尽管两个结束条件对于结束决策树归纳算法都是充分的,但还是可以使用其他的标准提前停止树的生长过程。

表示属性测试条件的方法

  • 二元属性
    测试条件产生两个可能结果
    二元属性测试条件
  • 标称属性
    有多个属性值,可以用多路划分或二元划分表示。一个k个属性值的二元化分所有2^(k-1) - 1种方法
    标称属性测试条件
  • 序数属性在不违背序数属性值的有序性的条件下,产生二元或多路划分
    序数属性分组的不同方式
  • 连续属性
    不论是二元化分还是多路划分都要考虑最佳的划分点,将连续属性离散化,并赋予每个离散化区间一个新序数值,保持有序性。
    连续属性的测试条件

选择最佳划分的度量

使用划分前和划分后记录的类分布定义一个度量,来确定划分记录的最佳方法
使用p(i|t)或p(i)表示在结点t中属于类i的记录的占比
用(p0, p1)记录结点的类分布,其中p0 = 1 - p1
根据划分后子女结点的不纯性作为度量来选择最佳划分,例如(1, 0)具有零不纯性,(0.5, 0.5)具有最高不纯性
不纯性度量的例子:
不纯性度量
例子
补充
信息熵(Entropy):接收的每条消息中包含的信息的平均量
基尼系数(Gini index):根据劳伦茨曲线所定义的判断年收入分配公平程度的指标。基尼指数是基尼系数乘100倍作百分比表示。在民众收入中,基尼系数越小,年收入分配越平均;基尼系数越大,年收入分配越不平均。
分类误差(Classification Error)
三种度量间的比较
在这里插入图片描述
为了确定测试条件的效果,比较父结点于子结点间的不纯程度的差,差越大,测试条件效果越好。

增益Δ是划分效果的标准
增益Δ
I(.) = 给定结点的不纯性度量
N = 父结点熵记录总数
k = 属性值的个数
N(vj) = 与子结点vj相关联的记录个数
I(parent) = 不变的值
由该公式可知,最大化增益等价于最小化子结点的不纯度度量的加权平均值
若用熵做该公式的不纯度度量,熵的差就是信息增益(information gain) Δinfo

  1. 二元属性划分
    划分二元属性

  2. 标称属性的划分
    二元划分的Gini指标计算与二元属性相似。多路划分则计算每个属性的Gini指标,最后加权相加
    标称属性的划分

  3. 连续属性的划分

连续属性的划分

  1. 增益率
    没看懂啊没看懂~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    解决输出的测试条件过多的问题
    限制测试条件只能是二元划分
    修改评估划分的标准,考虑属性测试条件产生的输出数
    C4.5算法增益率公式如下
    增益率
    划分信息

决策树归纳算法

TreeGrowth算法
(1)函数createdNode()为决策树建立新结点。决策树的一个结点,要么是一个测试条件记作node.test_could,要么是一个类标号记作node.label
(2)函数find_best_split()确定应当选择哪个属性作为划分训练记录的测试条件。测试条件的选择取决于使用哪种不纯性度量来评估划分,一些广泛使用的度量包括熵、Gini指标、χ^2统计量。
(3)函数classify()确定叶结点的类标号。对于每个叶结点t,令p(i|t)表示该结点熵属于类i的训练记录所占的比例,在大多数情况下,都将叶结点指派到具有多数记录的类
leaf.label = argmax p(i|t)
argmax 返回最大化p(i|t)的参数i。
(4)函数stopping_cond()通过检查是否所有记录都属于同一个类,或者都具有相同的属性值,决定是否终止决策树的增长。终止的另一种方法是,检查记录数是否小于某个最小阈值。

决策树归纳算法框架
TreeGrowth(E, F)

	if stopping_cond(E, F) == true:	#stopping_cond()通过检查是否所有记录都属于同一个类,或者都具有相同的属性值
		leaf = createNode()			#createdNode()为决策树建立新结点
		leaf.label = Classify(E)	#该结点的类标号为classify(E)
		return leaf					#classify()确定叶结点的类标号
	else:
		root = createNode()								#该结点的测试条件为find_best_split(E, F)
		root.test_cond = find_best_split(E, F)			#find_best_split()确定应当选择哪个属性作为划分训练记录的测试条件
		V = {v | v 是root.test_cond的一个可能的输出}
		for v in V:
			Ev = {e | root.test_cond(e)=v && e in E}
			child = TreeGrowth(Ev, F)
			将child作为root的派生结点添加到树中
			将边(root->child)标记为v
		end for
	end if
	return root

树剪枝:减小决策树的规模提高决策树的泛化能力,决策树过大易受过分拟合现象的影响

实例:Web机器人检测

区分用户正常访问与web爬虫访问
为了对Web会话进行分类,需要构造每次会话特性的特征。
显著的有深度和宽度。
深度确定页面的最大距离,一般以主页的深度为0.
宽度度量Web图(分支)的宽度,例如主页拥有同往另外两个网页的链接,则宽度为2。
决策树
该模型表明可以从以下4个方面区分出web机器人和正常用户。
  (1)web机器人的访问倾向于宽而浅,而正常用户访问比较集中(窄而深)。
  (2)与正常的用户不同,web机器人很少访问与web文档相关的图片页。
  (3)web机器人的会话的长度趋于较长,包含了大量请求页面。
  (4)web机器人更可能对相同的文档发出重复的请求,因为正常用户访问的网页常常会被浏览器保存。

决策树归纳的特点

(1)决策树归纳是一种构建分类模型的非参数方法。不要求任何先验假设,不假定类和其他属性服从一定的概率分布。
(2)找到最佳的决策树是NP完全问题。许多决策树算法都采取启发式的方法指导对假设空间的搜索。例如,Hunt算法就采用了一种贪心的、自顶向下的递归划分策略建立决策树。
(3)已开发的构建决策树技术不需要昂贵的计算代价,在训练集非常大时也可以快速建立模型。此外,决策树一旦建立,样本分类非常快,最坏情况下的时间复杂度是O(w),其中w是树的最大深度。
(4)决策树相对容易解释,特别是小型的决策树,在很多简单的数据集上,决策树的准确率也可以与其他分类算法相媲美。
(5)决策树是学习离散值函数的典型代表。然而,它不能很好地推广到某些特定的布尔问题。一个著名的例子是奇偶函数,当奇数(偶数)个布尔属性为真时其值为0(1)。对这样的函数准确建模需要一颗具有2d个结点的满决策树,其中d是布尔属性的个数。
(6)决策树算法对于噪声的干扰具有相当好的鲁棒性(适应性),采用避免过分拟合的方法之后尤其如此。
(7)冗余属性不会对决策树的准确率造成不利的影响。一个属性如果在数据中它与另一个属性是强相关的,那么它是冗余的。
在两个冗余的属性中,如果已经选择其中一个作为用于划分的属性,则另一个将被忽略。
然而,如果数据集中含有很多不相关的属性(即对分类任务没有用的属性),则某些不相关属性可能在树的构造过程中偶然被选中,导致决策树过大庞大。通过在预处理阶段删除不相关属性,特征选择技术能够版主提高决策树的准确率。
(8)由于大多数的决策树算法都采用自顶向下的递归划分方法,因此沿着树向下,记录会越来越少。在叶结点,记录可能太少,对于叶结点代表的类,不能做出具有统计意义的判决,这就是所谓的数据碎片data fragmentation问题。解决该问题的一种可行的方法是,当样本小于某个特定阈值时停止分裂。
(9)子树可能在决策树中重复多次,如下图所示,这使得决策树过于复杂,并且可能更难解释。当决策树的每个内部结点都依赖单个属性测试条件时,就会出现这种情形。由于大多数的决策树算法都采用分治划分策略,因此在属性空间的不同部分可以使用相同的测试条件,从而导致子树重复问题。
子树重复
(10)迄今为止,本章介绍的测试条件每次都只涉及一个属性。这样,可以将决策树的生长过程看成划分属性空间为不相交的区域的过程,直到每个区域都只包含同一类的记录见下图。两个不同类的相邻区域之间的边界称作决策边界(decision boundary)。由于测试条件只涉及单个属性,因此决策边界是直线,即平行于“坐标轴”,这就限制了决策树对连续属性之间复杂关系建模的表达能力。下图显示了一个数据集,使用一次只涉及一个属性的测试条件的决策树算法很难有效地对它进行分类。
二维数据集的决策树及决策边界
使用仅涉及单个属性的测试条件不能有效划分的数据集的例子
**斜决策树(oblique decision tree)**可以克服这样的距西安,它允许测试条件涉及多个属性。拥有更强的表达能力,但是找出合适的测试条件相当复杂。
构造归纳(constructive induction) 将数据划分成齐次非矩形区域。创建复合属性,代表已有属性的算数或逻辑组合,并提供更好的分类能力。缺点是由于新创建的属性时已有属性的组合,构造归纳易产生冗余的属性,
(11)研究表明不纯性度量方法的选择对决策树算法的性能的影响很小,这是因为许多度量方法相互之间都是一致的,如图4-13所示,实际上,树剪枝对最终决策树的影响比不纯性度量选择的影响更大。

模型的过分拟合

误差分类
训练误差(再代入误差、表现误差): 训练记录熵误分类样本比例
**泛化误差:**在未知记录上的期望误差

模型拟合不足 当决策树很小时,训练和检测误差都很大。此时模型尚未学习到数据的真实结构
模型过分拟合训练误差不断降低,检验误差增大。当训练数据增加时, 树的规模过大,结点过多,易拟合一些噪声,降低检验误差。

过分拟合的原因

1、噪声导致的过分拟合
2、缺乏代表性样本导致的过分拟合

泛化误差估计

  1. 使用再代入估计
    再代入估计方法假设训练数据集可很好地代表整体数据,因而,可以使用训练误差提供对泛化误差的乐观估计。
    在这样的前提下,决策树算法简单地选择产生最低训练误差的模型作为最终的模型。然而,训练误差通常是泛化误差的一种很差的估计。
  2. 结合模型复杂度
    模型越复杂,出现过分拟合的几率就越高,因此模型越简单越好。
    奥卡姆剃刀(Occam’s razor) :给定两个具有相同泛化误差的模型,较简单的模型比比较复杂的模型更可取。
    奥卡姆剃刀是很直观的原则,因为复杂模型中的附加成分很大程度上是完全对偶然的拟合
    悲观误差评估 使用训练误差与模型复杂度罚项的和计算泛化误差。结果泛化误差可以看作模型的悲观误差估计。
    最小描述长度原则 结合模型复杂度,基于称作最小描述长度原则的信息论方法。
  3. 估计统计上界
  4. 使用确认集
    将训练集再分,例如将训练集中三分之二用于训练,三分之一用于误差估计

处理决策树归纳中的过分拟合

  • **先剪枝(提前终止规则)**观察不纯性度量的增益,再低于某个确定的阈值时停止树的生长。避免产生过分拟合训练数据的复杂子树。缺点时难以寻找适合的阈值
  • 后剪枝再树生长完成后,再修剪。
    (1)用新的叶结点替换子树,该叶结点的类标号由树下记录中的多数类确定
    (2)用子树中最长使用的分支代替子树
    剪枝

评估分类器的性能

保持方法

**保持(Holdout)方法:**将被标记的原始数据划分成两个不相交的集合,分别称为训练集合检验集,在训练数据集上归纳分类模型,在检验集上评估模型的性能。
局限性用于训练的被标记样本较少,因为要保留一部分记录用于检验。模型可能高度依赖于训练集和检验集的构成。

随机二次抽样

**随机二次抽样:**多次重复保持方法来改进对分类器性能的估计

交叉验证

**交叉验证(cross-validation):**假设把数据分为相同大小的两个子集,首先,我们选择一个子集作为训练集,而另一个做检验集,然后交换两个集合的角色,原先做训练集的现在做检验集,反之亦然,这种方法较二折交叉验证。总误差通过对两次运行的误差求和得到。

自助法

**自助法(boostrap):**训练记录采用有放回抽样,即已经选座训练的记录将放回原来的记录集中,使得它等概率地被重新抽取

比较分类器的方法

估计准确度的置信区间

使用二项式实验建模来推到置信区间,建立支配准确率度量的概率分布
二项式实验 的特性(1)实验由N个独立的实验组成,其中每个实验由两种可能的结果,成功与失败 (2)每个试验成功的概率p时常数。例如统计N次抛硬币的可能就是二项式实验。

比较两种分类方法的性能

k折交叉验证分类方法的性能。
把数据集D平均分为k个部分,使用每种分类法再k-1份数据上构建模型,再剩余的划分上检验。重复k次,每次使用不同的划分验证。

  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值