机器学习-04-分类算法-01决策树

news2025/3/12 9:31:55

总结

本系列是机器学习课程的系列课程,主要介绍机器学习中分类算法,本篇为分类算法开篇与决策树部分。

本门课程的目标

完成一个特定行业的算法应用全过程:

懂业务+会选择合适的算法+数据处理+算法训练+算法调优+算法融合
+算法评估+持续调优+工程化接口实现

机器学习定义

关于机器学习的定义,Tom Michael Mitchell的这段话被广泛引用:
对于某类任务T性能度量P,如果一个计算机程序在T上其性能P随着经验E而自我完善,那么我们称这个计算机程序从经验E中学习
在这里插入图片描述

分类方法的定义

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

决策树算法

什么是好瓜

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

熵的概念来源于热力学。在热力学中熵的定义是系统可能状态数的对数值,称为热熵。它是用来表达分子状态杂乱程度的一个物理量。热力学指出,对任何已知孤立的物理系统的演化,热熵只能增加,不能减少。
信息的基本作用就是消除人们对事物了解的不确定性。美国信息论创始人香农发现任何信息都存在冗余,冗余的大小与信息的每一个符号出现的概率和理想的形态有关。信息熵表示的是信息的混乱程度。当均匀分布时,信息熵最大。当熵除一个值之外,其他值均为0,信息熵最小。
和热力学中的熵相反的是,信息熵只能减少,不能增加。
所以热熵和信息熵互为负量。且已证明,任何系统要获得信息必须要增加热熵来补偿,即两者在数量上是有联系的。

信息熵信息量的量化过程:

例如:
事件A:明天的太阳会从东边升起。
事件B:虽然明天的太阳还是从东边升起,但是明天要下雪。
信息量没有量化

信息量的表达式应该满足的条件:

(1)信息量和事件发生的概率有关,当事件发生的概率越低或者越高,传递的信息量越大;
(2)信息量应当是非负的,必然发生的信息量为0;
(3)两个事件的信息量可以相加,并且两个独立事件的联合信息量应该是他们各自信息量的和;

信息熵的量化过程:

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

熵随着概率的变化为:
在这里插入图片描述

信息增益的计算

信息增益=信息熵-条件熵
g(D,A)=H(D) –H(D|A)

条件熵是另一个变量Y熵对X(条件)的期望。
在这里插入图片描述
在这里插入图片描述

信息增益(Information Gain):熵A-条件熵B,是信息量的差值。也就是说,一开始是A,用了条件后变成了B,则条件引起的变化是A-B,即信息增益。好的条件就是信息增益越大越好。因此我们在树分叉的时候,应优先使用信息增益最大的属性,这样降低了复杂度,也简化了后边的逻辑。

比如下面数据:
在这里插入图片描述

初始的信息熵H(A)为:

一共12人,嫁的有6人,不嫁的有6人
H(A) = -1/2 * (log1/2) -1/2 * (log1/2)=-log1/2

可以得出,

当已知不帅的条件下,满足条件的只有4个数据了,这四个数据中,不嫁的个数为1个,占1/4,嫁的个数为3个,占3/4
那么此时的
H(Y|X = 不帅) = -1/4log1/4 - 3/4log3/4
p(X = 不帅) = 4/12 = 1/3

同理我们可以得到:

当已知帅的条件下,满足条件的有8个数据了,这八个数据中,不嫁的个数为5个,占5/8
,嫁的个数为3个,占3/8
那么此时的
H(Y|X = 帅) = -5/8log5/8 - 3/8log3/8
p(X = 帅) = 8/12 = 2/3

计算结果

有了上面的铺垫之后,我们终于可以计算我们的条件熵了,我们现在需要求:
H(Y|X = 长相)
也就是说,我们想要求出当已知长相的条件下的条件熵。
根据公式我们可以知道,长相可以取帅与不帅俩种,然后将上面已经求得的答案带入即可求出条件熵!
H(Y|X=长相)
= p(X =帅)*H(Y|X=帅)+p(X =不帅)*H(Y|X=不帅)
=2/3 * (-5/8log5/8 - 3/8log3/8) + 1/3 *(-1/4log1/4 - 3/4log3/4)
=

此时的信息增益计算为:

g(D,A)
=H(D) –H(D|A)
= -log1/2 - (2/3 * (-5/8log5/8 - 3/8log3/8) + 1/3 *(-1/4log1/4 - 3/4log3/4))

