【深度学习与大模型基础】第10章-期望、方差和协方差

一、期望

———————————————————————————————————————————

1. 期望是什么?

期望(Expectation)可以理解为“长期的平均值”。比如:

  • 掷骰子:一个6面骰子的点数是1~6,每个数字概率是1/6。
    期望值 = (1+2+3+4+5+6)/6 = 3.5
    意思是:如果你掷骰子无数次,平均每次的结果会趋近于3.5。

  • 程序员类比
    假设你每天写代码的bug数量是随机变量,长期平均每天产生2个bug,那么 bug数的期望就是2


2. 期望的公式

离散随机变量的期望公式:

E(X)=X_{1}P_{1}+X_{2}P_{3}+...+X_{K}P_{K}

即:每个值 × 它的概率,再全部加起来


3. 代码例子

例子1:计算骰子的期望
import numpy as np# 骰子的可能取值和概率
values = np.array([1, 2, 3, 4, 5, 6])
probabilities = np.array([1/6] * 6)  # 每个概率1/6# 期望 = sum(值 × 概率)
expectation = np.sum(values * probabilities)
print(expectation)  # 输出:3.5

4. 期望的现实意义

  • 决策依据:比如比较两个功能的预期收益,选期望更高的。

  • 风险评估:比如算法的平均时间复杂度就是期望的体现。

  • 机器学习:损失函数的期望最小化(如交叉熵)是训练模型的核心。


5. 注意

  • 期望≠必然结果!比如骰子期望是3.5,但永远掷不出3.5。

  • 期望可能是无限(如某些概率分布的期望不存在)。

———————————————————————————————————————————

二、方差

_____________________________________________________________________________

1. 方差是什么?

方差衡量的是数据的“离散程度”,即数据点与期望值(均值)的偏离程度。
通俗说:方差越大,数据越“散”;方差越小,数据越“集中”

  • 例子1
    两组程序员每天写的代码行数:

    • A组:[90, 100, 110](均值=100,波动小)→ 方差小

    • B组:[50, 100, 150](均值=100,波动大)→ 方差大

  • 例子2(程序员版)
    你的代码在测试环境跑10次,每次耗时可能是:

    • 低方差:[9ms, 10ms, 11ms](稳定)

    • 高方差:[1ms, 10ms, 20ms](波动大,性能不可靠)


2. 方差的公式

设随机变量 X的期望为 E(X),则方差 Var(X)为:

 Var(X)=E[(X-E(X))^{2}]

即:每个数据与均值的差的平方的平均


3. 代码例子

例子1:计算骰子的方差

import numpy as np# 骰子的可能取值和概率
values = np.array([1, 2, 3, 4, 5, 6])
probabilities = np.array([1/6] * 6)  # 每个概率1/6# 期望 = sum(值 × 概率)
expectation = np.sum(values * probabilities)
print(expectation)  # 输出:3.5# 方差 = sum( (x_i - 期望)^2 × 概率 )
variance = np.sum((values - expectation) ** 2 * probabilities)
print(variance)  # 输出:2.916...
 

解释

  • 骰子的结果1~6分别与期望3.5的差是[-2.5, -1.5, -0.5, 0.5, 1.5, 2.5]

  • 平方后求和再平均,得到方差≈2.92(说明骰子点数波动较大)。


4. 方差的意义

  • 稳定性评估:比如API接口的响应时间方差越小越好。

  • 风险控制:在强化学习中,策略的方差高可能导致训练不稳定。

  • 特征选择:机器学习中,方差接近0的特征可能对模型无用(如常数列)。


5. 注意

  • 方差单位是原数据的平方(比如“秒²”),有时用标准差(方差的平方根)更直观。

  • 方差对异常值敏感(一个极端值会大幅拉高方差)。


 三、协方差

———————————————————————————————————————————

1. 协方差是什么?

协方差衡量的是两个随机变量的“协同变化关系”:

  • 协方差 > 0:一个变量增大,另一个也倾向于增大(正相关)。

  • 协方差 < 0:一个变量增大,另一个倾向于减小(负相关)。

  • 协方差 ≈ 0:两个变量无明显线性关系。

通俗比喻

  • 程序员版:

    • 正相关:代码量增加 → Bug数量也增加 😅

    • 负相关:测试覆盖率提高 → Bug数量减少 🎉

    • 无关系:咖啡饮用量和代码性能(可能毫无关联)☕→🤖


2. 协方差公式

对于两个随机变量 X 和 Y,协方差 Cov(X,Y) 定义为:

Cov(X,Y)=E[(X−E[X])(Y−E[Y])]

即:两个变量分别与各自均值的偏差,乘积的平均值


3. 代码例子

例子1:程序员工作时长与Bug数量的关系

假设5天数据:

  • 每天工作时间(小时):[6, 8, 10, 12, 14]

  • 对应Bug数量:[3, 5, 7, 9, 11]

