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

【机器学习】机器学习中用到的高等数学知识-7.信息论 (Information Theory)

  • 熵 (Entropy):用于评估信息的随机性,常用于决策树和聚类算法。
  • 交叉熵 (Cross-Entropy):用于衡量两个概率分布之间的差异,在分类问题中常用。

信息论作为处理信息量和信息传输的数学理论,在机器学习中具有广泛的应用。本文将围绕熵(Entropy)和交叉熵(Cross-Entropy),探讨它们的定义、公式推导、应用场景及代码实现。

1. 熵 (Entropy)

1.1 定义

熵衡量信息的不确定性或随机性。它可以理解为“信息的平均量”,即某一分布下每个事件的信息量的期望值。

1.2 数学公式

对于一个离散随机变量 X,取值为 x_1, x_2, \ldots, x_n,其熵定义为:

H(X) = -\sum_{i=1}^{n} P(x_i) \log P(x_i)

其中:

  • P(x_i) 是事件 x_i 的概率;
  • log 通常以 2 为底(信息量以比特为单位)或以 e 为底(信息量以 nat 为单位)。
1.3 推导过程

熵的来源可以从信息量(Information Content)定义出发:

I(x_i) = -\log P(x_i)

熵是信息量的加权平均值,因而有:

H(X) = \mathbb{E}[I(x)] = -\sum_{i=1}^n P(x_i) \log P(x_i)

1.4 应用场景
  1. 决策树算法:选择分裂点时使用熵减少量(信息增益)。
  2. 聚类算法:评估聚类后类别分布的随机性。
  3. 语言模型:评估文本序列的不确定性。
1.5 熵的Python代码实现
import numpy as np# 定义熵函数
def entropy(p):return -np.sum(p * np.log2(p))# 示例概率分布
p = np.array([0.5, 0.25, 0.25])
print("熵:", entropy(p))
熵: 1.5
1.6 图示

熵的图示展示了单一事件概率分布变化时的熵值变化。

import matplotlib.pyplot as plt
import numpy as npp = np.linspace(0.01, 0.99, 100)
entropy_values = -p * np.log2(p) - (1 - p) * np.log2(1 - p)plt.plot(p, entropy_values, label='Entropy')
plt.xlabel('P(x)')
plt.ylabel('H(X)')
plt.title('Entropy vs Probability')
plt.legend()
plt.grid()
plt.show()


2. 交叉熵 (Cross-Entropy)

2.1 定义

交叉熵用于衡量两个概率分布之间的差异。给定真实分布 P 和预测分布 Q,其定义为:

H(P, Q) = -\sum_{i=1}^n P(x_i) \log Q(x_i)

当 P 和 Q 相等时,交叉熵退化为熵。

2.2 推导过程

交叉熵的来源是 Kullback-Leibler (KL) 散度:

D_{KL}(P || Q) = \sum_{i=1}^n P(x_i) \log \frac{P(x_i)}{Q(x_i)}

其中:

H(P, Q) = H(P) + D_{KL}(P || Q)

说明交叉熵包含了真实分布的熵和两分布之间的 KL 散度。

2.3 应用场景
  1. 分类问题:在机器学习中作为目标函数,尤其是多分类问题中的 Softmax 回归。
  2. 语言模型:衡量生成模型输出的分布与目标分布的匹配度。
  3. 聚类算法:评估聚类后的分布与目标分布的差异。
2.4 交叉熵的Python代码实现
import numpy as np# 定义交叉熵函数
def cross_entropy(p, q):return -np.sum(p * np.log2(q))# 示例真实分布和预测分布
p = np.array([1, 0, 0])  # 实际类别
q = np.array([0.7, 0.2, 0.1])  # 预测分布
print("交叉熵:", cross_entropy(p, q))
交叉熵: 0.5145731728297583
2.5 图示

交叉熵的图示对比了真实分布和不同预测分布间的差异。

import matplotlib.pyplot as plt
import numpy as npdef cross_entropy(p, q):return -np.sum(p * np.log2(q))p = np.array([1, 0, 0])
q_values = [np.array([0.7, 0.2, 0.1]), np.array([0.4, 0.4, 0.2])]ce_values = [cross_entropy(p, q) for q in q_values]
labels = ['Q1 (Closer)', 'Q2 (Further)']plt.bar(labels, ce_values, color=['blue', 'orange'])
plt.title('Cross-Entropy Comparison')
plt.ylabel('Cross-Entropy')
plt.show()


3. 实际案例:分类问题中的交叉熵

在图像分类中,交叉熵是常用的损失函数。对于一个三类分类问题:

  • 真实类别为 [1, 0, 0]。
  • 模型预测的概率分布为 [0.7, 0.2, 0.1]。

交叉熵计算结果为 0.514,比完全随机预测([1/3, 1/3, 1/3])的交叉熵小,表明模型预测效果更好。


总结

