ML 系列:第 21 节 — 离散概率分布(二项分布)

一、说明

        二项分布描述了在固定数量的独立伯努利试验中一定数量的成功的概率,其中每个试验只有两种可能的结果(通常标记为成功和失败)。

二、探讨伯努利模型

        例如,假设您正在抛一枚公平的硬币 (其中正面成功,反面失败) 五次。每次翻转都是一次独立的伯努利试验,成功概率(正面朝上)为 0.5。现在,您有兴趣找到从 5 次翻转中正好获得 3 次正面的概率。此方案适合二项分布,因为您有固定数量的试验(五次翻转),并且每个试验只有两种可能的结果(正面或反面),因此它们成为独立的伯努利试验。

        总而言之,伯努利是:

  • 描述固定数量的独立伯努利试验的成功次数。
  • 由两个参数定义:试验次数 n 和成功概率 p

二项式分布的概率质量函数 (PMF) 由以下公式给出:

此处里:

现在,让我们分解公式:

三、二项式分布的期望值和方差

        期望,通常称为均值或平均值,表示随机变量在重复实验中的理论平均结果。在二项分布的上下文中,期望 E[X] 表示在给定数量的试验中预期的平均成功次数。二项分布的期望公式为:

        其中 n 是试验数,p 是单次试验成功的概率。

        假设您抛硬币 10 次。每次抛硬币都是一个独立的伯努利试验,其中正面朝上(成功)的概率为 = 0.5,反面(失败)的概率相同 q = 1−p = 0.5

        现在,让我们使用公式 E[X] = np 计算预期的正面 E[X] 数量:

这个结果告诉我们,平均而言,我们期望在 10 次抛硬币中得到 5 次正面。

另一方面,方差衡量分布围绕其平均值的散布或离散度。在二项分布中,方差 Var[X] 量化了实际结果与预期成功数的偏差程度。二项分布方差的公式为:

        该公式反映了这样一个事实,即二项式分布中结果的分布受试验数 n 和成功概率 p 的影响。较高的试验次数或接近 0.5 的成功概率往往会导致较大的方差,这表明成功次数的变异性更大。

四、示例:计算机失败的概率

        假设一家工厂有一台机器在任何一天都有 5% 的几率出现故障。我们想要找到机器在 30 天内恰好失败 3 次的概率。在这里,每天代表一个独立的伯努利试验,有两种可能的结果:机器失败(成功)或不失败(失败)。

        鉴于:

  • n=30(试验次数或天数)
  • p=0.05(机器在任何给定日期出现故障的概率)

        我们可以使用二项分布来查找 30 天内恰好失败 3 次的概率。二项分布的概率质量函数 (PMF) 由下式给出:

        将给定的值代入公式:

        这里:

        计算这些值:

因此:

PX=3) = 4060 × 0.000125 × 0.287 ≈ 0.145

因此,机器在 30 天内恰好失败 3 次的概率约为 0.145,即 14.5%。

五、用于轧制模具 100 次的二项式 PMF

        在这个例子中,我们探讨了将公平的六面骰子滚动 100 次的二项式概率质量函数 (PMF)。我们感兴趣的是确定在这 100 次掷骰子中掷出特定数字(例如,掷出“1”或“6”)一定次数的概率。由于骰子的每一面都有相等的概率为 1/6,因此特定数字出现的次数分布遵循二项式分布。

        二项分布由试验数 n 和成功概率 p 来表征。这里,n = 100 和 p = 1/6。该图显示了 k 获得 k 次成功(滚动特定数字)的概率,范围从 0 到 100

        为了进一步分析分布,我们在图上计算并显示预期的成功数 (期望) 和分布的可变性 (方差)。

import matplotlib.pyplot as plt
from scipy.stats import binom

# Number of trials (number of dice rolls)
n = 100

# Probability of success (rolling a specific number, e.g., 1 or 6)
p = 1 / 6

# Create a range of possible number of successes (0 to n)
k = range(n + 1)

# Calculate the PMF for each number of successes
pmf_values = [binom.pmf(x, n, p) for x in k]

# Calculate expectation and variance
expectation = n * p
variance = n * p * (1 - p)

# Plotting the PMF
plt.figure(figsize=(8, 5))
plt.bar(k, pmf_values, width=1.0, edgecolor='black')
plt.title('Binomial PMF for Rolling a Die 100 Times (Rolling a Specific Number)')
plt.xlabel('Number of Successes (Rolling a Specific Number)')
plt.ylabel('Probability')
plt.grid(True)