import numpy as np# 数据
hours = np.array([6, 8, 10, 12, 14])  # X
bugs = np.array([3, 5, 7, 9, 11])     # Y# 计算协方差
covariance = np.cov(hours, bugs, ddof=0)[0, 1]  # ddof=0表示总体协方差
print(covariance)  # 输出:10.0
 

解释

  • 协方差=10(正数),说明工作时长和Bug数量呈正相关(工作时间越长,Bug越多)。


例子2:代码覆盖率与Bug数量的关系

新数据:

  • 代码覆盖率(%):[70, 80, 90, 95, 99]

  • Bug数量:[10, 7, 5, 3, 1]

coverage = np.array([70, 80, 90, 95, 99])
bugs = np.array([10, 7, 5, 3, 1])covariance = np.cov(coverage, bugs, ddof=0)[0, 1]
print(covariance)  # 输出:-32.16
 

解释

  • 协方差≈-32(负数),说明覆盖率越高,Bug越少(负相关)。


4. 协方差的意义

  • 特征相关性分析:在机器学习中,协方差矩阵用于筛选高相关性的特征。

  • 投资组合:在量化中,不同股票收益的协方差衡量风险分散效果。

  • 性能优化:比如分析CPU占用和内存使用的协方差,优化资源分配。


5. 注意

  • 协方差的数值大小受数据单位影响(比如“小时×Bug数”),难以直接比较。

  • 更常用的是相关系数(Pearson系数),它标准化协方差到[-1, 1]范围:

    corr = np.corrcoef(hours, bugs)[0, 1]  # 输出:1.0(完全线性正相关)

附:协方差矩阵

协方差矩阵是机器学习中常用的工具,例如PCA降维:

# 计算协方差矩阵
data = np.vstack([hours, bugs])
cov_matrix = np.cov(data, ddof=0)
print(cov_matrix)

输出:

 [[ 8.   -8.8 ]
 [-8.8   9.76]]


总结

  • 协方差告诉你两个变量如何共同变化。

  • 正/负协方差 → 正/负相关;接近0 → 无线性关系。

  • 代码中用np.cov()计算,但实际分析更常用相关系数。

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

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

相关文章

JAVA虚拟机(JVM)学习

入门 什么是JVM JVM&#xff1a;Java Virtual Machine&#xff0c;Java虚拟机。 JVM是JRE(Java Runtime Environment)的一部分&#xff0c;安装了JRE就相当于安装了JVM&#xff0c;就可以运行Java程序了。JVM的作用&#xff1a;加载并执行Java字节码&#xff08;.class&#…

【数据结构与算法】——堆(补充)

前言 上一篇文章讲解了堆的概念和堆排序&#xff0c;本文是对堆的内容补充 主要包括&#xff1a;堆排序的时间复杂度、TOP 这里写目录标题 前言正文堆排序的时间复杂度TOP-K 正文 堆排序的时间复杂度 前文提到&#xff0c;利用堆的思想完成的堆排序的代码如下&#xff08;包…

什么是柜台债

柜台债&#xff08;柜台债券业务&#xff09;是指通过银行等金融机构的营业网点或电子渠道&#xff0c;为投资者提供债券买卖、托管、结算等服务的业务模式。它允许个人、企业及机构投资者直接参与银行间债券市场的交易&#xff0c;打破了以往仅限机构参与的壁垒。以下是综合多…

【Android读书笔记】读书笔记记录

文章目录 一. Android开发艺术探索1. Activity的生命周期和启动模式1.1 生命周期全面分析 一. Android开发艺术探索 1. Activity的生命周期和启动模式 1.1 生命周期全面分析 onPause和onStop onPause后会快速调用onStop&#xff0c;极端条件下直接调用onResume 当用户打开新…

Java对象内存结构详解

Java对象内存结构详解 Java对象在JVM内存中的存储结构可以分为三个部分&#xff1a;对象头&#xff08;Header&#xff09;、实例数据&#xff08;Instance Data&#xff09;和对齐填充&#xff08;Padding&#xff09;。以下是64位JVM&#xff08;开启压缩指针&#xff09;下…

【TI MSPM0】Printf重定向学习

一、新建工程 通过XDS110与电脑进行通信。 选择这两个引脚 需要添加这两个头文件 在程序中添加这三个函数即可对printf进行重定向 二、封装函数 另一种方法 封装一个函数&#xff0c;定义一个数组

深度强化学习基础 0:通用学习方法

过去自己学习深度强化学习的痛点&#xff1a; 只能看到各种术语、数学公式勉强看懂&#xff0c;没有建立清晰且准确关联 多变量交互关系浮于表面&#xff0c;有时候连环境、代理控制的变量都混淆 模型种类繁多&#xff0c;概念繁杂难整合、对比或复用&#xff0c;无框架分析所…

asm汇编源代码之-字库转换程序

将标准的16x16点阵汉字库(下载16x16汉字库)转换成适合VGA文本模式下显示的点阵汉字库 本程序需要调用file.asm中的子程序,所以连接时需要把file连接进来,如下 C:\> tlink chghzk file 调用参数描述如下 C:\> chghzk ; 无调用参数,转换标准库文件(SRC16.FNT)为适合VGA…

