当前位置: 首页 > news >正文

【人工智能基础05】决策树模型

文章目录

  • 一. 基础内容
    • 1. 决策树基本原理
      • 1.1. 定义
      • 1.2. 表示成条件概率
    • 2. 决策树的训练算法
      • 2.1. 划分选择的算法
        • 信息增益(ID3 算法)
        • 信息增益比(C4.5 算法)
        • 基尼指数(CART 算法)
        • 举例说明:计算各个类别的信息增益
      • 2.2. 叶子节点的选择
      • 2.3. 剪枝
        • 预剪枝
        • 后剪枝
      • 2.4. 决策树训练算法分类
  • 二. 习题
    • 1. 归一化对决策树的影响
    • 2. 选择决策树模型
    • 3. 决策树计算
    • 4. 基尼系数的优势
    • 5. 在叶子上使用线性模型的优缺点

本文重点内容

  1. 什么是决策树
  2. 决策树的基本原理
  3. 决策树训练方法,防止过拟合的方法
  4. 分类和回归决策树筛选原则

一. 基础内容

1. 决策树基本原理

1.1. 定义

分类决策树模型是一种描述对实例进行分类的树形结构。决策树由节点和有向边组成。其中节点有两种类型:内部节点和叶节点。内部节点表示一个特征或属性,叶结点表示一个类,结构如下图:

在这里插入图片描述

 

1.2. 表示成条件概率

决策树还可以表示成在给定条件下类的条件概率分布。

决策树将特征空间划分为会不相交的单元,在每个单元定义一个类的概率分布,这就构成了一个条件概率分布。

条件概率计算方式:

在这里插入图片描述

  • 概率分布计算:由各个单元给定条件下类的条件概率分布组成,将这些概率沿着分支相乘,即得出所需的概率。

 

极大似然函数:损失函数的优化。

在这里插入图片描述

 

2. 决策树的训练算法

决策树学习算法通常是递归的原则最优特征,根据该特征对训练数据进行分割:即特征空间的分割。

决策树的结构收到很多因素影响:特征选择、分裂点选择、树的深度、复杂度控制、剪枝等。

 

2.1. 划分选择的算法

特征选择:在每个节点上,如何选择一个特征进行分裂,常用的特征选择指标有:信息增益、信息增益率,以及基尼指数:ID3、C4.5、CART的等决策树算法。

信息增益(ID3 算法)

信息熵的定义与计算

在这里插入图片描述

信息增益的计算

在这里插入图片描述

 

信息增益:衡量了信息对数据集分类结果的贡献度。
在构建决策树时,ID3 算法选择信息增益最大的特征作为当前节点的划分特征。

例如,在一个判断水果是苹果还是橙子的决策树中,有颜色、形状等特征,通过计算这些特征的信息增益,若颜色特征的信息增益最大,那么就先根据颜色来划分节点。

 

信息增益比(C4.5 算法)

信息增益比的引入原因

  • 信息增益存在一个问题,它偏向于选择取值较多的特征。为了克服这个问题,C4.5 算法引入了信息增益比。
  • 在决策树构建过程中,C4.5 算法选择信息增益比最大的特征作为划分特征。例如,在一个包含很多特征的数据集里,有些特征虽然信息增益较大,但它可能有过多的取值,通过计算信息增益比,可以更合理地选择划分特征。

 

 

基尼指数(CART 算法)

基尼指数的含义:

基尼指数用于衡量数据集的纯度,其值越小表示纯度越高。
 
例如,在客户流失预测的决策树中,基尼不纯度可以帮助我们了解每个节点中客户流失(或不流失)的纯度情况。如果一个节点的基尼不纯度很高,说明这个节点中的客户在流失与否的分类上很混乱,需要进一步划分来提高纯度。

 

基尼指数的作用:划分特征。

对于每个候选特征,计算按照该特征划分后的基尼指数,选择使得基尼指数最小的特征作为划分特征。这是因为最小的基尼指数意味着划分后子数据集的纯度最高,这样可以构建出更有效的决策树。
 