熵和交叉熵是信息论中的核心概念,其在机器学习中的重要性不可忽视。通过公式理解、代码实现和图示分析,我们可以更好地掌握这些工具,并有效地将其应用于实际问题中。


拓展阅读

【机器学习】数学知识:对数-CSDN博客
【机器学习】机器学习中用到的高等数学知识-2.概率论与统计 (Probability and Statistics)_机器学习概率-CSDN博客

相关文章:

【机器学习】机器学习中用到的高等数学知识-7.信息论 (Information Theory)

熵 (Entropy):用于评估信息的随机性,常用于决策树和聚类算法。交叉熵 (Cross-Entropy):用于衡量两个概率分布之间的差异,在分类问题中常用。 信息论作为处理信息量和信息传输的数学理论,在机器学习中具有广泛的应用。…...

《现代制造技术与装备》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答 问:《现代制造技术与装备》是不是核心期刊? 答:不是,是知网收录的第二批认定学术期刊。 问:《现代制造技术与装备》级别? 答:省级。主管单位:齐鲁工业大学&#xff0…...

09 - Clickhouse的SQL操作

目录 1、Insert 1.1、标准 1.2、从表到表的插入 2、Update和Delete 2.1、删除操作 2.2、修改操作 3、查询操作 3.1、with rollup:从右至左去掉维度进行小计 3.2、with cube : 从右至左去掉维度进行小计,再从左至右去掉维度进行小计 3.3、with …...

如何解决pdf.js跨域从url动态加载pdf文档

摘要 当我们想用PDF.js从URL加载文档时,将会因遇到跨域问题而中断,且是因为会触发了PDF.js和浏览器的双重CORS block,这篇文章将会介绍:①如何禁用pdf.js的跨域?②如何绕过浏览器的CORS加载URL文件?②如何使…...

深入理解TTY体系:设备节点与驱动程序框架详解

往期内容 本专栏往期内容:Uart子系统 UART串口硬件介绍 interrupt子系统专栏: 专栏地址:interrupt子系统Linux 链式与层级中断控制器讲解:原理与驱动开发 – 末片,有专栏内容观看顺序 pinctrl和gpio子系统专栏&#xf…...

库的操作(MySQL)

1.创建数据库 语法: CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...] create_specification:[DEFAULT] CHARACTER SET charset_name[DEFAULT] COLLATE collation_name说明: 大写的表示关键字 [ ] 是可…...

在 for 循环中,JVM可能会将 arr.length 提升到循环外部,仅计算一次。可能会将如何解释 详解

