【机器学习导引】ch4-决策树

基本流程

两个需要解决的问题

  1. 属性顺序:
    • 问题:哪些属性在前面,哪些属性在后面?
    • 这个问题指的是在处理数据或进行排序时,需要确定属性的排列顺序,以便更好地进行数据处理或分析。
  2. 属性选择:
    • 问题:哪些属性使用,哪些属性不用?
    • 这里强调了选择属性的必要性,即在分析数据时,应该根据需求选择有用的属性,并剔除不必要的属性。

两种方法:

  • 划分选择:这与属性顺序相关,可能是指如何合理地划分不同的属性并安排顺序。
  • 剪枝处理:与属性选择相关,指的是如何精简数据或过程,去掉不必要的属性或步骤,以优化系统或算法的性能。

决策树的一些关键概念和流程

  1. 决策树的基本概念:
    • 决策树基于“树”结构进行决策。
    • 每个“内部结点”对应于某个属性上的“测试”(test)
    • 每个分支对应于该测试的一个可能结果(即属性的某个取值)
    • 每个“叶结点”对应于一个**“预测结果”**
  2. 学习过程:
    • 通过对训练样本的分析来确定“划分属性”(即内部结点所对应的属性)
  3. 预测过程:
    • 在预测时,将测试示例从根结点开始,沿着划分属性所构成的“判定测试序列”下行,直到叶结点得出预测结果。

决策树算法的原理

  1. 决策树策略:分而治之
    • 决策树使用“分而治之”策略,通过递归过程从根结点到叶结点不断进行划分。
    • 在每个中间结点,寻找一个合适的“划分”属性(split or test),根据这个属性来对样本进行分类。
  2. 三种停止条件:
    • 当前结点包含的样本全属于同一类别,无需再划分。
    • 当前属性集为空,或者所有样本在所有属性上的取值相同,无法继续划分。
    • 当前结点包含的样本集合为空,不能再划分。

划分选择

信息增益和信息熵[entropy]

  1. 信息熵(entropy):
    • 信息熵是衡量样本集合**“纯度”**的常用指标。

    • 假设当前样本集合 D D D 中第 k k k 类样本所占的比例为 p k p_k pk,则 D D D信息熵定义为:

      E n t ( D ) = − ∑ k = 1 ∣ Y ∣ p k log ⁡ 2 p k Ent(D) = - \sum_{k=1}^{|Y|} p_k \log_2 p_k Ent(D)=k=1Ypklog2pk

      其中, ∣ Y ∣ |Y| Y 是样本类别的总数。

    • 信息熵的值越,表示 D D D纯度越高。即如果所有样本都属于同一类,则信息熵为 0 0 0

    • 信息熵的最小值为 0 0 0(样本完全纯净),最大值为 log ⁡ 2 ∣ Y ∣ \log_2 |Y| log2Y(样本完全混乱)。

  2. 信息增益:
    • 信息增益是以信息熵为基础,计算当前划分对信息熵所造成的变化。通过信息增益可以判断某个属性是否适合作为决策树的划分依据。

信息熵的公式表示样本集合的无序程度,信息增益则衡量某个属性的划分能够降低多少无序程度。通常在决策树的构建中,会选择信息增益最大的属性进行划分。

何量化一个信息的含量

提出了衡量信息量 I ( x ) I(x) I(x) 需要满足的三个条件:

  1. 非负性: 信息量 I ( x ) I(x) I(x) 应该是非负的,即 I ( x ) ≥ 0 I(x) \geq 0 I(x)0。这意味着信息量不能为负值。
  2. 可相加性: 信息量具有可相加性,即当两个独立事件 x x x y y y 同时发生时,其信息量可以相加,满足 I ( x y ) = I ( x ) + I ( y ) I(xy) = I(x) + I(y) I(xy)=I(x)+I(y)
  3. 与事件概率 p ( x ) p(x) p(x) 的关系: 信息量与事件发生的概率成反比。也就是说,事件发生的概率越大,提供的信息量越小;概率越小,信息量越大。

