【机器学习】决策树算法解读

news2024/11/19 15:22:44

【机器学习】决策树算法解读

文章目录

  • 【机器学习】决策树算法解读
    • 1. 介绍
      • 1.1 优缺点
      • 1.2 结构
      • 1.3 学习过程
      • 1.4 决策树与条件概率分布
    • 2. 决策树学习过程
      • 2.1 训练策略
      • 2.2 特征选择
        • 2.2.1 信息增益和条件熵
      • 2.3 决策树的生成
        • 2.3.1 ID3
        • 2.3.2 C4.5
        • 2.3.3 CART
        • 2.3.4 小结
      • 2.4 决策树的剪枝
    • 3. 总结
    • 参考

1. 介绍

决策树是一类机器学习算法,它是一个能够做决策的树模型,由若干个节点组成树状结构。

  • 决策树是一种基本的分类和回归方法,其模型呈树形结构,可以认为是if-then的规则集合。
  • 训练时,利用训练数据,根据损失函数最小化的原则建立决策树模型,预测时,直接利用模型进行分类或回归。

相亲这样一个场景:

  • 母亲:给你介绍个男朋友
  • 女儿:年龄多大?
  • 母亲:26
  • 女儿:长得帅不帅?
  • 母亲:挺帅的
  • 女儿:收入高不高?
  • 母亲:不是很高,也不算太低
  • 女儿:是公务员吗?
  • 母亲:是,在党政机关上班
  • 女儿:那好,我去见见

在这里插入图片描述

  • 可以看出女儿是根据已知的男方的若干条件,来对是否去见他作出判断。上面这个图就是一棵典型的决策树。

1.1 优缺点

  • 优点:其优点是具有很好的可读性,训练和预测的速度快。
  • 缺点:决策树的其中一个缺点是容易过拟合,因此在生成决策树之后需要对其进行修剪处理。

1.2 结构

决策树有三个节点:

  • 根节点:就是树的最顶端,最开始的那个节点。在上图中,“天气”就是一个根节点;
  • 内部节点:就是树中间的那些节点,比如说“温度”、“湿度”、“刮风”;
  • 叶节点:就是树最底部的节点,也就是决策结果。

分支与节点的含义:

  • 每个非叶节点表示一个特征属性测试;
  • 每个分支代表这个特征属性在某个值域上的输出;
  • 每个叶子节点存放一个类别;
  • 每个节点包含的样本集合通过属性测试被划分到子节点中,根节点包含样本全集。
    #其中属性测试的目标是让各个划分出来的子节点尽可能低“纯”,即属于同一类别。

1.3 学习过程

决策树的学习过程包括三个步骤:

  • 特征选择。不同的特征和预测目标具有不同强度的相关性,选择相关性最强的特征能够有效提高预测效果。
  • 节点分裂(生成)。训练集会在决策树中按照节点规则分流,如果 节点A 没办法给出一个满意的分类结果,那它就会选择分裂,分成 2 个或者多个节点。那么根据什么分裂呢?节点A 会用熵来判断用哪个特征分裂是最优的。
  • 剪枝。决策树不加限制地分裂容易产生过拟合现象,剪枝可以一定程度地缓解过拟合,提高泛化能力。

1.4 决策树与条件概率分布

决策树本质上是对于给定特征空间上的一个划分,树上的每一条从根节点到叶节点的路径将特征空间划分成互不相交的一个区域。每个区域的类别分布构成了条件概率分布。

  • 假设 X 为表示特征的随机变量,Y为表示类别的随机变量,则这个条件概率分布可以表示为P(X|Y),各个叶节点上的条件概率往往偏向与某一个类,也就是属于某一个类的概率比较高。决策树在分类时则将落到该叶节点的事例划分为概率最高的类别。

2. 决策树学习过程

  • 我们在做决策树的时候,会经历两个阶段:构造和剪枝,再细分就是特征选择、决策树生成以及修剪。

2.1 训练策略

决策树的学习本质:是从训练数据中归纳出一组与其吻合的规则,或者说是通过对特征空间的划分使每个子空间的分类与训练数据吻合,同时能够有较好的泛化能力。

  • 这种划分一般来说有无穷多个,因此需要一个策略来进行决策树的生成。