# Show expectation and variance on the plot
plt.axvline(expectation, color='r', linestyle='dashed', linewidth=2.5, label=f'Expectation (mean): {expectation:.2f}')
plt.axvline(expectation - variance**0.5, color='orange', linestyle='dashed', linewidth=2.5, label=f'Standard Deviation: {variance**0.5:.2f}')
plt.axvline(expectation + variance**0.5, color='orange', linestyle='dashed', linewidth=2.5)
plt.legend()
plt.show()

        这是上述代码的输出:

        期望值和方差计算:

  • 期望值(平均值):E[X] = np = 100 × 1/6 ≈ 33.33
  • 方差:Var[X] = np(1−p) = 100 × 1/6 × 5/6 ≈ 27.78 ≈ 27.78
  • 标准差:Var[X] ≈ 5.27

六、变化 (p) 对掷模二项分布的影响

        二项分布中的概率 p 表示每个试验中特定结果的可能性。当掷一个公平的骰子时,对于骰子的任何特定面,p 通常为 1/6。通过改变 p,我们可以探索如果骰子有偏差,分布如何变化。例如,如果加载骰子以将特定数字滚动到 0.3 的概率,则二项分布的形状和分布将发生变化,与公平骰子相比,在平均值附近显示更高的成功集中度。

        简单地说,我们可以更改上面的代码来计算和绘制不同 p 值的 PMF:

import matplotlib.pyplot as plt
from scipy.stats import binom

# Number of trials (number of dice rolls)
n = 100

# Define different probabilities of success
p_values = [1/6, 0.35]

# Create a range of possible number of successes (0 to n)
k = range(n + 1)

plt.figure(figsize=(8, 5))

for p in p_values:
    # Calculate the PMF for each number of successes
    pmf_values = [binom.pmf(x, n, p) for x in k]

    # Calculate expectation and variance
    expectation = n * p
    variance = n * p * (1 - p)

    # Plotting the PMF
    plt.plot(k, pmf_values, label=f'p = {p}')

    # Annotate the plot with expectation and variance
    plt.axvline(expectation, color='r', linestyle='dashed', linewidth=1)
    plt.axvline(expectation - variance**0.5, color='g', linestyle='dashed', linewidth=1)
    plt.axvline(expectation + variance**0.5, color='g', linestyle='dashed', linewidth=1)

plt.title('Binomial PMF for Rolling a Die 200 Times with Varying p')
plt.xlabel('Number of Successes (Rolling a Specific Number)')
plt.ylabel('Probability')
plt.legend()
plt.grid(True)
plt.show()

        这是上述代码的输出:

        变化 p:该脚本计算并绘制两个不同 p 值的 PMF:1/6(公平骰子)和 0.35(偏置骰子)。

        在机器学习系列的第 21 天,我们探索了二项分布,这是一种基本概率分布,用于对固定数量的独立伯努利试验的成功次数进行建模。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024开发者浏览器必备扩展,不允许还有人不知道~

在开发过程中,优秀的扩展工具能够极大提升我们的工作效率,简化工作流程,并使得在浏览器中的开发和调试变得更加便捷。 根据市场占比,Chrome、Safari、Edge、Firefox、Opera 是前五大浏览器,其中Chrome浏览器占据了领先…

安装paddle

网址:飞桨PaddlePaddle-源于产业实践的开源深度学习平台 或者找对应python和cuda版本的paddle下载后安装: https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html 你想要安装paddlepaddle - gpu2.6.1.post112版本。在你提供的文件列表中&am…

(六)Spark大数据开发实战:豆瓣电影数据处理与分析(scala版)

目录 一、Spark 二、数据介绍 三、Spark大数据开发实战(Scala) 1、数据文件上传HDFS 2、导入模块及数据 3、数据统计与分析 ①、计算演员参演电影数 ②、依次罗列电影番位前十的演员 ③、按照番位计算演员参演电影数 ④、求每位演员所有参演电影中的最早、最晚上映…

‘nodemon‘ 不是内部或外部命令,也不是可运行的程序

解决方法:使用 npx 临时运行 nodemon 如果你不想全局安装 nodemon,你可以使用 npx(npm 5.2 及以上版本自带)来临时运行 nodemon: npx nodemon server.jsnodemon正常配置 要在开发过程中实现每次修改 Node.js 代码后…

Docker 的安装与使用

Docker 的安装 Docker 是一个开源的商业产品,有两个版本:社区版(Community Edition,缩写为 CE)和企业版(Enterprise Edition,缩写为 EE)。 Docker CE 的安装请参考官方文档&#xf…

单相锁相环,原理与Matlab实现

单相锁相环基本原理 单相锁相环的基本原理图如下所示, u α u_\alpha uα​ u β u_\beta uβ​经Park变换、PI控制实现对角频率 ω \omega ω和角度 θ \theta θ的估算。不同锁相环方案之间的差异,主要表现在正交电压 u β u_\beta uβ​的生成&#x…

LLMs之PDF:zeroX(一款PDF到Markdown 的视觉模型转换工具)的简介、安装和使用方法、案例应用之详细攻略

