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

news2025/4/19 0:17:04

一、期望

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

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.coloradmin.cn/o/2336848.html

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

相关文章

Elasticvue-轻量级Elasticsearch可视化管理工具

Elasticvue一个免费且开源的 Elasticsearch 在线可视化客户端&#xff0c;用于管理 Elasticsearch 集群中的数据&#xff0c;完全支持 Elasticsearch 版本 8.x 和 7.x. 功能特色&#xff1a; 集群概览索引和别名管理分片管理搜索和编辑文档REST 查询快照和存储库管理支持国际…

【python】OpenCV—Tracking(10.6)—People Counting

文章目录 1、功能描述2、代码实现3、效果展示4、完整代码5、涉及到的库函数6、参考来自 更多有趣的代码示例&#xff0c;可参考【Programming】 1、功能描述 借助 opencv-python&#xff0c;用 SSD 人形检测模型和质心跟踪方法实现对人群的计数 基于质心的跟踪可以参考 【pyt…

使用KeilAssistant代替keil的UI界面

目录 一、keil Assistant的优势和缺点 二、使用方法 &#xff08;1&#xff09;配置keil的路径 &#xff08;2&#xff09;导入并使用工程 &#xff08;3&#xff09;默认使用keil自带的ARM编译器而非GUN工具链 一、keil Assistant的优势和缺点 在日常学…

FreeRTOS菜鸟入门(五)·空闲任务与阻塞延时的实现

目录 1. 实现空闲任务 1.1 定义空闲任务的栈 1.2 定义空闲任务的任务控制块 1.3 创建空闲任务 2. 实现阻塞延时 2.1 vTaskDelay()函数 2.2 修改 vTaskSwitchContext()函数 3. SysTick 中断服务函数 4. SysTick 初始化函数 通过之前我们了解知道&#xff0c;任…

JBOSS反序列化漏洞解析与防范策略CVE-2017-12149

JBOSS反序列化漏洞解析与防范策略 引言 JBOSS是一个流行的开源应用服务器&#xff0c;广泛应用于企业级应用程序的开发和部署。然而&#xff0c;由于其广泛的使用和复杂的架构&#xff0c;JBOSS也成为了黑客攻击的常见目标。近年来&#xff0c;多个JBOSS漏洞被曝光&#xff0…

Web3技术下数字资产数据保护的实践探索

在这个信息爆炸的时代&#xff0c;数字资产已经成为我们生活中不可或缺的一部分。随着Web3技术的兴起&#xff0c;它以其去中心化、透明性和安全性的特点&#xff0c;为数字资产的管理和保护提供了新的解决方案。本文将探讨Web3技术在数字资产数据保护方面的实践探索&#xff0…

从PPT到PNG:Python实现的高效PPT转图工具

从PPT到PNG&#xff1a;Python实现的高效PPT转图工具 在日常工作中&#xff0c;PPT&#xff08;PowerPoint&#xff09;文件是我们常用的演示工具。然而&#xff0c;有时候我们需要将PPT的内容提取为图片格式&#xff08;如PNG&#xff09;以便于展示或保存。手动将每一页PPT保…

Rust-引用借用规则

目录 一、概述 二、借用规则 三、详细解释 3.1 第一条规则 3.2 第二条规则 3.3 第三条规则 四、总结 Welcome to Code Blocks blog 本篇文章主要介绍了 [Rust-引用借用规则] ❤博主广交技术好友&#xff0c;喜欢文章的可以关注一下❤ 一、概述 Rust为确保程序在运行时不…

如何保障企业数据的安全?软件开发中的数据安全防护措施

引言 随着数字化转型的推进&#xff0c;数据已经成为企业最重要的资产之一。然而&#xff0c;随着数据量的增长&#xff0c;数据泄露、丢失和滥用的风险也不断增加。如何保障企业数据的安全&#xff0c;成为企业在进行软件开发时必须重点关注的问题。本文将介绍软件开发中的一些…