在 Java 的 for 循环中,JVM 有能力进行优化,将 arr.length 的访问提升到循环外部,避免每次迭代都重新计算 arr.length。这种优化主要是由于 JVM 的 即时编译器(JIT) 和 逃逸分析(Escape Analysis&#xff0…...

回溯--数据在内存中的存储:整数、大小端和浮点数的深度解析

目录 引言 1. 整数在内存中的存储 1.1 原码、反码和补码 1.2 为什么使用补码? 1.3 示例代码:整数的存储 2. 大小端字节序和字节序判断 2.1 什么是大端和小端? 2.2 为什么会有大端和小端之分? 2.3 字节序的判断小程序 2.…...

第二十二章 Spring之假如让你来写AOP——Target Object(目标对象)篇

Spring源码阅读目录 第一部分——IOC篇 第一章 Spring之最熟悉的陌生人——IOC 第二章 Spring之假如让你来写IOC容器——加载资源篇 第三章 Spring之假如让你来写IOC容器——解析配置文件篇 第四章 Spring之假如让你来写IOC容器——XML配置文件篇 第五章 Spring之假如让你来写…...

探索设计模式:原型模式

设计模式之原型模式 🧐1. 概念🎯2. 原型模式的作用📦3. 实现1. 定义原型接口2. 定义具体的原型类3. 定义客户端4. 结果 📰 4. 应用场景🔍5. 深拷贝和浅拷贝 在面向对象编程中,设计模式是一种通用的解决方案…...

NLP论文速读(EMNLP 2023)|工具增强的思维链推理

论文速读|ChatCoT: Tool-Augmented Chain-of-Thought Reasoning on Chat-based Large Language Models 论文信息: 简介: 本文背景是关于大型语言模型(LLMs)在复杂推理任务中的表现。尽管LLMs在多种评估基准测试中取得了优异的成绩…...

JVM垃圾回收详解.②

空间分配担保 空间分配担保是为了确保在 Minor GC 之前老年代本身还有容纳新生代所有对象的剩余空间。 《深入理解 Java 虚拟机》第三章对于空间分配担保的描述如下: JDK 6 Update 24 之前,在发生 Minor GC 之前,虚拟机必须先检查老年代最大…...

什么是事务,事务有什么特性?

事务的四大特性(ACID) 原子性(Atomicity) 解释:原子性确保事务中的所有操作要么全部完成,要么全部不做。这意味着事务是一个不可分割的工作单元。在数据库中,这通常通过将事务的操作序列作为一个…...

深入解析:如何使用 PyTorch 的 SummaryWriter 进行深度学习训练数据的详细记录与可视化

深入解析:如何使用 PyTorch 的 SummaryWriter 进行深度学习训练数据的详细记录与可视化 为了更全面和详细地解释如何使用 PyTorch 的 SummaryWriter 进行模型训练数据的记录和可视化,我们可以从以下几个方面深入探讨: 初始化 SummaryWriter…...

企业微信中设置回调接口url以及验证 spring boot项目实现

官方文档: 接收消息与事件: 加密解密文档:加解密库下载与返回码 - 文档 - 企业微信开发者中心 下载java样例 加解密库下载与返回码 - 文档 - 企业微信开发者中心 将解压开的代码 ‘将文件夹:qq\weixin\mp\aes的代码作为工具拷…...

电脑超频是什么意思?超频的好处和坏处

嗨,亲爱的小伙伴!你是否曾经听说过电脑超频?在电脑爱好者的圈子里,这个词似乎非常熟悉,但对很多普通用户来说,它可能还是一个神秘而陌生的存在。 今天,我将带你揭开超频的神秘面纱,…...

在 AMD GPU 上构建深度学习推荐模型

Deep Learning Recommendation Models on AMD GPUs — ROCm Blogs 2024 年 6 月 28 日 发布者 Phillip Dang 在这篇博客中,我们将演示如何在支持 ROCm 的 AMD GPU 上使用 PyTorch 构建一个简单的深度学习推荐模型 (DLRM)。 简介 DLRM 位于推荐系统和深度学习的交汇…...

阿里云IIS虚拟主机部署ssl证书

宝塔配置SSL证书用起来是很方便的,只需要在站点里就可以配置好,但是云虚拟主机在管理的时候是没有这个权限的,只提供了简单的域名管理等信息。 此处记录下阿里云(原万网)的IIS虚拟主机如何配置部署SSL证书。 进入虚拟…...

Python运算符列表

运算符 描述 xy&#xff0c;x—y 加、减,“"号可重载为连接符 x*y,x*&#xff0a;y&#xff0c;x/y,x&#xff05;y 相乘、求平方、相除、求余&#xff0c;“*”号可重载为重复&#xff0c;“&#xff05;"号可重载为格式化 <&#xff0c;<&#xff0c;&…...

MFC图形函数学习09——画多边形函数

这里所说的多边形是指在同一平面中由多条边构成的封闭图形&#xff0c;强调封闭二字&#xff0c;否则无法进行颜色填充&#xff0c;多边形包括凸多边形和凹多边形。 一、绘制多边形函数 原型&#xff1a;BOOL Polygon(LPPOINT lpPoints,int nCount); 参数&#x…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

32单片机——基本定时器

STM32F103有众多的定时器&#xff0c;其中包括2个基本定时器&#xff08;TIM6和TIM7&#xff09;、4个通用定时器&#xff08;TIM2~TIM5&#xff09;、2个高级控制定时器&#xff08;TIM1和TIM8&#xff09;&#xff0c;这些定时器彼此完全独立&#xff0c;不共享任何资源 1、定…...

数据结构第5章:树和二叉树完全指南(自整理详细图文笔记)

名人说&#xff1a;莫道桑榆晚&#xff0c;为霞尚满天。——刘禹锡&#xff08;刘梦得&#xff0c;诗豪&#xff09; 原创笔记&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 上一篇&#xff1a;《数据结构第4章 数组和广义表》…...

密码学基础——SM4算法

博客主页&#xff1a;christine-rr-CSDN博客 ​​​​专栏主页&#xff1a;密码学 &#x1f4cc; 【今日更新】&#x1f4cc; 对称密码算法——SM4 目录 一、国密SM系列算法概述 二、SM4算法 2.1算法背景 2.2算法特点 2.3 基本部件 2.3.1 S盒 2.3.2 非线性变换 ​编辑…...

Win系统权限提升篇UAC绕过DLL劫持未引号路径可控服务全检项目

应用场景&#xff1a; 1、常规某个机器被钓鱼后门攻击后&#xff0c;我们需要做更高权限操作或权限维持等。 2、内网域中某个机器被钓鱼后门攻击后&#xff0c;我们需要对后续内网域做安全测试。 #Win10&11-BypassUAC自动提权-MSF&UACME 为了远程执行目标的exe或者b…...

【Java】Ajax 技术详解

文章目录 1. Filter 过滤器1.1 Filter 概述1.2 Filter 快速入门开发步骤:1.3 Filter 执行流程1.4 Filter 拦截路径配置1.5 过滤器链2. Listener 监听器2.1 Listener 概述2.2 ServletContextListener3. Ajax 技术3.1 Ajax 概述3.2 Ajax 快速入门服务端实现:客户端实现:4. Axi…...