I ( x ) = − log ⁡ 2 p ( x ) I(x) = -\log_2 p(x) I(x)=log2p(x)

解释如下:

  • 公式解释: 信息量 I ( x ) I(x) I(x) 与事件的概率 p ( x ) p(x) p(x) 成反比。通过对概率 p ( x ) p(x) p(x) 取以 2 2 2 为底的对数,再取负号,就可以得到该事件的信息量。这个公式能够满足之前提到的三条性质。

验证信息量的可相加性(第二条性质):

I ( x y ) = − log ⁡ 2 ( p ( x ) p ( y ) ) = − log ⁡ 2 p ( x ) + ( − log ⁡ 2 p ( y ) ) = I ( x ) + I ( y ) I(xy) = -\log_2 (p(x) p(y)) = -\log_2 p(x) + (-\log_2 p(y)) = I(x) + I(y) I(xy)=log2(p(x)p(y))=log2p(x)+(log2p(y))=I(x)+I(y)

这一步推导证明了如果两个事件 x x x y y y 独立发生,它们的联合概率可以表示为各自概率的乘积,因此对应的总信息量就是各自信息量的和。这验证了信息量公式满足相加性条件。

信息熵

  1. 信息熵(Shannon Entropy):

    • 信息熵 H ( x ) H(x) H(x)消息的平均信息量,也称为香农熵。

    • 公式为:

      H ( x ) = ∑ i = 1 n I ( x i ) p ( x i ) = − ∑ i = 1 n p ( x i ) log ⁡ 2 p ( x i ) H(x) = \sum_{i=1}^{n} I(x_i) p(x_i) = - \sum_{i=1}^{n} p(x_i) \log_2 p(x_i) H(x)=i=1nI(xi)p(xi)=i=1np(xi)log2p(xi)

      其中, p ( x i ) p(x_i) p(xi) 表示第 i i i 种结果发生的概率, I ( x i ) I(x_i) I(xi) 是该结果的信息量。

  2. 含义:

    • 信息熵衡量了在一组可能结果中,平均每个结果带来的不确定性。
      • 结果的概率越均匀,熵值越
      • 如果某个结果特别确定,熵值就会较

信息增益

  1. 属性取值:
    • 假设离散属性 a a a 的取值为 { a 1 , a 2 , … , a V } \{a^1, a^2, \dots, a^V\} {a1,a2,,aV},表示属性 a a a V V V 个可能的取值。
    • 定义 D v D^v Dv 为数据集中属性 a a a 的取值为 a v a^v av 的样本集合。
  2. 信息增益公式:
    • 信息增益 G a i n ( D , a ) Gain(D, a) Gain(D,a) 表示对数据集 D D D 按照属性 a a a 进行划分所带来的信息增益。

    • 公式为:

      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)

    • 解释公式:

      • E n t ( D ) Ent(D) Ent(D)划分前的数据集 D D D 的信息熵。
      • ∑ v = 1 V ∣ D v ∣ ∣ D ∣ E n t ( D v ) \sum_{v=1}^{V} \frac{|D^v|}{|D|} Ent(D^v) v=1VDDvEnt(Dv)划分后各子集的加权信息熵
      • ∣ D v ∣ ∣ D ∣ \frac{|D^v|}{|D|} DDv v v v 个子集的权重,表示该子集在总体中的占比,样本越多的子集越重要。

总的来说,信息增益用来衡量某个属性对数据集划分的有效性,信息增益越大,表示该属性能够更好地将数据分类,是决策树算法中选择最佳划分属性的依据。

样例

在这里插入图片描述

计算:

  1. G a i n ( D , 色泽 ) = ? Gain(D,色泽)=? Gain(D,色泽)=?
  2. G a i n ( D , 纹理 ) = ? Gain(D,纹理)=? Gain(D,纹理)=?

