【机器学习前置知识】Beta分布

news2024/11/24 2:47:57

Beta分布与二项分布的关系

Beta分布与二项分布密切相关,由二项分布扩展而来,它是用来描述一个连续型随机变量出现的概率的概率密度分布,表示为 X X X~ B e t a ( a , b ) Beta(a,b) Beta(a,b) a 、 b a、b ab 是形状参数。Beta分布本质上也是一个概率密度函数,只是这个函数的自变量和因变量都表示某种概率。

下面我们会先温故下二项分布的知识,然后循序渐进地引出Beta分布。

在二项分布这篇文章里介绍过,二项分布能解决的是 n次独立伯努利试验中成功k次的概率 问题,记作 X X X~ B i n ( n , p ) Bin(n,p) Bin(n,p)

仍以抛硬币为例,二项分布求的是抛 n n n 次硬币中出现 k k k 次正面向上的概率,它是一个概率质量函数(对离散型随机变量叫概率质量函数、对连续性随机变量叫概率密度函数),这个函数的自变量是 k k k ,因变量是概率,前提是硬币出现正面向上的概率 p p p (质地均匀)和抛的次数 n n n 是已知的。

假设一枚硬币质地均匀,也就是说抛一次硬币,出现正面向上和反面向上的概率 p p p 都为0.5,然后抛10次,下图是正面向上出现0次到10次的概率图:


在这里插入图片描述


附绘图代码

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import binom
#plt.rcParams['font.family']=['Arial Unicode MS']

n = 10  #试验次数
p = 0.5  #正面向上的概率

#生成x轴的数据点
x = np.arange(0, n + 1, 0.001)

#二项分布的概率质量函数(PMF)和累积分布函数(CDF)
pmf = binom.pmf(x, n, p)
#cdf = binom.cdf(x, n, p)

plt.figure(figsize=(10, 5))
plt.subplot(121)
plt.plot(x, pmf, 'b-', lw=2, label='PMF')
plt.vlines(x, 0, pmf, colors='b', lw=1, alpha=0.5)
plt.xlabel('正面向上次数')
plt.ylabel('概率')
plt.title('二项分布-抛硬币10次')
plt.legend()
plt.show()

正常来说,我们可以提前就预料到结果中出现5次正面向上的概率最大,实际上也雀食如此。但这是对质地均匀的硬币来说的,如果是一枚质地不均匀的硬币,我们还能这么信誓旦旦地判断吗?

再假设我们拿到了一枚不知道是否质地均匀的硬币,然后想求抛一次硬币正面向上的概率。这个问题如何解决呢?

一个粗糙的解决方案是: 我尽可能地多抛硬币,然后看所有结果中正面向上出现的概率是多少,这个概率就是抛一次硬币正面向上的概率的逼近。比如我茶不思饭不想地连续抛了10000次硬币,其中出现正面向上的有3000次,现在我可以自信地说再抛一次硬币正面向上的概率 大概 就是0.3。注意我这里用了大概两个字,也就是说0.3这个概率只是抛一次硬币中正面向上出现的所有概率中最大的一个概率,那有没有可能是0.4、0.5甚至0.9呢?是有可能的,只是这些概率出现的概率都相对0.3 更低 罢了。

再试想一下,我只抛了100次,其中出现正面向上的有30次,那我判断再抛一次硬币正面向上的概率是0.3的 把握 是不是会比10000次出现3000次 更低 呢?

用图展示一下抛一次质地未知硬币出现正面向上的概率的概率(先验知识是已知抛了n次中出现正面向上的有a次):


在这里插入图片描述


附绘图代码

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import beta
#plt.rcParams['font.family']=['Arial Unicode MS']

a1 = 3000  # 抛一万次硬币中正面向上的次数
b1 = 7000  # 抛一万次硬币中反面向上的次数
a2 = 30  # 抛一百次硬币中正面向上的次数
b2 = 70  # 抛一百次硬币中反面向上的次数

x = np.linspace(0.0, 1.0, 1000)

