【人工智能 | 机器学习 | 理论篇】决策树(decision tree)

news/2024/9/18 14:46:02/ 标签: 人工智能, 机器学习, 决策树

文章目录

  • 1. 基本流程
  • 2. 划分选择
    • 2.1 信息增益
    • 2.2 增益率
    • 2.3 基尼系数
  • 3. 剪枝处理
    • 3.1 预剪枝
    • 3.2 后剪枝
  • 4. 连续与缺失值
    • 4.1 连续值处理
    • 4.2 缺失值处理
  • 5. 多变量决策树


1. 基本流程

二分类任务决策树流程:
在这里插入图片描述
决策树:包含 1个根结点、若干个内部结点、若干个叶结点。叶结点对应决策结果,内部结点对应属性测试

决策树训练过程
在这里插入图片描述决策树训练时,有 3 种情况会导致递归 return

  1. 结点包含的样本同属于同一类别,无需划分
  2. 属性值完全一致,或者属性集为空(递归边界条件)
  3. 样本集合为空

对第1、2点区别:
样本同属于同一类别,指的是 D 的 y 值取值相同,此时无需划分
属性值完全一致,但是对应的 y 值可能有多个,此时也无需划分。一个原因导致多个结果,不能界定该原因具体会导致哪个结果

第1点关注的是决策树的目标输出
第2点关注的是输入特征

对于2,可以把当前结点标记为叶结点,将类别 y 设定为 取值最多 的类别(后验分布)
对于3,标记为叶结点,将类别设定为 父结点 所含样本最多的类别(先验分布)

对于3,样本划分过程有空集落入,可能由于:

  • 划分过程中,样本被错误分类到其他子节点
  • 过程的划分属性或者划分值导致某些子节点没有样本


这样处理是为了使模型处理不完美数据时也能正常工作,并给出合理的预测结果


2. 划分选择

决策树学习算法 可知,算法的关键在于第 8 行:如何选择最优属性
随着划分过程不断进行,决策树的分支包含的样本应尽可能属于同一类别,即结点的 纯度 越来越高

2.1 信息增益

信息熵(information entropy):度量样本集合纯度的指标
在这里插入图片描述

约定:若 p = 0,则 p l o g 2 p k = 0 plog_2p_k = 0 plog2pk=0

E n t ( D ) Ent(D) Ent(D) 的值越小,D 的纯度越高

信息增益(information gain)
在这里插入图片描述信息增益越大,用 a 来进行划分的 “纯度提升” 越大

a ∗ = a r g m a x a ∈ A G a i n ( D , a ) a_*= \underset{a\in A}{arg\ max}\ Gain(D, a) a=aAarg max Gain(D,a)

信息增益计算案例:在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

2.2 增益率

信息增益准则对取值数目较多的属性有偏好。例如把上述案例的编号作为划分属性,信息增益远大于其他属性。因为每个编号分支仅对应一个样本,分支结点的纯度最大。但这没有意义
增益率:减少信息增益准则对可取值数目较多的属性的偏好带来不利影响
在这里插入图片描述增益率 对可取值较的属性有偏好
信息增益 对可取值较的属性有偏好
可以从划分属性中 找出信息增益高于平均水平的属性,再 从中选出增益率最高的

2.3 基尼系数

在这里插入图片描述


3. 剪枝处理

剪枝:对付“过拟合”。过度学习导致决策树分支过多
基本策略:预剪枝、后剪枝
预剪枝:生成决策树过程中,划分结点前先估计。若当前结点的划分不能提升决策树的泛化能力,停止划分并将结点标记为叶结点
后剪枝:生成完决策树,自底向上检察非叶结点。若将该结点对应的子树替换为叶结点能提升泛化性能,则将该子树替换为叶结点

验证方法可使用前面章节提到的 “留出法”,事先预留部分数据作为验证集


3.1 预剪枝

以下为原文:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

对于结点2,3,4,按脐部的属性凹陷、稍凹、平坦将训练集归类。对于凹陷,1、2、3是好瓜,14是坏瓜。因此把 结点2 暂时判断为 好瓜。对于稍凹,6、7是好瓜,15、17是坏瓜。此时把结点3归纳为好瓜、坏瓜 对验证集精度计算是没有影响的

如果某个结点划分的子结点,好瓜坏瓜的比例都是50%,验证集精度划不划分都是50%。个人觉得划分好点。可能划分后子结点的子结点能提升验证集精度。可能赚可能不赚,但至少不会亏

3.2 后剪枝

在这里插入图片描述在这里插入图片描述

在这里插入图片描述


4. 连续与缺失值

4.1 连续值处理

上述例子用到的都是离散属性来生成决策树。在现实学习任务中,常会遇到连续属性。连续属性的可取值数目是无限的,因此可以将 连续属性离散化

关键在于找到划分点 t。以连续值的二分类任务为例:
在这里插入图片描述
在这里插入图片描述