回答:

  1. 计算划分前的数据集 D D D 的信息熵:

    1. 数据:是否是好瓜
      1. n u m ( “是” ) = 2 , D 1 = { 1 , 2 } num(“是”)=2,D_1=\{1,2\} num()=2D1={1,2}
      2. n u m ( “否” ) = 2 , D 1 = { 3 , 4 } num(“否”)=2,D_1=\{3,4\} num()=2D1={3,4}
    2. 信息熵计算:

    E n t ( D ) = − ∑ k = 1 ∣ Y ∣ p k log ⁡ 2 p k = − ( 2 4 l o g 2 2 4 + 2 4 l o g 2 2 4 ) = 1 Ent(D) = - \sum_{k=1}^{|Y|} p_k \log_2 p_k = -(\frac{2}{4}log_2^{\frac{2}{4}} + \frac{2}{4}log_2^{\frac{2}{4}}) = 1 Ent(D)=k=1Ypklog2pk=(42log242+42log242)=1

  2. G a i n ( D , 色泽 ) = ? Gain(D,色泽)=? Gain(D,色泽)=?

    1. 数据:是否是乌黑

      1. n u m ( “乌黑” ) = 2 , D 1 = { 1 , 2 } num(“乌黑”)=2,D_1=\{1,2\} num(乌黑)=2D1={1,2}
      2. n u m ( “浅白” ) = 2 , D 1 = { 3 , 4 } num(“浅白”)=2,D_1=\{3,4\} num(浅白)=2D1={3,4}
    2. 划分后的信息熵:

      1. E n t ( D 1 ) = − ( 1 × l o g 2 1 + 1 × l o g 2 1 ) = 0 Ent(D^1) = -(1\times log_2^1 + 1 \times log_2^1) = 0 Ent(D1)=(1×log21+1×log21)=0
      2. E n t ( D 2 ) = − ( 1 × l o g 2 1 + 1 × l o g 2 1 ) = 0 Ent(D^2) = -(1\times log_2^1 + 1 \times log_2^1) = 0 Ent(D2)=(1×log21+1×log21)=0
    3. 划分后的加权信息熵

      ∑ v = 1 2 ∣ D v ∣ ∣ D ∣ E n t ( D v ) = 1 2 × 0 + 1 2 × 0 = 0 \sum_{v=1}^{2} \frac{|D^v|}{|D|} Ent(D^v) = \frac{1}{2} \times 0 + \frac{1}{2} \times 0 = 0 v=12DDvEnt(Dv)=21×0+21×0=0

    4. 信息增益

    G a i n ( D , 色泽 ) = 1 − 0 = 1 Gain(D,色泽)= 1 - 0 = 1 Gain(D,色泽)=10=1

  3. G a i n ( D , 纹理 ) = ? Gain(D,纹理)=? Gain(D,纹理)=?

    1. 数据:是否是清晰

      1. n u m ( “清晰” ) = 2 , D 1 = { 1 , 3 } num(“清晰”)=2,D_1=\{1,3\} num(清晰)=2D1={1,3}
      2. n u m ( “模糊” ) = 2 , D 1 = { 2 , 4 } num(“模糊”)=2,D_1=\{2,4\} num(模糊)=2D1={2,4}
    2. 划分后的信息熵:

      1. E n t ( D 1 ) = − ( 1 2 × l o g 2 1 + 1 2 × l o g 2 1 ) = 1 Ent(D^1) = -(\frac{1}{2} \times log_2^1 + \frac{1}{2} \times log_2^1) = 1 Ent(D1)=(21×log21+21×log21)=1
      2. E n t ( D 2 ) = − ( 1 2 × l o g 2 1 + 1 2 × l o g 2 1 ) = 1 Ent(D^2) = -(\frac{1}{2}\times log_2^1 + \frac{1}{2} \times log_2^1) = 1 Ent(D2)=(21×log21+21×log21)=1
    3. 划分后的加权信息熵:

      ∑ v = 1 2 ∣ D v ∣ ∣ D ∣ E n t ( D v ) = 1 2 × 1 + 1 2 × 1 = 1 \sum_{v=1}^{2} \frac{|D^v|}{|D|} Ent(D^v) = \frac{1}{2} \times 1 + \frac{1}{2} \times 1 = 1 v=12DDvEnt(Dv)=21×1+21×1=1

    4. 信息增益

    G a i n ( D , 色泽 ) = 1 − 1 = 0 Gain(D,色泽)= 1 - 1 = 0 Gain(D,色泽)=11=0