决策树用损失函数来实现这一个目标,通过建立一个正则化后的损失函数,采取最小化损失函数的策略来建立决策树。

  • 即使确立了最小化损失函数的目标,在无穷多个决策树中选取最优的一个仍然是一个非常困难的问题。

为了解决这一问题,采取贪心算法构建决策树,可以获得近似最优解。在构建决策树时,不断递归地选取能够时损失函数最小化的特征来对样本进行划分并构建子树根节点,直到某一个节点上所有的样本都位于同一类,或者满足于其他条件时,停止划分该子树。按照这样方法,总决策树下边的每一个子树都是在当前条件下面的一个最好的分类。

  • 以上的方法可以构建一个对训练样本表现很完美的决策树,但是对未知的数据确未必。当树的深度过大时,或者子树上的样本过少时,再对其进行划分可能会造成过拟合。

因此在生成决策树之后,需要对其剪枝,删除过于细分的叶节点,使其退回到父节点。


2.2 特征选择

在构建决策树的时候,最重要的一步是要决定需要选取的特征。通常来说,选取的特征要与最终的分类结果有一定的相关性,如果选取该特征后与随机分类的结果没有太大分布,这样的特征是无效的。

  • 下边用一个简单的例子对选取过程作一个介绍:
    在这里插入图片描述

  • 表中是一个由17个训练样本组成的西瓜数据集,每个样本有6个特征。第一个特征是色泽,分为青绿、乌黑、浅白3类,第二个特征是根蒂形状,有蜷缩、稍蜷和硬挺三类…

  • 在构建决策树时,我们首先想从6个特征中选取一个。

    • 比如色泽一项,将训练数据分成3类。
    • 或者选取根蒂形状,将数据分成3类。
  • 这样就构建出不同的决策树。如下图:
    在这里插入图片描述

  • 这样的决策树可以有多种,但是哪一种是最好的呢?

    • 直观上说,如果按照特征分类结束后,叶节点中的样本类别是更加偏向某一类的,那么按照这个特征分类就比较好了。在数学上可以通过信息增益来描述这一情况。

2.2.1 信息增益和条件熵

1)信息增益
信息量(熵)用 Ent 来表示。信息熵可以理解为平均信息量,就是信息量的期望值。信息是个很抽象的概念,我们平时说信息多,信息少,但是不知道信息到底是有多少,比如我说一句话,这句话中到底有多少信息量。信息熵从另一方面理解也可以说是对信息的一种量化。
在这里插入图片描述
2)熵与信息增益


  • 在这里插入图片描述
    举个例子:如下图
    在这里插入图片描述
    接下来计算上图的熵:
    在这里插入图片描述

  • 条件熵
    一般来说,一个属性的信息增益越大,就意味着使用该属性来进行划分所得到的“纯度提升”越大。因此,我们可以使用信息增益来进行决策树的第一个结点划分属性选择。(选出决策树的第一个顶头划分的属性,再继续往下划分)。

    • 信息熵越小,数据就越纯,信息增益就越大。
      在这里插入图片描述
      计算上图中西瓜数据集中各个属性的信息增益,选取值最大的一个属性作为划分属性。
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

2.3 决策树的生成

按照不同的特征选择方法,也就是信息增益使用的方法,可以将生成方法分为:ID3,C4.5,CART。

2.3.1 ID3

1)ID3算法的核心
在决策树的各个节点上利用信息增益来选取特征,递归构建决策树。具体方法为:

  • 从根节点开始,对其包含的所有样本的所有特征计算信息增益,选取增益最大的特征作为节点特征,建立子节点,再对子节点递归进行以上操作,直到没有再能够分类的特征,或分类后信息增益小于某个阈值,停止构建树。

2)缺点:

  • 只能处理离散型属性,并且倾向于选择取值较多的属性;
  • 对于缺失值的情况没有做考虑;
  • 没有考虑过拟合的问题。

3)原因
信息增益反映的给定一个条件以后不确定性减少的程度,必然是分得越细的数据集确定性更高,也就是条件熵越小,信息增益越大。

2.3.2 C4.5

与ID3算法相似,但是做了改进,将信息增益比作为选择特征的标准。

  • 信息增益比:特征A对训练数据集D的信息增益比gR(D,A), 定义为其信息增益g(D,A)与训练数据集D的经验熵之比。
    在这里插入图片描述
  • 缺点:增益率对可取值数目较少的属性有所偏好,所以倾向于选择取值较少的属性。

