大数定律详解
前言
本文隶属于专栏《机器学习数学通关指南》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!
本专栏目录结构和参考文献请见《机器学习数学通关指南》
正文
🌟 一、大数定律的核心思想
大数定律(Law of Large Numbers)揭示了一个基本真理:当大量独立同分布随机变量通过算术平均组合时,其平均值会稳定收敛于理论期望值。这一定律从数学上严格证明了统计学中的经验事实:频率依概率收敛于概率(即频率稳定性)。
💡 直观理解:投掷硬币次数越多,出现正面的频率越接近理论概率0.5
🔍 二、大数定律的类型与数学表达
2.1 辛钦大数定律(弱大数定律)
- 条件:随机变量序列 X 1 , X 2 , … , X n X_1, X_2, \dots, X_n X1,X2,…,Xn 独立同分布(i.i.d.),且数学期望 E ( X k ) = μ E(X_k) = \mu E(Xk)=μ 存在。
- 结论:对于任意 ϵ > 0 \epsilon > 0 ϵ>0,有
lim n → ∞ P ( ∣ 1 n ∑ k = 1 n X k − μ ∣ < ϵ ) = 1 \lim_{n \to \infty} P\left( \left| \frac{1}{n} \sum_{k=1}^n X_k - \mu \right| < \epsilon \right) = 1 limn→∞P( n1∑k=1nXk−μ <ϵ)=1 - 意义:随着观测次数 n n n 增大,样本均值 1 n ∑ X k \frac{1}{n} \sum X_k n1∑Xk 与真实期望 μ \mu μ 的偏差超过任意小正数 ϵ \epsilon ϵ 的概率趋近于零。
2.2 伯努利大数定律
- 背景:n 次独立伯努利试验(例如抛硬币),事件 A 发生的次数为 f A f_A fA,单次概率为 p p p。
- 结论:对于任意 ϵ > 0 \epsilon > 0 ϵ>0,有
lim n → ∞ P ( ∣ f A n − p ∣ < ϵ ) = 1 \lim_{n \to \infty} P\left( \left| \frac{f_A}{n} - p \right| < \epsilon \right) = 1 limn→∞P( nfA−p <ϵ)=1 - 意义:试验次数足够多时,事件发生的频率 f A n \frac{f_A}{n} nfA 几乎必然接近真实概率 p p p,这是概率定义的客观基础。
🚀 三、理论与机器学习的实际意义
3.1 频率稳定性的数学证明
- 实际中观察到的频率稳定性(如抛硬币正面占比趋近 50%)不是偶然现象,而是大数定律的必然结果。
- 在机器学习中,这为采样方法和统计推断提供了理论基础。
3.2 数据估计的可靠性与样本量
- 通过大样本的算术平均估计期望值(如估计平均收入、产品合格率等),结果具有强稳定性。
- 机器学习应用:数据量过小时,模型训练结果的不确定性较大;随着样本量增大,参数估计逐渐稳定,模型性能趋于一致。
3.3 机器学习中的应用场景
- 梯度下降算法:随机梯度下降(SGD)方法中,随机采样的梯度虽有波动,但平均来看会收敛到真实梯度,这正是大数定律的应用。
- Monte Carlo方法:通过大量随机采样近似计算复杂积分,广泛应用于强化学习和贝叶斯推断。
- 集成学习:多个独立弱学习器的预测结果聚合,可以提高整体预测性能,这背后也是大数定律在起作用。
🧪 四、实践案例与代码演示
4.1 大数定律的Python可视化示例
import numpy as np
import matplotlib.pyplot as plt# 模拟抛硬币实验
np.random.seed(42) # 设置随机种子
n_flips = 10000 # 抛掷次数
p_true = 0.5 # 真实概率# 生成随机实验结果(1代表正面,0代表反面)
flips = np.random.binomial(1, p_true, n_flips)# 计算累积平均值
cumulative_means = np.cumsum(flips) / np.arange(1, n_flips+1)# 可视化结果
plt.figure(figsize=(10, 6))
plt.plot(range(1, n_flips+1), cumulative_means, label='观测频率')
plt.axhline(y=p_true, color='r', linestyle='-', label='真实概率')
plt.xscale('log') # 对x轴使用对数刻度以便观察
plt.xlabel('抛掷次数')
plt.ylabel('正面频率')
plt.title('大数定律演示:硬币抛掷实验')
plt.legend()
plt.grid(True)
plt.show()
这段代码模拟了抛硬币实验并展示了随着试验次数增加,观测频率如何越来越接近理论概率。
4.2 机器学习中的大数定律应用案例
案例一:随机梯度下降中的批量大小影响
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import SGDRegressor
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error# 生成回归数据集
X, y = make_regression(n_samples=10000, n_features=1, noise=10, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 不同批量大小的SGD
batch_sizes = [1, 10, 100, 1000]
epochs = 50
results = {}for batch_size in batch_sizes:# 初始化模型sgd = SGDRegressor(max_iter=1, learning_rate='constant', eta0=0.01, random_state=42)test_errors = []for _ in range(epochs):# 模拟一次迭代indices = np.random.choice(len(X_train), batch_size)sgd.partial_fit(X_train[indices], y_train[indices])# 计算测试误差y_pred = sgd.predict(X_test)mse = mean_squared_error(y_test, y_pred)test_errors.append(mse)results[batch_size] = test_errors# 可视化结果
plt.figure(figsize=(10, 6))
for batch_size, errors in results.items():plt.plot(range(1, epochs+1), errors, label=f'批量大小={batch_size}')plt.xlabel('迭代次数')
plt.ylabel('测试MSE')
plt.title('不同批量大小对SGD收敛的影响')
plt.legend()
plt.grid(True)
plt.show()
这个例子展示了随机梯度下降中,较大批量大小通常会带来更平滑的收敛曲线,这是因为大数定律使得大批量的平均梯度更接近真实梯度。
🔎 五、注意事项与局限性
5.1 独立同分布假设的重要性
- 若变量间存在强相关性或分布不一致,大数定律可能不成立。
- 机器学习启示:数据预处理时应注意特征间的相关性和数据分布,尤其是时间序列数据等非独立同分布数据。
5.2 收敛方式的局限性
- 大数定律是依概率收敛(而非逐点收敛),即允许小概率的极端偏离,但随着 n n n 增大,偏离的可能性逐渐减小。
- 机器学习启示:模型虽然整体表现良好,但仍可能在少数极端情况下表现失常。
5.3 与样本表示性的关系
- 大数定律要求样本能代表总体,在实际应用中需警惕采样偏差问题。
- 机器学习启示:训练数据的采集方式和质量对模型的最终性能至关重要,需避免数据偏差导致的"垃圾进垃圾出"。
🌐 六、机器学习中的扩展应用
6.1 正则化与防止过拟合
大数定律告诉我们,当观测数据足够多时,经验风险会逐渐接近期望风险。然而,在实际的机器学习任务中,我们往往面临有限的训练样本。正则化可以视为一种补偿机制,当数据不足以让经验风险稳定接近期望风险时,通过引入先验信息来稳定模型表现。
6.2 集成学习中的理论依据
集成学习(如随机森林、Boosting等)的成功很大程度上归功于大数定律。当我们训练多个独立的基学习器并聚合它们的预测结果时,可以显著减少预测方差,从而提高整体模型的稳定性和准确性。
6.3 概率风险最小化原则
在统计学习框架下,机器学习的目标是寻找使期望风险最小的决策函数。由于真实分布未知,我们只能通过经验风险近似。大数定律保证了当样本量足够大时,这种近似是合理的,这也是ERM(经验风险最小化)原则有效性的理论基础。
📊 七、典型案例分析
7.1 伯努利试验的频率收敛
- 重复抛硬币试验中,正面频率 f A n \frac{f_A}{n} nfA 随 n n n 增大逼近真实概率 p p p。
- 机器学习实例:二分类问题中的准确率评估通常需要足够多的测试样本才有统计意义。
7.2 神经网络中的Dropout技术
Dropout是一种防止过拟合的正则化技术,其工作原理可以从大数定律角度理解:通过随机关闭部分神经元,相当于训练了多个不同网络结构的模型,最终结果近似于这些模型的集成,提高了泛化能力。
7.3 保险损失预测与风险评估
- 系统由 100 个独立部件组成,每个损坏概率 0.1,通过大数定律计算系统正常工作的概率(至少 85 个正常)。
- 应用中心极限定理(正态近似)得 P ( 正常部件 ≥ 85 ) P(\text{正常部件} \geq 85) P(正常部件≥85) 的具体值。
- 机器学习扩展:异常检测、风险评估模型同样基于类似概率原理构建。
🎯 八、总结与展望
大数定律作为概率论与统计学的基本定理,为机器学习的众多理论与方法奠定了坚实基础:
- 它解释了为什么机器学习算法能够工作:大样本下的统计推断具有可靠性
- 它指导了如何改进机器学习模型:增加训练样本、采用集成方法、调整批量大小等
- 它揭示了模型训练的局限性:数据质量与代表性的重要性
在实际应用中,理解大数定律的本质,能够帮助我们设计更加健壮的机器学习系统,避免常见陷阱,并对模型性能和可靠性有更为深刻的洞察。
相关文章:

大数定律详解
前言 本文隶属于专栏《机器学习数学通关指南》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见《机器学习数学通关指南》 正文 🌟 一、大数定律的…...
2025生物科技革命:AI驱动的基因编辑与合成生物学新纪元
一、基因编辑技术的精准化突破 第三代基因编辑工具CRISPR-Cas12f的研发成功,将编辑精度提升至0.1碱基对级别。中国科学院团队利用该技术在灵长类动物模型中修复遗传性视网膜病变基因,治愈率达到92%。对比传统CRISPR-Cas9技术,新型编辑器脱靶…...

百度SEO关键词布局从堆砌到场景化的转型指南
百度SEO关键词布局:从“堆砌”到“场景化”的转型指南 引言 在搜索引擎优化(SEO)领域,关键词布局一直是核心策略之一。然而,随着搜索引擎算法的不断升级和用户需求的多样化,传统的“关键词堆砌”策略已经…...
macOS常用网络管理配置命令
目录 **1. ifconfig:查看和配置网络接口****2. networksetup:管理系统网络配置****3. ping:测试网络连通性****4. traceroute:跟踪数据包路径****5. nslookup/dig:DNS 查询****6. netstat:查看网络连接和统…...
Selenium 中 ActionChains 支持的鼠标和键盘操作设置及最佳实践
Selenium 中 ActionChains 支持的鼠标和键盘操作设置及最佳实践 一、引言 在使用 Selenium 进行自动化测试时,ActionChains 类提供了强大的功能,用于模拟鼠标和键盘的各种操作。通过 ActionChains,可以实现复杂的用户交互,如鼠标…...

【五.LangChain技术与应用】【31.LangChain ReAct Agent:反应式智能代理的实现】
一、ReAct Agent是啥?为什么说它比「普通AI」聪明? 想象一下,你让ChatGPT查快递物流,它可能直接编个假单号糊弄你。但换成ReAct Agent,它会先推理(Reasoning)需要调用哪个接口,再行动(Action)查询真实数据——这就是ReAct的核心:让AI学会「动脑子」再动手。 举个真…...

【HarmonyOS Next之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(七) -> JS动画(二)
目录 1 -> 动画动效 1.1 -> 创建动画对象 1.2 -> 添加动画事件和调用接口 2 -> 动画帧 2.1 -> 请求动画帧 2.2 -> 取消动画帧 1 -> 动画动效 通过设置插值器来实现动画效果。 说明 从API Version 6 开始支持。 1.1 -> 创建动画对象 通过cre…...
SpaCy处理NLP的详细工作原理及工作原理框图
spaCy处理NLP的详细工作原理及工作原理框图 spaCy处理NLP的详细工作原理 spaCy是一个基于Python的开源自然语言处理(NLP)库,它提供了一系列高效且易用的工具,用于执行各种NLP任务,如文本预处理、文本解析、命名实体识…...

Mysql中的常用函数
1、datediff(date1,date2) date1减去date2,返回两个日期之间的天数。 SELECT DATEDIFF(2008-11-30,2008-11-29) AS DiffDate -- 返回1 SELECT DATEDIFF(2008-11-29,2008-11-30) AS DiffDate -- 返回-1 2、char_length(s) 返回字符串 s 的字符数 3、round(x,d)…...
Linux下find命令的使用方法详解
文章目录 **一、基本语法****二、常用搜索条件****1. 按名称搜索****2. 按类型搜索****3. 按时间搜索****4. 按大小搜索****5. 按权限/所有者搜索** **三、组合条件(逻辑运算符)****四、执行操作****1. 直接输出(默认)****2. 删除…...
Day(19)--IO流(三)
文件加密 ps:^异或: 两边相同就是false 两边不同就是true 如果比较的是数字,那就会把它转换成为二进制,从右自左依次比较 总结:如果一个数字被异或两次,结果还是原来的数字 缓冲流 字节缓冲流 BufferedInputStream------字节缓冲输入流 BufferedOutputStream----字节…...
数据类型——long long
在C语言中,long long 类型是一种有符号的64位整数,其取值范围由二进制补码表示法决定。以下是具体数值及解释: 1. long long 的最大值 最大值(正数):9223372036854775807 计算方式:2^63 - 1 这是…...

网络安全通信架构图
🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 在安全通信里面我经常听到的2个东西就是SSL和TLS,这2个有什么区别呢?以及HTTPS是怎么通信的?包括对称加密、非对称加密、摘要、…...

AMD(xilinx) FPGA书籍推荐
理论到实践,五年磨一剑 以应用为主,书中全部例程均来自工程实践;目的在于培养FPGA工程师良好的代码编写习惯,掌握vivado常用高级技巧。本书详细讲解了: (0)vivado操作基础从工程建立到bit/mcs文…...

考前冲刺,消防设施操作员考试最后一击
考前冲刺,消防设施操作员考试最后一击 考前冲刺阶段至关重要。首先要回归教材,快速浏览重点知识点,强化记忆。同时,对之前做过的错题进行集中复习,分析错误原因,避免在考试中再次犯错。进行全真模拟考试&a…...

【GoTeams】-3:构建api、重构错误码
本文目录 1. 构建api梳理调用关系api包的作用路由梳理注册Register代码语法 2. 重构错误码 1. 构建api 首先复制project-user,改名为project-api,放在总的路径下,然后在工作区中进行导入。 运行命令go work use .\project-api\新建工作区之…...

MuBlE:为机器人操作任务规划提供了逼真的视觉观察和精确的物理建模
2025-03-05,由华为诺亚方舟实验室、捷克技术大学和帝国理工学院联合开发的MuBlE(MuJoCo and Blender simulation Environment)模拟环境和基准测试。通过结合MuJoCo物理引擎和Blender高质量渲染,为机器人操作任务规划提供了逼真的视…...
基于STC89C52的4x4矩阵键盘对应键值显示测试
引言 在众多单片机应用系统中,用户输入功能至关重要。4x4 矩阵键盘因其布局紧凑、按键数量适中,能有效节省 I/O 口资源,成为常用的输入设备。STC89C52 作为一款经典的 8 位单片机,以其丰富的外设资源和简易的开发流程,为矩阵键盘的应用提供了良好平台。同时,LCD1602 作为…...
android13打基础: timepicker控件
public class Ch4_TimePickerActivity extends AppCompatActivity implements TimePickerDialog.OnTimeSetListener {private TextView tv_time; // 声明一个文本视图对象private TimePicker tp_time; // 声明一个时间选择器对象Overrideprotected void onCreate(Nullable Bund…...
【虚拟仿真】Unity3D中实现激光/射线的发射/折射/反射的效果(3D版)
推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享QQ群:398291828小红书小破站大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。...

利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...

使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...

【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...