Linux安装开源版MQTT Broker——EMQX服务器环境从零到一的详细搭建教程

零、EMQX各个版本的区别 EMQX各个版本的功能对比详情https://docs.emqx.com/zh/emqx/latest/getting-started/feature-comparison.html

【软件工程大系】净室软件工程

净室软件工程&#xff08;Cleanroom Software Engineering&#xff09;是一种以缺陷预防&#xff08;正确性验证&#xff09;为核心的软件开发方法&#xff0c;旨在通过严格的工程规范和数学验证&#xff0c;在开发过程中避免缺陷的产生&#xff0c;而非依赖后期的测试和调试。…

软考 系统架构设计师系列知识点之杂项集萃(49)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之杂项集萃&#xff08;48&#xff09; 第76题 某文件管理系统在磁盘上建立了位视图&#xff08;bitmap&#xff09;&#xff0c;记录磁盘的使用情况。若磁盘上物理块的编号依次为&#xff1a;0、1、2、……&#xff1b…

JVM 调优不再难:AI 工具自动生成内存优化方案

在 Java 应用程序的开发与运行过程中&#xff0c;Java 虚拟机&#xff08;JVM&#xff09;的性能调优一直是一项极具挑战性的任务&#xff0c;尤其是内存优化方面。不合适的 JVM 内存配置可能会导致应用程序出现性能瓶颈&#xff0c;甚至频繁抛出内存溢出异常&#xff0c;影响业…

封装Tcp Socket

封装Tcp Socket 0. 前言1. Socket.hpp2. 简单的使用介绍 0. 前言 本文中用到的Log.hpp在笔者的历史文章中都有涉及&#xff0c;这里就不再粘贴源码了&#xff0c;学习地址如下&#xff1a;https://blog.csdn.net/weixin_73870552/article/details/145434855?spm1001.2014.3001…

Linux 入门九:Linux 进程间通信

概述 进程间通信&#xff08;IPC&#xff0c;Inter-Process Communication&#xff09;是指在不同进程之间传递数据和信息的机制。Linux 提供了多种 IPC 方式&#xff0c;包括管道、信号、信号量、消息队列、共享内存和套接字等。 方式 一、管道&#xff08;Pipe&#xff09…

Redis之缓存更新策略

缓存更新策略 文章目录 缓存更新策略一、策略对比二、常见的缓存更新策略三、如何选择策略四、实际应用示例五、使用 Cache-Aside TTL 的方式&#xff0c;实现缓存商铺信息详情1.引入StringRedisTemplate2.将查询商铺信息加入缓存3.更新商铺信息时移除缓存总结 六、注意事项 一…

【leetcode100】杨辉三角

1、题目描述 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]示例 2: 输入: numRows 1 输出: [[1]…

Selenium2+Python自动化:利用JS解决click失效问题

文章目录 前言一、遇到的问题二、点击父元素问题分析解决办法实现思路 三、使用JS直接点击四、参考代码 前言 在使用Selenium2和Python进行自动化测试时&#xff0c;我们有时会遇到这样的情况&#xff1a;元素明明已经被成功定位&#xff0c;代码运行也没有报错&#xff0c;但…

OpenStack Yoga版安装笔记(十九)启动一个实例(Self-service networks)

1、概述 1.1 官方文档 Launch an instancehttps://docs.openstack.org/install-guide/launch-instance.html 《OpenStack Yoga版安装笔记&#xff08;十四&#xff09;启动一个实例》文档中&#xff0c;已经按照Option1: Provider networks创建网络。 本文按照Option2&#…

数学教学通讯杂志数学教学通讯杂志社数学教学通讯编辑部2025年第6期目录

课程教材教法 “课程思政”视域下的高中数学教学探索与实践——以“函数概念的发展历程”为例 赵文博; 3-617 PBL教学模式下高中统计教学的探索与实践——以“随机抽样&#xff08;第一课时&#xff09;”为例 陈沛余; 7-10 “三新”背景下的高中数学教学困境与应对…