2.3.3 CART

  • 无论是ID3还是C4.5,它们都是基于信息论的熵模型的,这里面不可避免的会涉及大量对数运算,那我们能不能在简化模型的同时也不至于完全丢失熵模型的优点呢?

CART分类树算法使用基尼系数来代替信息增益比,基尼系数代表了模型的不纯度,基尼系数越小,则不纯度越低,特征越好。这和信息增益(比)是相反的。

  • 在分类问题中,假设有 k 个类别,第 k 个类别的概率为 pk, 则基尼系数的表达式为:
    在这里插入图片描述
    在这里插入图片描述
  • 基尼系数的特质是:
    • 类别个数越少,基尼系数越低;
    • 类别个数相同时,类别集中度越高,基尼系数越低。

2.3.4 小结

在这里插入图片描述


2.4 决策树的剪枝

在这里插入图片描述

3. 总结

  • 决策树是一种基本的分类和回归方法,其模型呈树形结构;
  • 决策树训练过程大致分为:特征选择、决策树生成以及修剪;
  • 决策树构造生成过程的其中三种算法:ID3、C4.5和CART算法;
  • 为避免产生过拟合现象,我们通过最小化决策树的损失函数来对决策树进行“剪枝”。

参考

【1】https://blog.csdn.net/AAA_jiu/article/details/103041423
【2】https://blog.csdn.net/qq_45997545/article/details/109752960

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/492166.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nacos配置中心、配置热更新、及配置共享的记录

Nacos除了提供了注册中心的功能,同样也提供了配置中心的功能,用于管理一些叫常改动的配置 当微服务部署的实例越来越多,达到数十、数百时,逐个修改微服务配置就会让人抓狂,而且很容易出错。我们需要一种统一配置管理方案,可以集中…

计算时间复杂度详解

1,前置知识 我们在计算时间复杂度之前的前置知识是等差数列的通项公式和求和公式以及等比数 列的通项公式和求和公式 等差数列: 通项公式:ana1(n-1)d(d是公差) 求和公式:Snn(a1an)/2 等比数列&#xf…

【Python入门知识】NumPy数组拆分,超详细讲解

前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 今天我们来学习python中NumPy数组的拆分 拆分 NumPy 数组 拆分是连接的反向操作。 连接(Joining)是将多个数组合并为一个,拆分(Spliting)将一个数组拆分为多个。…

Mysql 学习(七)独立表结构存储 二

段的结构 上一节说过表空间分为各个段,每个段里面又是以区为单位,每个区则有64个页。区根据剩余存储空间分为:Free,FREE_FRAG,FULL_FRAG 三种类型,为了方便管理区,给每个区创建XDES Entry结构&…

【校招VIP】用户反驳:你说大厂校招不会问框架实战,现在就有问的了,打脸了吧?一看是专业技能给自己挖的坑

最近有个用户过来质疑,不是说大厂不考框架的使用吗? 但网上的这两份面经里,却问到关于SpringBoot的问题。 接着发来了相对应的简历,一看,直接真相大白: 他在专业技能这栏写了:我熟练掌握Sprin…

flink内存参数配置学习

直接上官网 配置 JobManager 内存 | Apache Flink配置 JobManager 内存 # JobManager 是 Flink 集群的控制单元。 它由三种不同的组件组成:ResourceManager、Dispatcher 和每个正在运行作业的 JobMaster。 本篇文档将介绍 JobManager 内存在整体上以及细粒度…

自动驾驶中地图匹配定位技术总结

引言 汽车定位是让自动驾驶汽车知道自身确切位置的技术,在自动驾驶系统中担负着相当重要的职责。汽车定位涉及多种传感器类型和相关技术,主要可分为卫星定位、惯性导航定位、地图匹配定位以及多传感器融合定位几大类。其中地图匹配定位技术利用道路物理…

CSS绝对定位、相对定位

目录 静态定位 - static 相对定位 - relative 绝对定位 - absolute 固定定位 - fixed z-index属性: 在CSS中定位有以下4种: 静态定位 - static相对定位 - relative绝对定位 - absolute 固定定位 - fixed 静态定位 - static 静态定位是css中的默认定…