例如,在信用风险评估决策树中,有收入、负债、信用记录等多个特征。通过计算每个特征划分后的基尼指数,选择能使基尼指数最小的特征(如信用记录)进行划分,从而更好地将高风险和低风险客户区分开来。

 

基尼指数可以防止过拟合

基尼指数的使用有助于控制决策树的生长,防止过拟合。如果不加以控制,决策树可能会过度划分数据,导致在训练数据上表现很好,但在新数据上性能很差。
 
通过选择基尼指数最小的特征进行划分,决策树会优先选择最能有效降低数据集不纯度的特征,避免构建过于复杂的决策树结构。
 
例如,在图像分类决策树中,使用基尼指数来选择划分特征可以避免因一些噪声特征而构建出过于复杂的决策树,从而使模型在新的图像数据上有更好的泛化能力。

 

举例说明:计算各个类别的信息增益

计算各个类别的信息增益:

  1. 计算数据集的经验熵H(D)
  2. 计算特征A下(n个类别)各个类别的加权平均熵 H ( D A i ) H(D_{Ai}) H(DAi)
  3. 计算特征A的加权熵: H ( D A ) = ∑ i = 1 n ( D A i / D ) H ( D A i ) H(D_A)=\sum_{i = 1}^{n}(D_{Ai}/D)H(D_{Ai}) H(DA)=i=1n(DAi/D)H(DAi)
  4. 求信息增益: H ( D A ) = H ( D ) − H ( A ) H(D_A)=H(D)-H(A) H(DA)=H(D)H(A)
    类别B同上,然后对比信息增益,选择大的信息增益作为分裂点

 

2.2. 叶子节点的选择

p108

 

2.3. 剪枝

采用剪枝操作防止决策树出现过拟合,可以把这种操作看成是一种对决策树采取的正则手段。

常用的剪枝有预剪枝、后剪枝操作。

预剪枝

预剪枝是指在模型训练之前给定一些限制条件,这些限制条件可以阻止节点的进一步分裂。常见预剪枝的策略有:

  1. 限制树的最大深度。如果所有叶子都已经达到最大深度,将停止训练。
  2. 限制树的最大叶子数目。如果叶子数目达到这个上限,将停止训练。
  3. 限制每片叶子上最少的样本数。为每个节点设置最小样本数阈值,如果节点的本数少于这个阈值,则停止分裂
  4. 规定分割带来训练误差下降的下限。比如,规定此下限为-0.3,那么将无视所有致训练误差下降达不到0.3的分割条件。
  5. 利用验证集进行预剪枝。如果有验证集,可在决策树的训练过程中不断用验证进行评估。如果一次分割无法降低验证集上的误差,该分割将不被进行。

预剪枝的优点是可以在树的生长过程中减少计算量,但缺点是可能会错过一些有用分裂,导致模型的表达能力不足

 

后剪枝

后剪枝是在将决策树训练好之后,从决策树的底部开始评估删除一个分割是否导致验证集误差下降。如果是,则删除该分割,即删除该分割产生的两个叶子节点,并将它的父节点重新设为叶子节点;否则,保留该分割,不断重复该步骤。

后剪枝的优点是可以灵活控制模型的复杂度,但缺点是计算量较大,因为需要在树完全生长后进行剪枝。

 
 

2.4. 决策树训练算法分类

算法名称分裂准则处理类型树的结构缺失值处理剪枝处理应用范围
ID3信息增益离散特征可以是多叉树不处理没有剪枝过程,容易过拟合分类
C4.5信息增益率连续特征可以是多叉树能处理数据集中存在缺失值的情况。它通过估算该特征对分类的贡献进行处理,而不是简单地删除缺失数据。对于有缺失值的特征,C4.5会计算每个可能的分裂点,并考虑缺失值的不同处理方式对分类结果的影响采用了一种后剪枝方法,即先完整地生长树,然后再通过悲观剪枝策略来减少树的复杂性,提高泛化能力分类
CART基尼指数离散、连续均可二叉树对于缺失值的处理采用了概率加权的方法。它通过计算缺失随机变量的预测概率,然后对每个可能的值进行加权平均使用后剪枝策略,即先生成完整的树,然后通过交叉验证来选择最优的剪枝树分类和回归

 

