机器学习-决策树(ID3算法及详细计算推导过程)

news2024/11/29 7:41:20

        决策树是一种基于树结构进行决策的机器学习算法 ,以下是关于它的详细介绍:

1.基本原理

  • 决策树通过一系列的条件判断对样本进行分类或预测数值。它从根节点开始,根据不同的属性值逐步将样本划分到不同的分支,直到到达叶节点,每个叶节点代表一个类别或数值。
  • 本质是通过条件判断对样本分类,每个内部节点是一个属性上的测试,分支是测试输出,叶节点是类别或值,从根节点到叶节点的路径对应一条分类规则。

2.主要组成部分

  • 节点:包括根节点、内部节点和叶节点。根节点是决策树的起始点,内部节点表示在某个属性上的测试,叶节点则给出最终的分类结果或数值预测。
  • 分支:连接各个节点,代表根据节点测试结果的不同走向,即不同的决策路径

3.决策树举例 

        图1是一个简单的用来对鸟类进行分类的决策树。在该图中,根节点包含各种鸟类;叶节点是所能识别的各种鸟的名称;中间节点是鸟的一些属性;边是鸟的某一属性的属性值;从根节点到叶节点的每一条路径都描述了一种鸟,它包括该种鸟的一些属性及相应的属性值。

        决策树还可以表示为规则的形式。上图的决策树可表示为如下规则集:    

  • IF  鸟类会飞   AND  是家养的    THEN  可能是和平鸽    
  • IF  鸟类会飞   AND  不是家养的  THEN  可能是信天翁    
  • IF  鸟类不会飞 AND  会游泳      THEN  可能是企鹅    
  • IF  鸟类不会飞 AND  不会游泳    THEN  可能是鸵鸟    

        决策树学习过程实际上是一个构造决策树的过程。当学习完成后,就可以利用这棵决策树对未知事物进行分类。

4.重要概念

4.1信息熵

        信息熵是对信息源整体不确定性的度量。假设S为样本集,S中所有样本的类别有k种,如y1,y2,…,yk,各种类别样本在S上的概率分布分别为P(y1),P(y2),…,P(yk),则S的信息熵可定义为:

        其中,概率P(yj)(j=1,2,…,k),实际上为yj的样本在S中所站的比例;对数可以是以各种数为底的对数,在ID3算法中,我们取以2为底的对数。E(S)的值越小,S的不确定性越小,即其确定性越高。 

4.2信息增益

        信息增益(information gain)是对两个信息量之间的差的度量。其讨论涉及到样本集S中样本的结构。对S中的每一个样本,除其类别外,还有其条件属性,或简称为属性。若假设S中的样本有m个属性,其属性集为X={X1,X2,…,Xm},且每个属性均有r种不同的取值,则我们可以根据属性的不同取值将样本集S划分成r个不同的子集S1, S2, ... , Sro。此时,可得到由属性x;的不同取值对样本集S进行划分后的加权信息熵

        其中,t为条件属性x;的属性值;St为x ;= t时的样本子集;E(St)为样本子集St信息熵;IS|和|St分别为样本集S和样本子集St的大小,即样本个数。有了信息熵和加权信息熵,就可以计算信息增益。所谓信息增益就是指E(S)和E(S,x1)之间的差,即

        可见,信息增益所描述的是信息的确定性,其值越大,信息的确定性越高。后面会会给出例题,看例题就明白了。

5.ID3算法

        ID3算法的学习过程是一个以整个样本集为根节点,以信息增益最大为原则,选择条件属性进行扩展,逐步构造出决策树的过程。若假设S={s1,s2,…sn}为整个样本集,X={x1,x2,…,xm}为全体属性集,Y={y1,y2,…yk}为样本类别。则ID3算法描述如下:    

        (1) 初始化样本集S={s1,s2,…sn}和属性集X={x1,x2,…,xm},生成仅含根节点(S, X)的初始决策树。    

        (2) 如果节点样本集中的所有样本全都属于同一类别,则将该节点标记为叶节点,并标出该叶节点的类别。算法结束。 否则执行下一步。    

        (3) 如果属性集为空;或者样本集中的所有样本在属性集上都取相同值,即所有样本都具有相同的属性值,则同样将该节点标记为叶节点,并根据各个类别的样本数量,按照少数服从多数的原则,将该叶节点的类别标记为样本数最多的那个类别。算法结束。否则执行下一步。

        (4) 计算每个属性的信息增益,并选出信息增益最大的属性对当前决策树进行扩展。    

        (5) 对选定属性的每一个属性值,重复执行如下操作,直止所有属性值全部处理完为止:     ① 为每一个属性值生成一个分支;并将样本集中与该分支有关的所有样本放到一起,形成该新生分支节点的样本子集;     ② 若样本子集为空,则将此新生分支节点标记为叶节点,其节点类别为原样本集中最多的类别;     ③ 否则,若样本子集中的所有样本均属于同一类别,则将该节点标记为叶节点,并标出该叶节点的类别。  

        (6) 从属性集中删除所选定的属性,得到新的属性集。    

        (7) 转第(3)步。