网络机顶盒哪个牌子好?资深数码粉分享网络电视机顶盒排名

智能电视配置跟不上经常死机卡顿,但显示正常的情况下不想花钱换电视机怎么办?一台网络机顶盒就可以解决你的烦恼,安装上网络机顶盒以后就可以让旧电视新生,那么你知道网络机顶盒哪个牌子好吗?如果不懂这行,…

【自然语言处理 | Transformer】Transformer:Attention is All You Need论文讲解

Transformer由论文《Attention is All You Need》提出: 论文地址为: https://arxiv.org/pdf/1706.03762.pdf文章目录 一、Transformer 整体结构二、Transformer 的输入2.1 单词 Embedding2.2 位置 Embedding 三、Self-Attention(自注意力机制…

.net7 通过 JsonTranscoding 实现 gRPC 与 Web API 一鱼两吃

目标 在一个网站内,用一套proto即提供gPRC 调用,又提供 Web API 调用。 实现方法 根据微软官方James Newton King(Newtonsoft.json 作者)的文章,.net7 里面提供了 JsonTranscoding 特性,只需要三步&#x…

听我一句劝,别去外包,干了6年,废了....

先说一下自己的情况,大专生,18年通过校招进入湖南某软件公司,干了接近6年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了6年的功能测试&…

NANK OE骨传导开放式蓝牙耳机发布,极致体验拉满!

近日,中国专业音频品牌NANK南卡发布了全新一代——骨传导开放式蓝牙耳机NANK OE,耳机采用了传统真无线和骨传导的结合方式,带来更加舒适的佩戴体验和音质升级,同时还支持单双耳自由切换,全新的设计收获了市场的喜爱和认…

SignOff Criteria——POCV(Parametric OCV) introduction

文章目录 1. O v e r v i e w Overview Overview2. P O C V A n a l y s i s POCV\ Analysis POCV Analysis3. P O C V F l o w POCV\ Flow POCV Flow4. P O C V R e p o r t POCV\ Report POCV Report 1. O v e r v i e w Overview Overview P r o c e s s v a r i a t i…

数据发送流程

在发送模式下,UART 的串行数据发送电路主要包括一个发送移位寄存器(TSR),TSR 功能是将数据 逐个移位送出。待发数据必须先写到发送缓冲区中。 TXIFx 是发送中断标志位,可配置为发送缓冲区空或TSR 空。 数据的发送支持7bit 、8bit 或9bit 数据…

JavaScript原型链污染学习记录

1.JS原型和继承机制 0> 原型及其搜索机制 NodeJS原型机制,比较官方的定义: 我们创建的每个函数都有一个 prototype(原型)属性,这个属性是一个指针,指向一个对象, 而这个对象的用途是包含可…

为什么用Selenium做自动化测试,你真的知道吗?

目录 手工测试的问题 为什么用自动化 选择合适的测试方式 什么时候引入自动化测试 以Jmeter为代表的测试工具 编程能力既重要又不重要 为什么是Selenium 没有最好的技术,只有合适的技术 web自动化测试效率不高 手工测试的问题 手工操作点点点借助的是人脑的…

知识变现海哥|这3种课程定价最容易爆单

这3种课程定价最容易爆单 一门课怎么才能卖到100万,定价很关键。我卖了160万的课,总结了3种课程定价,组合起来最容易爆单!引流课定价0、1、9.9、19.9一般讲3天结束,用低价吸引大量潜在学员 信任课定价99、699、999等…

C++—非递归【循环】遍历二叉树(前序,中序,后序)思路讲解+代码实现

非递归遍历二叉树 前序中序后序 接下来我们在研究如何使用循环实现遍历二叉树时,以下面的二叉树为例: 在下文的讲解中,不对如何构建这颗二叉树做讲解,直接给出代码,如果有不懂的地方欢迎私信我。 文章中的完整源代码链…

一篇文章搞定《Android内存泄漏》

------《Android内存泄漏》 什么是内存泄漏常见的内存泄漏以及规避方式单例模式引用Activity非静态内部类注册的反注册定时器TimerWebView的内存泄漏资源未关闭属性动画 怎么定位内存泄漏LeakCanary接入:使用:检测: Android Proflier开始检测…