机器学习西瓜书笔记(四) 第四章决策树+代码

第4章 决策树

4.1 基本流程

决策树(decision tree)是一种常见的机器学习方法。以二分类任务西瓜分类为例,我们可以得到一个如图的决策树:
在这里插入图片描述

上面这棵决策树可以参考数据结构的二叉树,理解起来很简单。

一般来说,一棵决策树包含一个根结点、若干个内部结点和若干个叶结点;叶结点对应于决策结果,其他每个结点都对应一个属性测试;每个结点包含的样本集合根据测试结果被划分到子结点中;根结点包含样本全集。从根结点到每个叶结点的路径对应了一个判定测试序列。决策树学习的目的是为了产生一棵泛化能力强,即处理未见示例能力强的决策树,其基本流程遵循简单且直观的"分而治之" (divide-and-conquer) 策略。
决策树的生成其实是一个递归过程。在决策树基本算法中,有三种情形会导致递归返回:

  • 当前结点包含的样本全属于同一类别,无需划分。
  • 当前属性集为空,或是所有样本在所有属性上取值相同,无法划分。
  • 当前结点包含的样本集合为空,不能划分。

下面附上决策树学习基本算法:
在这里插入图片描述

首先,决策树的主要目的是分类,也就是说只要剩下的是一类,就可以返回,那么自然,如果剩下的不是一类,那自然进行递归。
第一种情况,如果D中剩下的所有训练样本都是一个类,那自然不用继续递归,直接返回,对应算法的2-4行。第二种情况,决策树的划分过程是依据属性值的不同划分的,那么属性值如果为空就是说所有的属性值都已经划分过了,已经到整个树的最深了,到了叶子结点了,那么剩下的训练样本自然可以视为一类,直接返回。或者说属性值还没有划分结果,但是剩下的所有样本的所有属性值都对应相等,那么在属性空间上就可以认为剩下的所有样本都是一个点,那自然可以都划分为一类,直接返回。此处对应算法的5-7行。第三种情况,属性值上两种情况都不满足时递归,也就是说A剩下的属性不为空,并且D中剩下的所有样本对应A剩下的属性的具体值也不一样,在属性空间上不是一个点,那么自然不能认为D中剩下的所有样本是一个类,此时便需要继续递归。依照A剩下的属性来递归产生分支结点,直到出现前两种情况,才可以返回。此处对应算法的8-15行。

小结

决策树的作用

  • 决策树通过递归地选择最优属性来构建树状结构,从而对数据进行分类或预测。它通过树的分支来表示决策过程中的不同选择,最终达到叶节点,给出预测结果。

决策树的优势

  • 直观易懂:决策树的结构清晰,易于理解和解释,使得模型的决策过程透明。
  • 处理混合数据:能够处理包含数值和类别数据的混合数据集。
  • 无需假设数据分布:与线性回归等方法不同,决策树不需要对数据的分布做出假设。
  • 灵活性:可以处理非线性关系,通过树的分支结构捕捉复杂的数据模式。

决策树的劣势

  • 过拟合:决策树容易对训练数据过度拟合,导致在新数据上的泛化能力下降。
  • 对噪声敏感:决策树对异常值和噪声非常敏感,可能会在这些点上做出错误的决策。
  • 不稳定:小的变化在训练数据中可能会导致生成完全不同的决策树。
  • 可解释性有限:随着树的深度增加,决策树的可解释性会降低。

决策树的用途:决策树在许多领域都有应用,包括但不限于:

  • 医疗诊断:根据病人的症状和检查结果预测疾病。
  • 金融风险评估:预测贷款申请者的违约风险。
  • 客户细分:根据客户的特征进行市场细分。
  • 故障检测:在制造业中检测产品缺陷。

常见应用

  • 二分类问题:如垃圾邮件检测,决策树可以区分垃圾邮件和非垃圾邮件。
  • 多分类问题:如手写数字识别,决策树可以识别多个类别的手写数字。
  • 回归问题:在回归树中,决策树预测连续值,如房价预测。

决策树算法的实现

  • ID3算法:使用信息增益作为划分属性的选择标准。
  • C4.5算法:改进ID3,使用增益率来选择属性,减少对可取值数目较多属性的偏好。
  • CART算法:使用基尼指数来选择划分属性,适用于二分类和回归问题。

决策树的优化:为了提高决策树的性能和泛化能力,通常采用以下策略:

  • 剪枝处理:通过预剪枝和后剪枝减少树的复杂性,降低过拟合风险。
  • 交叉验证:使用交叉验证来选择最佳的树结构和参数。
  • 集成方法:如随机森林和梯度提升树,通过组合多个决策树来提高预测性能。

总结
决策树是一种强大的机器学习工具,适用于各种分类和回归任务。尽管存在一些局限性,但通过适当的优化和集成方法,可以显著提高其性能和泛化能力。

4.2 划分选择

决策树的关键在于上方算法的第8行,即如何选择最优划分属性。一般来说,随着划分过程不断进行,希望决策树的分支节点所包含的样本尽可能是同一类,即结点的"纯度"(purity)越来越高。

4.2.1 信息增益

“信息熵”(information entropy)是度量样本集合纯度最常用的一种指标,假定当前样本集合D中第k类样本所占的比例为 p k ( k = l , 2 , . . . , ∣ y ∣ ) p_k(k=l,2,...,|y|) pk(k=l,2,...,y),则D的信息墒定义为: E n t ( D ) = − ∑ k = 1 ∣ y ∣ p k l o g 2 p k Ent(D)=-\sum_{k=1}^{|y|}p_k log_2 p_k Ent(D)=k=1ypklog2pk。计算时约定, p = 0 p=0 p=0时, p l o g 2 p = 0 plog_2p = 0 plog2p=0。由极限可知,信息熵的最小值为0,最大值为 l o g 2 ∣ y ∣ log_2|y| log2y

假设离散属性a有V个可能的取值 a 1 , . . . , a v {a^1,...,a^v} a1,...,av,若使用a对样本集D来划分,就会产生V个分支结点,其中第v个分支结点包含了D中所有在属性a上取值为 a v a^v av的样本,记为 D v D^v Dv
可以根据上式计算出 D v D^v Dv的信息熵,有可能不同的分支结点包含的样本数不同,所以赋予权重,即样本数越多的话分支结点的影响越大,那么就可以计算出属性a对样本集D进行划分所获得的"信息增益"(information gain): G a i n ( D , a ) = E n t ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ E n t ( D v ) Gain(D,a)=Ent(D)-\sum_{v=1}^{V}\frac{|D^v|}{|D|}Ent(D^v) Gain(D,a)=Ent(D)v=1VDDvEnt(Dv)。一般而言,信息增益越大,就认为用属性a来进行划分所获得的纯度提升最大。著名的ID3学习算法就是以信息增益为准则来选择划分属性。

以下面西瓜数据为例:
在这里插入图片描述

该数据集包含17个训练样例, 用以学习一棵能预测没剖开的是不是好瓜的决策树.显然,|y|=2。在决策树学习开始时,根结点包含D中的所有样例其中正例占 p 1 = 8 17 p_1=\frac{8}{17} p1=178,反例占 p 2 = 0 17 ,可计算出根结点的信息熵为 p_2=\frac{0}{17},可计算出根结点的信息熵为 p2

  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我喝AD钙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值