5.1 ID3算法举例

  • info:信息量
  • E:信息熵(信息量的加权求和)
  • gain:信息增益

用上图来计算构建决策树

5.1.1计算总的信息量

1.在上表中先看序号,总共有9个P,5个N,则我们可以计算出总的信息量为

2.我们要在天气、气温、湿度和风中选择一个做为根节点 

(1)天气的信息增益

先看天气,天气为时,有2个P,三个N,则信息量

天气为时,有三个P,两个N,则信息量

天气为多云时,有三个P,0个N,则信息熵

天气各种情况加权求和,即天气的信息熵为:

故基于天气的信息增益为:

 

(2)气温的信息增益

 气温-热:

 气温-适中:

气温-冷:

各个气温情况加权求和:

基于气温的信息增益为: 

同理我们可以计算湿度和风的信息增益

3.天气的信息增益最大,所以我们选择天气作为根节点

 

4.天气作为根节点,则他的子树我们就用相同的方法即可计算出来 

 

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

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

相关文章

【AI系统】LLVM 架构设计和原理

LLVM 架构设计和原理 在上一篇文章中,我们详细探讨了 GCC 的编译过程和原理。然而,由于 GCC 存在代码耦合度高、难以进行独立操作以及庞大的代码量等缺点。正是由于对这些问题的意识,人们开始期待新一代编译器的出现。在本节,我们…

浅谈网络 | 应用层之HTTPS协议

目录 对称加密非对称加密数字证书HTTPS 的工作模式重放与篡改 使用 HTTP 协议浏览新闻虽然问题不大,但在更敏感的场景中,例如支付或其他涉及隐私的数据传输,就会面临巨大的安全风险。如果仍然使用普通的 HTTP 协议,数据在网络传输…

基于 JNI + Rust 实现一种高性能 Excel 导出方案(上篇)

每个不曾起舞的日子,都是对生命的辜负。 ——尼采 一、背景:Web 导出 Excel 的场景 Web 导出 Excel 功能在数据处理、分析和共享方面提供了极大的便利,是许多 Web 应用程序中的重要功能。以下是一些典型的场景: 数据报表导出&am…

最新Linux下使用conda配置Java23或17保姆教程(附赠安装包)

随着技术的不断进步,越来越多的开发者开始在Linux环境下进行Java应用的开发。Java 17作为长期支持版本(LTS),提供了许多新特性和性能改进。当然现在最新的是Java23,这个还作为实验版本未广泛使用。对于需要管理多个编程…

RHEL7+Oracle11.2 RAC集群-多路径(multipath+udev)安装步骤

RHEL7Oracle11.2RAC集群-多路径(multipathudev)安装 配置虚拟存储 使用StarWind Management Console软件,配置存储 dggrid1: 1g*3 Dggrid2: 1g*3 Dgsystem: 5g*1 系统表空间,临时表空间,UNDO,参数文件…

PyTorch 模型转换为 ONNX 格式

PyTorch 模型转换为 ONNX 格式 在深度学习领域,模型的可移植性和可解释性是非常重要的。本文将介绍如何使用 PyTorch 训练一个简单的卷积神经网络(CNN)来分类 MNIST 数据集,并将训练好的模型转换为 ONNX 格式。我们还将讨论 PTH …

VM Virutal Box的Ubuntu虚拟机与windows宿主机之间设置共享文件夹(自动挂载,永久有效)

本文参考如下链接 How to access a shared folder in VirtualBox? - Ask Ubuntu (1)安装增强功能(Guest Additions) 首先,在网上下载VBoxGuestAdditions光盘映像文件 下载地址:Index of http://…

CA系统(file.h---申请认证的处理)

#pragma once #ifndef FILEMANAGER_H #define FILEMANAGER_H #include <string> namespace F_ile {// 读取文件&#xff0c;返回文件内容bool readFilename(const std::string& filePath);bool readFilePubilcpath(const std::string& filePath);bool getNameFro…

【Git】Git 命令参考手册