剪枝处理

通过主动去掉一些分支来降低过拟合的风险。过拟合是由于分类训练样本的分支过多导致模型在训练集上表现很好,但在实际应用中表现较差的现象。

  1. 预剪枝(pre-pruning):在生成决策树时,提前终止某些分支的生成。
  2. 后剪枝(post-pruning):先生成一棵完整的树,然后再回头进行剪枝,去掉不必要的分支。

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

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

相关文章

[ DOS 命令基础 4 ] DOS 命令命令详解-端口进程相关命令

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

博客系统(SpringBoot项目)

文章目录 一、项目开发的流程二、项目开发2.1 准备工作2.2 开发公共模块:把能写的先写了什么是公共模块model层mapper层定义统一返回结果统一异常处理 2.2 博客列表页2.3 更改显示的时间2.4 博客详情页2.5 登录Session式登录方法分析使用Token来实现登录 2.6 强制登…

软件设计师笔记-数据结构

数据结构 数据元素的集合及元素间的相互关系和构造方法。 线性表的存储结构 顺序存储链式存储 单链表节点 typedef struct node { int data; struct node *link; }NODE, *LinkList; 双向链表 每个节点有两个指针,分别指出直接前驱和直接后继。 循环链表 尾…

LangChain Ollama实战文献检索助手(一)环境配置和输入输出解析

挑选合适的模型 调用API需要花钱,因此在搭建阶段最佳的方法是利用Ollama部署本地CPU推理的轻量化大模型。大模型选择可以参照hugging face的榜单open-llm-leaderboard。 这里对我来说,要选择的模型需要满足 1.ollama上有的模型。 2.推理速度快&#xff…

在docker中搭建redis哨兵环境

文章目录 一、引言二、环境准备前提条件目录结构 三、配置文件1. 主节点配置文件 sentinel-master.conf2. 从节点配置文件3. 哨兵配置文件 sentinel.conf4. Docker Compose 文件 四、启动 Docker Compose五、验证哨兵机制1. 检查主节点状态2. 检查从节点状态3. 检查哨兵状态4. …

上线不出网机器

不出网机器介绍 上线不出网机器是我们常见的问题,如何在内网中实现不出网机器的上线呢,我们分为了如下的形式,根据之前所学的内容我们开始进行实验,常见的网络拓扑如下 情况分类 上线不出网机器一般是指B区域的电脑上线到CS工具或…

Modbus解析流程全面升级:体验全新核心与终极优化!

01 前言 本文章原文发表于我的微信公众号,请大家关注阅读,涉及的源代码等都在公众号,请搜索公众号: 智能家居NodeRed和HomeAssistant 即可关注。 02 全面改进的解析流程 前面发布过的Modbus解析流程在经过多个设备测试后发现存…

Python邮差:如何用代码精确投递商品快递费用的密信

目录 一、准备工作 二、编写API请求脚本 三、解析与处理快递费用数据 四、案例应用:模拟电商平台的快递费用计算 五、自动化邮件通知 六、总结 在电子商务的广阔天地里,精确计算并快速传递商品快递费用是一项至关重要的任务。作为Python邮差&#…

修改sql server 数据库的排序规则Chinese_PRC_CI_AS(字符集+排序)

文章目录 引言I 解决方案案例II 知识扩展排序规则SQL SERVER支持的所有排序规则引言 新增sql server 数据库实例的默认排序规则不支持中文存储,导致乱码 解决方案: 修改排序规则为Chinese_PRC_CI_AS 或者 Chinese_PRC_Stroke_CI_AS_WS或者Chinese_PRC_CI_AI_KS_WS 仅对新增…