二. 习题

1. 归一化对决策树的影响

题目:对于一些机器学习模型(例如,神经网络),对特征进行归一化(normalization)是一个有效的预处理操作。一个常见的归一化方式是对每一个特征数据,减去该特征的均值,然后除以该特征的方差。请回答,对于基于决策树的一系列算法,归一化是否会影响训练结果?

解答:
对于基于决策树的一系列算法,归一化通常不会影响训练结果。

决策树算法在构建树的过程中主要依据特征的信息增益、基尼系数等标准来进行分裂,并不依赖于特征的绝对数值大小。它更关注的是特征之间的相对关系以及特征对分类或回归目标的区分能力
而归一化主要是改变特征的数值范围和分布,对于决策树算法来说,特征的相对大小关系和顺序通常不会因归一化而改变。

所以,对基于决策树的算法进行特征归一化一般不会对训练结果产生实质性的影响。

在这里插入图片描述

 

2. 选择决策树模型

在这里插入图片描述

在这里插入图片描述

 

3. 决策树计算

在这里插入图片描述

 
 

4. 基尼系数的优势

在这里插入图片描述

 

在这里插入图片描述

 

5. 在叶子上使用线性模型的优缺点

在这里插入图片描述

在这里插入图片描述

 

参考:《人工智能基础-姚期智》

相关文章:

【人工智能基础05】决策树模型

文章目录 一. 基础内容1. 决策树基本原理1.1. 定义1.2. 表示成条件概率 2. 决策树的训练算法2.1. 划分选择的算法信息增益(ID3 算法)信息增益比(C4.5 算法)基尼指数(CART 算法)举例说明:计算各个…...

【人工智能基础03】机器学习(练习题)

文章目录 课本习题监督学习的例子过拟合和欠拟合常见损失函数,判断一个损失函数的好坏无监督分类:kmeans无监督分类,Kmeans 三分类问题变换距离函数选择不同的起始点 重点回顾1. 监督学习、半监督学习和无监督学习的定义2. 判断学习场景3. 监…...

HarmonyOS(60)性能优化之状态管理最佳实践

状态管理最佳实践 1、避免在循环中访问状态变量1.1 反例1.2 正例 2、避免不必要的状态变量的使用3、建议使用临时变量替换状态变量3.1 反例3.2 正例 4、参考资料 1、避免在循环中访问状态变量 在应用开发中,应避免在循环逻辑中频繁读取状态变量,而是应该…...

数据库课程设计报告 超市会员管理系统

一、系统简介 1.1设计背景 受到科学技术的推动,全球计算机的软硬件技术迅速发展,以计算机为基础支撑的信息化如今已成为现代企业的一个重要标志与衡量企业综合实力的重要标准,并且正在悄无声息的影响与改变着国内外广泛的中小型企业的运营模…...

C++算法练习-day54——39.组合总和

题目来源:. - 力扣(LeetCode) 题目思路分析 题目:给定一个整数数组 candidates 和一个目标数 target,找出所有独特的组合,这些组合中的数字之和等于 target。每个数字在每个组合中只能使用一次。 思路&a…...

计算机毕业设计PySpark+Hadoop中国城市交通分析与预测 Python交通预测 Python交通可视化 客流量预测 交通大数据 机器学习 深度学习

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...

Linux的文件系统

这里写目录标题 一.文件系统的基本组成索引节点目录项文件数据的存储扇区三个存储区域 二.虚拟文件系统文件系统分类进程文件表读写过程 三.文件的存储连续空间存放方式缺点 非连续空间存放方式链表方式隐式链表缺点显示链接 索引数据库缺陷索引的方式优点:多级索引…...

【Vue3】从零开始创建一个VUE项目

【Vue3】从零开始创建一个VUE项目 手动创建VUE项目附录 package.json文件报错处理: Failed to get response from https://registry.npmjs.org/vue-cli-version-marker 相关链接: 【VUE3】【Naive UI】<NCard> 标签 【VUE3】【Naive UI】&…...

9)语法分析:半倒装和全倒装