以下示例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


计算 G a i n ( D , a ) Gain(D, a) Gain(D,a),先计算根结点的熵 E n t ( D ) Ent(D) Ent(D) ,17瓜,8好9坏,得 E n t ( D ) = 0.9975 Ent(D) = 0.9975 Ent(D)=0.9975

  1. t = 0.381 t = 0.381 t=0.381 为例,17个瓜分为2类,
  2. 小于等于0.381的,4瓜,0好4坏;
  3. 大于0.381,13瓜,8好5坏;
  4. 计算 E n t ( D ) Ent(D) Ent(D) 分别为 0,0.9612366。
  5. G a i n = E n t ( D ) − Σ ∣ D ′ ∣ ∣ D ∣ E n t ( D ′ ) = 0.9975 − ( 0.9612366 ∗ 13 17 + 0 ∗ 4 17 ) = 0.262 Gain = Ent(D) - \Sigma\frac{|D'|}{|D|}Ent(D') = 0.9975 - (0.9612366 * \frac{13}{17} + 0 * \frac{4}{17}) = 0.262 Gain=Ent(D)ΣDDEnt(D)=0.9975(0.96123661713+0174)=0.262


计算其他 t,得到的 G a i n Gain Gain 均小于此。所以选择 0.381 作为划分点

4.2 缺失值处理

将缺失值直接丢弃会造成样本浪费。考虑利用有缺失值的样例进行学习
在这里插入图片描述

  • (1)如何在属性值缺失情况下进行划分属性选择?
  • (2)给定划分属性,若样本在该属性上的值缺失,如何样本划分?

对于问题(1)
在这里插入图片描述在这里插入图片描述在这里插入图片描述

这部分就是把不缺失值的数据集单独拎出来,再计算时加个权重。

划分属性选择缺失值不参与

对于问题(2)
在这里插入图片描述

在a属性上的取值是样本在a上的取值,不是样本取值y

以下示例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ρ \rho ρ : 整个样本集中,无缺失值样本占的比例
p k p_k pk : 无缺失值样本中,某类样本占的比例
r r r :无缺失值样本中,属性某个取值的样本占的比例


5. 多变量决策树

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述


http://www.ppmy.cn/news/1517143.html

相关文章

大数据技术之Flume应用案例(2)

目录 监控端口数据官方案例 步骤 1: 准备环境 步骤 2: 配置 Flume Agent 步骤 3: 启动 Flume Agent 步骤 4: 发送数据到 Flume 步骤 5: 查看 HDFS 中的数据 注意事项 示例说明 实时监控单个追加文件案例 需求分析 实现步骤 (1)确保环境变量配…

WMI (Windows Management Instrumentation)类集合

WMI (Windows Management Instrumentation) 是一个强大的系统管理工具,包含大量的类,用于检索和操作系统信息。WMI 类的数量庞大,涵盖从操作系统到硬件设备的各种信息。 WMI 类通常以 Win32_ 或 CIM_ 前缀开头。Win32_ 类主要用于Windows系统…

AI绘画工具 Stable Diffusion【插画转绘】:建筑 | 风景| 人像照片的插画转绘制作教程,照片秒变插画风格图片!

大家好,我是画画的小强 关于Stable Diffusion 的插画转绘,今天给大家分享一种制作方法。我们先看一下效果图。 一. 图片转插画的制作方法 本期教程我们将使用AI绘画工具Stable Diffusion,关于SD的安装和入门使用可以看看我的往期入门教程…

uniapp u--input实现select下拉列表 input点击事件

背景&#xff1a; 技术框架&#xff1a; uniapp框架(vue2语法)uView组件库。 通过form表单实现数据列表的“查询”功能。注意&#xff1a; 1、<u--form>内部嵌套<u-form-item>&#xff0c;<u-form-item>内部嵌套<u--input>表单组件。 2、H5浏览器端&am…

HTTP 414错误问题

问题描述&#xff1a; 在一次前端编辑报表完成&#xff0c;打开审核人选择弹出框的时候&#xff0c;layer直接报414错误。 问题分析&#xff1a; HTTP 414是HTTP协议中的一个状态码&#xff0c;表示请求的URI&#xff08;Uniform Resource Identifier&#xff09;过长&#…

海睿思通过华东江苏大数据交易中心数商认证,提供高质量数据治理服务!

近日&#xff0c;中新赛克海睿思成功通过华东江苏大数据交易中心的数商认证&#xff0c;获得华东江苏大数据交易中心颁发的“数据治理服务商”证书。 华东数交是在实施“国家大数据战略”大背景下&#xff0c;经国家批准的华东地区首个省级特色数据要素交易平台&#xff0c;致力…

美客多卖家如何借助自养号测评提升销量