七十页PPT展示智驾时代来临,国产汽车零部件厂商准备几何?

u 智能汽车车身架构主要可分为感知、决策控制、执行及通信四大板块,目前国产汽车零部件供应商在感知系统已取得较强的话语权,在决策控制系统、执行系统领域亦取得一定竞争力。 u 感知系统主要硬件包括激光雷达、毫米波雷达、摄像头等;其中&a…

Springboot 整合 Java DL4J 打造自然语言处理之智能写作助手

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…

moffee

https://github.com/BMPixel/moffee Moffee:一键将Markdown转换为专业PPT,支持多主题与实时预览 文章目录 1-安装1.1-环境1.2-编码 2-使用2.1-语法 moffee 演示让 Markdown 准备好演示为什么选择 moffee?展示用 Markdown 设置样式媒体布局 1-…

玩转「HF/魔搭/魔乐」平台

模型下载 Hugging Face 下载到 GitHub CodeSpace CodeSpace创建环境: # 安装transformers pip install transformers4.38 pip install sentencepiece0.1.99 pip install einops0.8.0 pip install protobuf5.27.2 pip install accelerate0.33.0下载internlm2_5-7b…

运维高可用架构设计

一、硬件 1、服务器 2、网络架构 二、软件 1、基础组件 组件名称 高可用方式 最少节点数 负载均衡(Tenginx) corsyncpacemaker互为主备 多组集群通过DNS轮循实现一个大集群 2DNS主从集群2RabbitMQ原生HA镜像集群3Zookeeper原生分布式集群3Kafka原生分布式集群3ES原生分布式集…

DICOM标准:MR图像模块属性详解——磁共振成像(MR)在DICOM中的应用

目录 引言 磁共振成像(MR) 一、MR图像模块 二、MR图像属性描述 1、图像类型 (Image Type) 2、抽样每个象素 (Sampling per Pixel) 3、光度插值 (Photometric Interpretation) 4、位分配 (Bits Allocated) 结论 引言 数字成像和通信在医学&#xff08…

SpringBoot在线教育系统:多语言支持

5系统详细实现 5.1 普通管理员管理 管理员可以对普通管理员账号信息进行添加修改删除操作。具体界面的展示如图5.1所示。 图5.1 普通管理员管理界面 5.2 课程管理员管理 管理员可以对课程管理员进行添加修改删除操作。具体界面如图5.2所示。 图5.2 课程管理员管理界面 5.3 …

Cursor和GitHub Copilot之间的竞争

大家好,今天我们要聊聊一个在开发者圈子里引起热议的话题:GitHub Copilot和Cursor之间的竞争,以及Copilot最近宣布的新功能,这可能会改变我们对编程辅助工具的看法。 GitHub Copilot将支持来自Anthropic、Google和OpenAI的模型&am…

Python酷库之旅-第三方库Pandas(181)

目录 一、用法精讲 836、pandas.api.types.is_file_like函数 836-1、语法 836-2、参数 836-3、功能 836-4、返回值 836-5、说明 836-6、用法 836-6-1、数据准备 836-6-2、代码示例 836-6-3、结果输出 837、pandas.api.types.is_list_like函数 837-1、语法 837-2、…

软件测试必会:cookie、session和token的区别~

今天就来说说session、cookie、token这三者之间的关系!最近这仨玩意搞得头有点大🤣 01、为什么会有它们三个 我们都知道 HTTP 协议是无状态的,所谓的无状态就是客户端每次想要与服务端通信,都必须重新与服务端链接,意…

Vue3+vite 加载优化

公司项目,技术栈:vue3viteelementPLusecharts。首屏加载有点慢,针对这个做了一些优化措施,记录一下。之前写过关于vue2版本的优化,有兴趣的可以了解下 定位问题 f12打开控制台,然后Network看下那些包占比大…