在英语中,倒装是一种特殊的句子结构,其中主语和谓语(或助动词)的位置被颠倒。倒装分为部分倒装和全倒装两种类型,它们的主要区别在于倒装的程度和使用的场合。 1. 部分倒装 (Partial Inversion) 部分倒装是指将助动词…...

Scala关于成绩的常规操作

score.txt中的数据: 姓名,语文,数学,英语 张伟,87,92,88 李娜,90,85,95 王强,78,90,82 赵敏,92,8…...

使用Java实现度分秒坐标转十进制度的实践

目录 前言 一、度分秒的使用场景 1、表示方法 2、两者的转换方法 3、区别及使用场景 二、Java代码转换的实现 1、确定计算值的符号 2、数值的清洗 3、度分秒转换 4、转换实例 三、总结 前言 在地理信息系统(GIS)、导航、测绘等领域&#xff0c…...

根据后台数据结构,构建搜索目录树

效果图: 数据源 const data [{"categoryidf": "761525000288210944","categoryids": "766314364226637824","menunamef": "经济运行","menunames": "经济运行总览","tempn…...

食品计算—FoodSAM: Any Food Segmentation

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…...

2411rust,1.83

原文 1.83.0稳定版 新的常能力 此版本包括几个说明在常环境中运行代码可干的活的大型扩展.这是指编译器在编译时必须计算的所有代码:常和静项的初值,数组长度,枚举判定值,常模板参数及可从(constfn)此类环境调用的函数. 引用静.当前,除了静项的初化器式外,禁止常环境引用静…...

tomcat加载三方包顺序

共享库 tomcat支持多个webapp共享一个三方库,而不需要每个webapp都引入该三方库 tomcat加载类顺序 bootstrap:加载jvm提供的类system:加载$CATALINA_HOME/bin下的bootstrap.jar,commons-daemon.jar,tomcat-juli.jar三个包//加载$CLASSPATH…...

计算机的错误计算(一百七十一)

摘要 探讨 MATLAB 中秦九韶(Horner)多项式的错误计算。 例1. 用秦九韶(Horner)算法计算(一百零七)例1中多项式 直接贴图吧: 这样,MATLAB 给出的仍然是错误结果,因为准…...

js对于json的序列化、反序列化有哪几种方法

在JavaScript中,对JSON(JavaScript Object Notation)进行序列化(将对象转换为JSON字符串)和反序列化(将JSON字符串转换为对象)是常见的操作。以下是一些常用的方法: 序列化&#xf…...

Linux——基础命令(2) 文件内容操作

目录 ​编辑 文件内容操作 1.Vim (1)移动光标 (2)复制 (3)剪切 (4)删除 (5)粘贴 (6)替换,撤销,查找 (7&#xff…...

简单搭建qiankun的主应用和子应用并且用Docker进行服务器部署

在node18环境下,用react18创建qiankun主应用和两个子应用,react路由用V6版本,都在/main路由下访问子应用,用Dockerfile部署到腾讯云CentOS7.6服务器的8000端口进行访问,且在部署过程中进行nginx配置以进行合理的路由访…...

Python知识分享第十六天

“”" 故事7: 小明把煎饼果子技术传给徒弟的同时, 不想把独创配方传给他, 我们就要加私有. 问: 既然不想让子类用, 为什么要加私有? 答: 私有的目的不是不让子类用, 而是不让子类直接用, 而必须通过特定的 途径或者方式才能使用. 大白话: ATM机为啥要设计那么繁琐, 直接…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

Cursor实现用excel数据填充word模版的方法

cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

面向无人机海岸带生态系统监测的语义分割基准数据集

描述&#xff1a;海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而&#xff0c;目前该领域仍面临一个挑战&#xff0c;即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用&#xff1a; 方法一&#xff1a;使用 Homebrew 安装 Git&#xff08;推荐&#xff09; 步骤如下&#xff1a;打开终端&#xff08;Terminal.app&#xff09; 1.安装 Homebrew…...

OD 算法题 B卷【正整数到Excel编号之间的转换】

文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的&#xff1a;a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...