其实条件熵意思是按一个新的变量的每个值对原变量进行分类,比如上面这个题把嫁与不嫁按帅,不帅分成了俩类。
然后在每一个小类里面,都计算一个小熵,然后每一个小熵乘以各个类别的概率,然后求和。
我们用另一个变量对原变量分类后,原变量的不确定性就会减小了,因为新增了X的信息,可以感受一下。不确定程度减少了多少就是信息的增益。

再举一个例子
在这里插入图片描述
在这里插入图片描述

如果采用苹果编号为条件,会发现,此时信息增益最大,因为编号1的叶子节点只有yes,此时的信息熵为0,最后会导致,信息增益会选择苹果编号为分割条件。

举例:
在这里插入图片描述

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

在这里插入图片描述

信息增益率的计算

在这里插入图片描述

基尼系数的计算

在这里插入图片描述

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

在这里插入图片描述

ID3 C4.5 CART算法比较

决策树——ID3和C4.5(理论+图解+公式推导)
策略产品经理必读系列—第七讲ID3、C4.5和CART算法详解
决策树(一)| 基础决策树 ID3、C4.5、CART 核心概要

确定方向过程

针对完全没有基础的同学们
1.确定机器学习的应用领域有哪些
2.查找机器学习的算法应用有哪些
3.确定想要研究的领域极其对应的算法
4.通过招聘网站和论文等确定具体的技术
5.了解业务流程,查找数据
6.复现经典算法
7.持续优化,并尝试与对应企业人员沟通心得
8.企业给出反馈

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

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

相关文章

【Linux杂货铺】操作系统

目录 🌈前言🌈 📁 冯诺依曼体系结构 📂 拓展问题:程序为什么要被加载到内存? 📂 主机与主机的交互 📁 操作系统的概念 📂 作用 📂 理解“管理” &#x…

基于Python实现电商订单的数据分析

基于Python实现电商订单的数据分析 数据集:技术:功能:创新点:明确需求和目的: 数据集: 项目使用一家全球超市4年内的电商销售订单数据,数据集名为superstore_dataset2011-2015.csv。数据集共有…

线性代数(一)——向量基础

向量基础 1、向量和线性组合2、向量的模和点乘3、矩阵4、参考 线性代数的核心是向量的加和乘两种运算的组合,本篇博客为线性代数的一个引子,主要从向量、线性组合和矩阵逐步引出线性代数的相关知识。 1、向量和线性组合 首先介绍的是向量相关&#xff0…

使用nexus3搭建npm私有仓库

一、下载解压安装包 下载地址:nexus-3.66.0-02-win.zip 二、安装并运行私服 在cmd中进入到文件夹中的bin目录下运行一下命令 nexus.exe /run等几分钟启动后,浏览器访问:默认端口8081 http://127.0.0.1:8081/ #修改端口在etc文件下 nexus-…

Oracle集群ASM磁盘扩容

先通过lsblk来查看集群两端磁盘是否扩容成功 lsblk -a查看自己两边磁盘UUID是否相同(for i in 后面为磁盘sd后字母名) for i in x y z aa ab ac ad ae do echo "KERNEL\"sd*\", SUBSYSTEM\"block\", PROGRAM\"/lib/udev/scsi_id --whitelist…

javaEE4(预习第3章,做课后习题1:简答)

1、简答 (1)Jsp页面翻译成的Servlet类的源文件在哪里可以找到?servlet实例是每次请求页面都会创建一个,还是只有一个(单例)? tomcat工作目录下的work目录下 只有一个 页面中定义变量加和不加…

扫雷小游戏制作教程:用HTML5和JavaScript打造经典游戏

🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…

smart-doc 社区 Committer 晋升公告

我们非常荣幸地宣布,经过 PMC 委员会的提名和讨论,社区成员李星志(GitHub ID: netdied)、陈琪(GitHub ID: chenqi146)和李兵(GitHub ID: abing22333)正式晋升为同程旅行 smart-doc 开…

Jenkins自动构建 CI/CD流水线学习笔记(从入门到入土,理论+示例)

文章目录 1、什么是Jenkins的流水线?2、流水线语法2.1、声明式流水线2.2、脚本化流水线 3、流水线示例3.1、使用声明式流水线的语法编写的 Jenkinsfile 文件3.2、Pipeline 各种语言示例3.2.1 Java:3.2.2 Node.js / JavaScript3.2.3 Python 4、一套完整的Devops Jen…

Adobe Photoshop 2024 v25.5.1 for mac 强大的图形编辑工具 兼容 M1/M2/M3