uniapp转换markdown

效果 AI智能体 微信小程序 流式 1.安装Node.js 参考:2024最新版Node.js下载安装及环境配置教程&#xff08;非常详细&#xff09;_node.js 安装-CSDN博客 2.需要克隆项目到本地或直接到项目地址下载压缩包。 参考&#xff1a;uniapp中解析markdown支持网页和小程序_uniapp ma…

用java代码如何存取数据库的blob字段

一.业务 在业务中我们被要求将文件或图片等转成 byte[] 或 InputStream存到数据库的Blob类型的字段中. 二.Blob类型介绍 在 MySQL 中&#xff0c;Blob 数据类型用于存储二进制数据。MySQL 提供了四种不同的 Blob 类型&#xff1a; TINYBLOB: 最大存储长度为 255 个字节。BL…

qemu(2) -- 定制开发板

1. 前言 qemu支持自定义开发板&#xff0c;本文就记录一下折腾的过程。基于qemu-10.0.0-rc3添加x210vb3s开发板。 2. 添加板卡文件 网上参考了一些文章&#xff0c;有些文章使用的版本和我的不一样&#xff0c;折腾起来费了点时间&#xff0c;最后发现还是直接参考qemu中已有…

Python在糖尿病分类问题上寻找具有最佳 ROC AUC 分数和 PR AUC 分数(决策树、逻辑回归、KNN、SVM)

Python在糖尿病分类问题上寻找具有最佳 ROC AUC 分数和 PR AUC 分数&#xff08;决策树、逻辑回归、KNN、SVM&#xff09; 问题模板解题思路1. 导入必要的库2. 加载数据3. 划分训练集和测试集4. 数据预处理5. 定义算法及其参数6. 存储算法和对应指标7. 训练模型并计算指标8. 找…

CPU(中央处理器)

一、CPU的定义与核心作用 CPU 是计算机的核心部件&#xff0c;负责 解释并执行指令、协调各硬件资源 以及 完成数据处理&#xff0c;其性能直接影响计算机的整体效率。 核心功能&#xff1a; 从内存中读取指令并译码。执行算术逻辑运算。控制数据在寄存器、内存和I/O设备间的…

上层 Makefile 控制下层 Makefile 的方法

在复杂的项目中&#xff0c;通常会将项目划分为多个模块或子项目&#xff0c;每个模块都有自己的 Makefile。上层 Makefile 的作用是协调和控制这些下层 Makefile 的构建过程。下面是几种常见的示例&#xff0c;实现上层 Makefile 对下层 Makefile 的控制。 直接调用&#xff1…

prompts提示词经典模板

prompts.py 中的提示词模板详解 文件中定义了两个核心提示词模板&#xff1a;REASON_PROMPT 和 RELEVANT_EXTRACTION_PROMPT。这两个模板在 DeepResearcher 的推理过程中扮演着关键角色。下面我将详细解析这两个模板的结构和功能。 REASON_PROMPT 详解 REASON_PROMPT 是用于指…

使用python获取电脑硬盘信息

import psutil# 获取硬盘信息 disk_partitions psutil.disk_partitions() print(disk_partitions) for partition in disk_partitions:print(f"设备: {partition.device}")print(f"挂载点: {partition.mountpoint}")print(f"文件系统类型: {partitio…

HarmonyOS-ArkUI V2装饰器: @Provider和@Consumer装饰器:跨组件层级双向同步

作用 我们在之前学习的那些控件中,各有特点,也各有缺陷,至今没有痛痛快快的出现过真正能跨组件的双向绑定的装饰器。 比如 @Local装饰器,不能跨组件@Param装饰器呢,能跨组件传递,但是仅仅就是下一层组件接收参数。另外,它是单向传递,不可被重新赋值。如果您非要改值则…

索引下推(Index Condition Pushdown, ICP)

概念 索引下推是一种数据库查询优化技术&#xff0c;通过在存储引擎层面应用部分WHERE条件来减少不必要的数据读取。它特别适用于复合索引的情况&#xff0c;因为它可以在索引扫描阶段就排除不符合全部条件的数据行&#xff0c;而不是将所有可能匹配的记录加载到服务器层再进行…

idea在线离线安装插件教程

概述 对于小白来说&#xff0c;刚使用idea时&#xff0c;还有很多不懂的地方&#xff0c;这里&#xff0c;简单介绍下如何安装插件。让小白能容易上手全盘idea。 1、File -> Settings 2、找到 Plugins -> Marketplace 3、安装 3.1、在线安装 输入想搜索的内容&#x…

豪越赋能消防安全管控,解锁一体化内管“安全密码”

在消防安全保障体系中&#xff0c;内部管理的高效运作是迅速、有效应对火灾及各类灾害事故的重要基础。豪越科技凭借在消防领域的深耕细作与持续创新&#xff0c;深入剖析消防体系内部管理的痛点&#xff0c;以自主研发的消防一体化安全管控平台&#xff0c;为行业发展提供了创…