在美客多这一电商平台上&#xff0c;尽管当前多数卖家尚未充分利用测评技术&#xff0c;但其作为低成本、高回报的推广方式&#xff0c;无疑蕴藏着巨大的市场潜力。面对竞争相对缓和的市场环境及卖家对测评概念的普遍忽视&#xff0c;以下是对测评技术重要性的强调及其实施策略…

Adobe After Effects的插件--------CC Ball Action

CC Ball Action是粒子效果器,其将2D图层变为一个个由3D小球构成的图层。它是AE内置的3D插件。 使用条件 使用该插件的图层需是2D图层。 我们以一张图片素材为例: 给图片图层添加CC Ball Action效果控件,然后新建一个摄像机(利用摄像机旋转、平移、推拉工具,方便在各个角…

Spark MLlib 特征工程系列—特征转换VectorSizeHint

Spark MLlib 特征工程系列—特征转换VectorSizeHint VectorSizeHint 是 Spark 提供的一个特征转换器,用于指定向量列的大小(即维度)。在一些特征转换和建模过程中,要求输入的向量必须有固定的大小。当数据中包含不同大小的向量时,Spark 可能无法自动推断出向量的正确大小…

基于Vue3和Node.js的完整增删改查项目实现教程:从后端封装到前端调用

在 Node.js 中封装一个增删改查&#xff08;CRUD&#xff09;接口&#xff0c;并在 Vue 3 前端调用这些接口。整个过程包括后端 API 的创建和前端的调用。 一、安装 Node.js 和 Express 脚手架 1. 安装 Node.js 首先&#xff0c;你需要安装 Node.js。你可以通过以下步骤进行安…

零基础入门转录组数据分析——预后模型之多因素cox模型

零基础入门转录组数据分析——预后模型之多因素cox模型 目录 零基础入门转录组数据分析——预后模型之多因素cox模型1. 预后模型和多因素cox模型基础知识2. 多因素cox预后模型&#xff08;Rstudio&#xff09;——代码实操2. 1 数据处理2. 2 构建多因素cox模型&#xff08;用输…

如何构建社区康养管理系统?实现老年人服务管理全攻略【Java SpringBoot】

✍✍计算机毕业编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java、…

【Go语言成长之路】多模块工作区入门

文章目录 【Go语言成长之路】多模块工作区入门前提条件一、创建一个模块二、创建工作空间三、创建第二个模块四、更多关于workspace 【Go语言成长之路】多模块工作区入门 ​ 多模块工作区(muti-module workspaces)可以使得开发者在多个模块中构建并且运行代码&#xff0c;相互…

在浏览器上使用transformers.js运行(WebGPU)RMBG-1.4进行抠图(背景移除)

在浏览器上使用transformers.js运行&#xff08;WebGPU&#xff09;RMBG-1.4进行抠图&#xff08;背景移除&#xff09; 说明&#xff1a; 首次发表日期&#xff1a;2024-08-28官方Github仓库地址&#xff1a; https://github.com/xenova/transformers.js/tree/main/examples…

《深入浅出WPF》读书笔记.8路由事件

《深入浅出WPF》读书笔记.8路由事件 背景 路由事件是直接响应事件的变种。直接响应事件&#xff0c;事件触发者和事件响应者必须显示订阅。而路由事件的触发者和事件响应者之间的没有显示订阅&#xff0c;事件触发后&#xff0c;事件响应者安装事件监听器&#xff0c;当事件传…

SpringBoot -在Axis2中,RPCServiceClient调用WebService

在 Axis2 中,RPCServiceClient 是一种用于调用 WebService 的客户端实现。下面是如何将它们 结合起来使用的一个示例: 步骤 1: 添加依赖 首先,在 pom.xml 文件中添加 Axis2 的相关依赖。 <dependencies><!-- 其他依赖 --><dependency><groupId>…

拓扑排序-

基本原理 就是存在一个入度为0的点和一个出度为0的点 然后图中所有点都是指向同一个方向&#xff1b; /* 拓扑序列&#xff1a; 特点&#xff1a;有向无环图 判断&#xff1a;判断所有的点是否入度为0 换句话 就是入度为0的点个数是否满点的总数 过程&#xff1a;建图、入度数…

2024HarmonyOS应用开发者高级认证最新整理题库和答案(已收录182道 )

更新截止2024-08-27,完整题库一共182道题,足够覆盖90%考题,如有新题和遗漏我会持续补充 所有题目的选项都是打乱顺序的,记答案不要记序号 完整题库请在我的网盘下载或查看在线文档 完整题库在线文档预览 单选(已收录102道) 1 . 以下哪个装饰器用来表示并发共享对象。(B) A. @…

通过Python绘制不同数据类型适合的可视化图表

在数据可视化中&#xff0c;对于描述数值变量与数值变量之间的关系常见的有散点图和热力图&#xff0c;以及描述数值变量与分类变量之间的关系常见的有条形图&#xff0c;饼图和折线图&#xff0c;可以通过使用Python的matplotlib和seaborn库来绘制图表进行可视化表达&#xff…