目录 Git 命令参考手册1. 创建仓库1.1 创建一个新的本地仓库1.2 克隆一个仓库1.3 克隆仓库到指定目录 2. 提交更改2.1 显示工作目录中已修改的文件&#xff0c;准备提交2.2 将文件添加到暂存区&#xff0c;准备提交2.3 将所有已修改的文件添加到暂存区&#xff0c;准备提交2.4 …

【Linux系列】Chrony时间同步服务器搭建完整指南

1. 简介 Chrony是一个用于Linux系统的高效、精准的时间同步工具&#xff0c;通常用于替代传统的NTP&#xff08;Network Time Protocol&#xff09;服务。Chrony不仅在系统启动时提供快速的时间同步&#xff0c;还能在时钟漂移较大的情况下进行及时调整&#xff0c;因此广泛应…

数据库日志

MySQL中有哪些日志 1&#xff0c;redo log重做日志 redo log是物理机日志&#xff0c;因为它记录的是对数据页的物理修改&#xff0c;而不是SQL语句。 作用是确保事务的持久性&#xff0c;redo log日志记录事务执行后的状态&#xff0c;用来恢复未写入 data file的已提交事务…

【vue for beginner】Vue该怎么学?

&#x1f308;Don’t worry , just coding! 内耗与overthinking只会削弱你的精力&#xff0c;虚度你的光阴&#xff0c;每天迈出一小步&#xff0c;回头时发现已经走了很远。 vue2 和 vue3 Vue2现在正向vue3逐渐更新中&#xff0c;官方vue2已经不再更新。 这个历程和当时的pyt…

【Ubuntu 24.04】How to Install and Use NVM

参考 下载 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash激活 Activate NVM: Once the installation script completes, you need to either close and reopen the terminal or run the following command to use nvm immediately. exp…

SeggisV1.0 遥感影像分割软件【源代码】讲解

在此基础上进行二次开发&#xff0c;开发自己的软件&#xff0c;例如&#xff1a;【1】无人机及个人私有影像识别【2】离线使用【3】变化监测模型集成【4】个人私有分割模型集成等等&#xff0c;不管是您用来个人学习 还是公司研发需求&#xff0c;都相当合适&#xff0c;包您满…

Python轴承故障诊断 (21)基于VMD-CNN-BiTCN的创新诊断模型

往期精彩内容&#xff1a; Python-凯斯西储大学&#xff08;CWRU&#xff09;轴承数据解读与分类处理 Pytorch-LSTM轴承故障一维信号分类(一)-CSDN博客 Pytorch-CNN轴承故障一维信号分类(二)-CSDN博客 Pytorch-Transformer轴承故障一维信号分类(三)-CSDN博客 三十多个开源…

使用docker搭建hysteria2服务端

源链接&#xff1a;https://github.com/apernet/hysteria/discussions/1248 官网地址&#xff1a;https://v2.hysteria.network/zh/docs/getting-started/Installation/ 首选需要安装docker和docker compose 切换到合适的目录 cd /home创建文件夹 mkdir hysteria创建docke…

基于Java实现的潜艇大战游戏

基于Java实现的潜艇大战游戏 一.需求分析 1.1 设计任务 本次游戏课程设计小组成员团队合作的方式&#xff0c;通过游戏总体分析设计&#xff0c;场景画面的绘制&#xff0c;游戏事件的处理&#xff0c;游戏核心算法的分析实现&#xff0c;游戏的碰撞检测&#xff0c;游戏的反…

课题组自主发展了哪些CMAQ模式预报相关的改进技术?

空气污染问题日益受到各级政府以及社会公众的高度重视&#xff0c;从实时的数据监测公布到空气质量数值预报及预报产品的发布&#xff0c;我国在空气质量监测和预报方面取得了一定进展。随着计算机技术的高速发展、空气污染监测手段的提高和人们对大气物理化学过程认识的深入&a…

深入解析下oracle date底层存储方式

之前我们介绍了varchar2和char的数据库底层存储格式&#xff0c;今天我们介绍下date类型的数据存储格式&#xff0c;并通过测试程序快速获取一个日期。 一、环境搭建 1.1&#xff0c;创建表 我们还是创建一个测试表t_code&#xff0c;并插入数据&#xff1a; 1.2&#xff0c;…

【论文复现】SRGAN

1. 项目结构 如何生成文件夹的文件目录呢? 按住shift键,右击你要生成目录的文件夹,选择“在此处打开Powershell窗口” 在命令窗口里输入命令“tree”,按回车。就会显示出目录结构。 ├─.idea │ └─inspectionProfiles ├─benchmark_results ├─data │ ├─test …