# 计算Beta分布的概率密度函数值
y1 = beta.pdf(x, a1, b1)
y2 = beta.pdf(x, a2, b2)

plt.plot(x, y1, label='Beta(a={}, b={})'.format(a1, b1))
plt.plot(x, y2, label='Beta(a={}, b={})'.format(a2, b2))
plt.xlabel('正面向上的概率')
plt.ylabel('概率密度')
plt.title('抛一次质地未知硬币出现正面向上的概率的概率')
plt.legend()
plt.show()

这个图像表示了抛一次质地未知硬币出现正面向上的概率的概率分布,其中图像的形状随参数a和b的不同而变化。从图中可以看出:

  • 基于抛10000次硬币中出现正面向上3000次的是蓝色曲线,其在横坐标上正面向上的概率为0.3处取得最大值,即再抛一次硬币出现正面向上的概率是0.3的结果最为确信;
  • 基于抛100次硬币中出现正面向上30次的是橙色曲线,其也在横坐标上正面向上的概率为0.3处取得最大值,即再抛一次硬币出现正面向上的概率是0.3的结果最为确信,但与蓝色曲线对比可以看出,明显橙色曲线对此判断的把握要比蓝色曲线小得多;

那么如何去量化上面提到的 更低把握 ?此时就该Beta分布登场了!

细心的小伙伴可以看出上图就是用Beta函数画出来的图像。

文章开头说过Beta分布的表示为 X X X~ B e t a ( a , b ) Beta(a,b) Beta(a,b) ,其中 a 、 b a、b ab 是形状参数,可以控制图像的形状。对应到抛硬币场景中,

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

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

相关文章

水库大坝安全监测设计与施工经验

随着我国的科技水平不断上升,带动了我国的水电建设向更高层次发展。目前,我国的水电站大坝已有上百座,并且大坝安全检测仪器质量与先进技术不断更新发展,如今水电站大坝数据信息采集与观测资料分析,能够有效提高水库大…

outlook邮箱群发邮件方法?邮箱如何群发?

outlook邮箱群发邮件如何使用?QQ邮箱设置群发的步骤? Outlook邮箱群发邮件:必要性 Outlook邮箱作为全球广泛使用的邮件服务之一,不仅提供了便捷的邮件收发功能,还支持多种附件、日历提醒及强大的联系人管理。Outlook…

NVMe over Fabrics:概念、应用和实现

对于大部分人来说,NVMe over Fabrics(简称NVMf)还是个新东西,因为其第一个正式版本的协议在今年6月份才发布。但是这并不影响人们对NVMf的关注,因为这项依托于NVMe的技术很可能继续改变存储市场格局。 NVMf的贡献在于…

CENTOS docker拉取私服镜像

概述 docker的应用越来越多,安装部署越来越方便,批量自动化的镜像生成和发布都需要docker镜像的拉取。 centos6版本太老,docker的使用过程中问题较多,centos7相对简单容易。 本文档主要介绍centos系统安装docker和拉取docker私…

【HBuilder + IDEA + XFtp + XShell】打包部署上线

简述 前后端分离:需要将前后端的程序包打包发送至应用Linux服务器上Linux服务器 (1)需要启用SSHD服务,该服务会监听22号端口(一般是开启的) (2)搭建:MYSQL、Nginx、jdk、…

VS2013中特殊操作

代码段管理器(查看代码补全快捷方式) 1.点击 工具 ->点击 代码片段管理器->看到 语言->选择 Visual C 2.可以点击下方添加 自定义一个属于自己的快捷代码补全方式 3.结果图: 设置自动换行与行号 1.点击 工具->点击 选项->找到 文本编辑器(然后点击)…

Uniapp软件库全新带勋章功能(包含前后端源码)

源码介绍: Uniapp开发的软件库全新带勋章功能,搭建好后台 在前端找到 util 这个文件 把两个js文件上面的填上自己的域名,电脑需要下载:HBuilderX 登录账号 没有账号就注册账号, 然后上传文件,打包选择 “…

显示器与按键(LCD 1602 + button)