Mac毒搜集到的Adobe Photoshop 2024 v25.5.1 是一款强大的图形编辑和设计工具! v25.5.1版本AI生成式无法使用 应用介绍 Adobe Photoshop 2024是一款强大的图像处理软件,由Adobe公司开发。它可以用于编辑和处理照片、图形和其他类型的图像,包括设计、绘画…

YOLOv5独家改进:backbone改进 | 最新大卷积核CNN架构UniRepLKNet,ImageNet 88% | CVPR2024

💡💡💡本文独家改进:大核卷积一统多种模态!RepLK正统续作UniRepLKNet,代替YOLOv5 Backbone 改进结构图如下: 收录 YOLOv5原创自研 https://blog.csdn.net/m0_63774211/category_12511931.html 💡💡💡全网独家首发创新(原创),适合paper !!! 💡…

Linux查看磁盘命令df-h详解

df -h 是一个常用的 Linux 命令,用于查看文件系统的磁盘使用情况并以易于阅读的方式显示。以下是 df -h 命令的详细解释: -h:以人类可读的格式显示磁盘空间大小。例如,使用 GB、MB、KB 等单位代替字节。 执行 df -h 命令后&…

基于ElasticSearch存储海量AIS数据:时空立方体索引篇

文章目录 引言I 时间维切分II 空间范围切分引言 索引结构制约着查询请求的类型和处理方式,索引整体架构制约着查询请求的处理效率。随着时间推移,AIS数据在空间分布上具备局部聚集性,如 果简单地将所有AIS数据插入一个索引结构,随着数据量增长,索引的更新效率、查询效率及…

Codeforces Round 933 (Div. 3)(A~E)

还在HACK&#xff0c;代码仅供参考。 A. Rudolf and the Ticket 关键句&#xff0c;直接枚举所有可能 #include <bits/stdc.h> //#define int long long #define per(i,j,k) for(int (i)(j);(i)<(k);(i)) #define rep(i,j,k) for(int (i)(j);(i)>(k);--(i)) #defi…

使用 IDEA 将本地jar上传到本地maven仓库

IDEA中的操作步骤 创建一个 Maven 运行配置 在开发工具的导航栏中&#xff0c;点击选择配置&#xff1a; 在配置界面点击左上角的加号&#xff0c;随后选择增加一个maven运行配置&#xff1a; 编辑 Maven 配置 上图中的含义&#xff1a; Name 对应的是本配置的名字、用处或功…

Tomcat Web 开发项目构建教程

1下载Tomcat安装包&#xff0c;下载链接&#xff1a;Apache Tomcat - Welcome!&#xff0c;我电脑环境为JDK8,所以下载Tomcat9.0 2、下载完压缩包后&#xff0c;解压到指定位置 3.在intelij中新建一个项目 4.选中创建的项目&#xff0c;双击shift&#xff0c;输入add frame...然…

【Android】数据安全(一) —— Sqlite加密

目录 SQLCipherSQLiteCrypt其它 SQLCipher SQLCipher 是 SQLite 数据库的的开源扩展&#xff0c;使用了 256 位 AES 加密&#xff0c;支持跨平台、零配置、数据100%加密、加密开销低至 5 -15%、占用空间小、性能出色等优点&#xff0c;因此非常适合保护嵌入式应用程序数据库&a…

阿里云ECS磁盘扩容操作手册

云原生专栏大纲 文章目录 ESC磁盘扩容步骤前提条件云盘备份云盘扩容扩容分区和文件系统前提条件操作视频操作步骤准备工作&#xff1a;获取目标云盘信息步骤1&#xff1a;扩容分区步骤2&#xff1a;扩容文件系统 ESC磁盘扩容步骤 扩容已有云盘的操作步骤和注意事项_云服务器 …

excel如何查找两张表格共有的名单信息

我们需要在表格一中查找表格二中有名单的数据行 或者我想在表格二中查找表格一中有数据的数据行 这时候就可以使用上我们的公式啦 IF(COUNTIF(Sheet2!$B$2:$B$11326,B5),"YES") Sheet2&#xff1a;表示需要查询内容所在的表格 $B$2&#xff1a;表示从Sheet2表中的B2…

C语言标准库函数qsort( )——数据排序

大家好&#xff01;我是保护小周ღ&#xff0c;本期为大家带来的是深度解剖C语言标准库函数 qsort()&#xff0c;qsort()函数他可以对任意类型的数据排序&#xff0c;博主会详细解释函数使用方法&#xff0c;以及使用快速排序的左右指针法模拟实现函数功能&#xff0c;这样的排…