LLMs之PDF:zeroX(一款PDF到Markdown 的视觉模型转换工具)的简介、安装和使用方法、案例应用之详细攻略 目录 zeroX的简介 1、支持的文件类型 zeroX的安装和使用方法 T1、Node.js 版本: 安装 使用方法 使用文件 URL: 使用本地路径&…

Redis集群模式之Redis Sentinel vs. Redis Cluster

在分布式系统环境中,Redis以其高性能、低延迟和丰富的数据结构而广受青睐。随着数据量的增长和访问需求的增加,单一Redis实例往往难以满足高可用性和扩展性的要求。为此,Redis提供了两种主要的集群模式:Redis Sentinel和Redis Clu…

OPENCV手把手入门 多图![more cpp--9]

你说安装?楼主使用的是VCPKG,也是遇到不少问题,不过最后还是解决了。大家有需要我抽时间写一篇如何使用VCPKG和VS安装OPENCV出来 最近楼主在做视觉识别方面的工作,这个就当笔记了吧(一年前做过这方面的工作&#xff0c…

AI写作(二)NLP:开启自然语言处理的奇妙之旅(2/10)

一、NLP 的基本概念与任务 (一)自然语言处理的研究对象 自然语言处理(NLP)处于计算机科学、人工智能和语言学的交叉领域。它所聚焦的人类社会语言信息是无比丰富和复杂的,包括口语、书面语等各种形式。这种语言信息在…

pgsql 版本升级和数据迁移(编译版)

最近给pgsql从16.0升级到16.4,有挺多细节 1.关闭pgsql 为了保证数据一致性和过渡平稳,还是需要暂停pgsql。 systemctl stop pgsql2.备份现有数据 需要切换到pgsql的用户,通常用root是不行的 pg_dumpall > /xxx/xxx/backup.sql3.重命名…

ArcGIS地理空间平台 manager 任意文件读取漏洞复现

0x01 产品描述: ‌ ArcGIS‌是一个综合的地理空间平台,由Esri开发,旨在为专业人士和组织提供全面的地理信息系统(GIS)功能。ArcGIS通过集成和连接地理环境中的数据,支持创建、管理、分析、映射和共享…

自定义springCloudLoadbalancer简述

概述 目前后端用的基本都是springCloud体系; 平时在dev环境开发时,会把自己的本地服务也注册上去,但是这样的话,在客户端调用时请求可能会打到自己本地,对客户端测试不太友好. 思路大致就是前端在请求头传入指定ip&a…

华为数通HCIA系列第5次考试-【2024-46周-周一】

文章目录 1、子网掩码有什么作用,和IP地址是什么关系,利用子网掩码可以获取哪些信息?2、已知一个IP地址是192.168.1.1,子网掩码是255.255.255.0,求其网络地址3、已知某主机的IP地址是192.168.100.200,子网掩…

[AGC016D] XOR Replace 题解

[AGC016D] XOR Replace 来自 qzmoot 同一机房的同学的题解。 模拟赛用不同的思路场切了。 题面大意:一个序列,一次操作可以将某个位置变成整个序列的异或和。 问最少几步到达目标序列。 来自梦熊的题面: 有一个长度为 n n n 的序列 a …

ubuntu 24.04运行chattts时cuda安装错误原因分析

使用ubuntu 24.04,按照2noise/ChatTTS官方流程安装依赖时报错。ChatTTShttps://github.com/2noise/ChatTTS 这是因为cuda版本不对,ChatTTS目前的版本,要求支持cuda 12.4及以上,但是如果nvidia显卡驱动版本较老,无法支…

力扣-Hot100-技巧【算法学习day.31】

前言 ###我做这类文档一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴&am…

Spark的容错机制

1,Spark如何保障数据的安全 1、RDD容错机制:persist持久化机制 1)cache算子 - 功能:将RDD缓存在内存中 - 语法:cache() - 本质:底层调用的还是persist(StorageLevel.MEMORY_ONLY)&…

【漏洞分析】Fastjson最新版本RCE漏洞

01漏洞编号 CVE-2022-25845CNVD-2022-40233CNNVD-202206-1037二、Fastjson知多少 万恶之源AutoType Fastjson的主要功能是将Java Bean序列化为JSON字符串,这样得到的字符串就可以通过数据库等方式进行持久化了。 但是,Fastjson在序列化及反序列化的过…

推荐一款电脑清理和加速工具:Wise Care 365 Pro

Wise Care 365 Pro是一款可以清理注册表和磁盘垃圾文件,保护个人隐私记录,提高电脑使用安全的软件,是优化系统、提高Windows系统运行速度最好的选择!实时保护注册表不被其他程序未经许可地秘密修改。例如阻止程序更改您的浏览器主页&#xff…