一、实验目的: (1)学习lcd 1602的编程与使用、 (2)机械式复位开关button软件消抖的方法。 二、实验内容: 1、必做:先显示开机画面,:在1602显示器上,分两行…

mfc100u.dll文件丢失了要怎么解决?修复mfc100u.dll详细指南

mfc100u.dll文件丢失了要怎么解决?首先让我们扒一扒什么是 mfc100u.dll。这玩意儿是 Microsoft Visual Studio 2010 的一部分,它就像一款程序生活中不可或缺的零件,没了它,程序肯定跑不起来。想想看,没有一个重要的零件&#xff…

手机怎么下载python并安装,如何在手机上下载python

大家好,小编来为大家解答以下问题,如何在手机上下载python 3.7版本,手机怎么下载python并安装,现在让我们一起来看看吧! 如何在手机上下载python 应用市场内搜索下载下载Python在您开始之前,在你的计算机将…

github鉴权失败

问题: 如上图所示 git push 时发生了报错,鉴权失败; 解决方案 Settings->Developer settings->Personal access tokens->Generate new token。创建新的访问密钥,勾选repo栏,选择有效期,为密钥命…

nodejs微信小程序+python+PHP的艺术展览馆艺术品管理系统-计算机毕业设计推荐

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性:…

大数据技术发展史

今天我们常说的大数据技术,其实起源于Google在2004年前后发表的三篇论文,也就是我们经常听到的“三驾马车”,分别是分布式文件系统GFS、大数据分布式计算框架MapReduce和NoSQL数据库系统BigTable。 你知道,搜索引擎主要就做两件事…

k8s之kudeadm

kubeadm来快速的搭建一个k8s的集群: 二进制搭建适合大集群,50台以上主机 kubeadm更适合中小企业的业务集群 master:192.168.233.91 docker kubelet lubeadm kubectl flannel node1:192.168.233.92 docker kubelet lubeadm kubectl flannel…

Python中使用SQLite数据库的方法2-2

3.3.2 创建表单及字段 通过“3.2 创建Cursor类的对象”中创建的Cursor类的对象cur创建表单及字段,代码如图5所示。 图5 创建表单及字段 从图5中可以看出,通过Cursor类的对象cur调用了Cursor类的execute()方法来执行SQL语句。该方法的参数即为要指定的S…

代码随想录刷题笔记(DAY3)

今日总结:虽然之前刷过链表,但这次做的是有些费力的,也有了更深的理解。整理完今天的 Vue 笔记就睡。。。 DAY 3 01. 移除链表元素(No. 203) 题目链接:https://leetcode.cn/problems/remove-linked-list-…

UE4开发BIM程序 的 流程

某机构BIM设计研究中心主任马晓龙,他对编程颇有研究。今天他会用通俗易懂的语言来讲解基于游戏引擎UE4的BIM技术可视化应用。对于想要自己开发程序的设计师一定要读一下! 1)关于UE4——UE4是什么? 可以简单的理解为,一…

NXP MC17XS6500高边驱动芯片功能的介绍

简介 本文主要介绍了高边驱动芯片MC17XS6500 的功能、特性。世平集团基于 FlagChips FC7300 HV BMS 方案,高边驱动芯片MC17XS6500 被用于驱动继电器的断开和闭合。在本文中介绍了 MC17XS6500 在正常模式和故障模式下,是如何控制 OUT 的输出。 1、功能…

【软件测试】为bug而生

为什么定位问题如此重要? 可以明确一个问题是不是真的“bug” 很多时候,我们找到了问题的原因,结果发现这根本不是bug。原因明确,误报就会降低多个系统交互,可以明确指出是哪个系统的缺陷,防止“踢皮球”&…

彻底理解前端安全面试题(1)—— XSS 攻击,3种XSS攻击详解,建议收藏(含源码)

前言 前端关于网络安全看似高深莫测,其实来来回回就那么点东西,我总结一下就是 3 1 4,3个用字母描述的【分别是 XSS、CSRF、CORS】 一个中间人攻击。当然 CORS 同源策略是为了防止攻击的安全策略,其他的都是网络攻击。除了这…