贝塔分布(beta分布)及Python实现——计算机视觉修炼之路(二)
beta分布
贝塔分布( Beta Distribution ) 是一个作为伯努利分布和二项式分布的共轭先验分布的密度函数,在机器学习和数理统计学中有重要应用。在概率论中,贝塔分布,是指一组定义在(0,1)区间的连续概率分布。其概率密度函数为:
beta 分布的期望为:
下面我们通过一个问题来具体的分析 beta 分布的使用。假设一个概率实验只有两种结果,一个是成功,概率是X;另一个是失败,概率为(1−X)。其中,X的值我们是不知道的,但是它所有可能的情况也是等概率的。如果我们对X的不确定性用一种方式描述,那么,可以认为X是个来自于[0,1]区间的均匀分布的样本。
这是很合理的,因为X只可能是[0,1]之间的某个值。同时,我们对X也一无所知,认为它是[0,1]之间任何一个可能的值。这些都与[0,1]均匀分布的性质契合。
现在,假设我们做了n次独立重复的实验,我们观察到k次成功,n−k次失败。这时候我们就可以使用这些实验结果来修订之前的假设了。换句话说,我们就要计算X的条件概率,其条件是我们观察到的成功次数和失败次数。这里计算的结果就是 beta 分布了。
在这里,在总共n次实验,k次成功的条件下,X的条件概率是一个 beta 分布,其参数是k+1和n−k+1。
示例:beta分布用于评价旧货商服务质量
假设亚马逊上有三家旧货商,其评价结果分别如下:
商家一:85193个评论,94%的正向
商家二:20785个评论,98%的正向
商家三:840个评论,99%的正向
那么这三个商家中,哪一家的服务质量最好呢?假设我们对三家旧货商的信息一无所知,那么这些参数的先验可以认为是一个均匀分布,也可以等同于 beta(1,1) 。根据之前的知识,我们知道,最终这三家旧货商的服务质量应当服从三个不同参数的 beta 分布,即 beta(80082,5113)、beta(20370,417)和beta(833,9)。
注意,当 beta 分布的参数很大的时候,我们可以使用相同均值和方差的正态分布代替这个 beta 分布。
因此,最终这三家供货商,商家3的服务质量的标准差是0.003,是最大的。其他两家的标准差比这个还小。因此,我们可以认为这三家供货商的服务质量都高度聚焦于他们的均值。因此,从第一个或第二个分布中抽取的样本不太可能比第三个样本的值高。也就是说前两个服务商不太可能质量比第三个高。
scipy 的 beta 分布计算
Python 的scipy
中含有 beta 分布函数。下面给出该函数的用法: beta.pdf(x,a,b)
其中x
是给定的取值范围,a
为α值,b
为β值。它的返回值就是指定输入的概率值。
例如,在旧货商的正向评论率问题中,我们使用 scipy 的 beta
函数就可以得到三家供货商的服务质量函数。在本问题中,x∈[0,1]表示正向评论率,三个旧货商的 beta
函数为beta.pdf(x,80082,5113),beta.pdf(x,20370,417),beta.pdf(x,833,9)
。 使用 beta
函数后得到的值就是正向评论率的概率。
编程示例
我们现在考虑这么个问题:
问题1. 在一个收费站,收费站一段时间(比如每隔1小时)会经过一些车(n辆)。假设经过的车只分两种,大车和小车。我们希望通过观察收费站一长段时间的车辆经过情况,估计小车占所有车的比例 p 。
首先我们使用这样的策略:每隔一个小时统计一次,那么在每个小时内,小车的数量应该服从(n,p)二项分布。但是有个问题,就是每个小时的 n (车辆总数)是不同的, p 也不同,那么十个小时的观测到的小车数目,就是十个不同的二项分布的期望,所以不好假设是二项分布了。
估计小车的比例 p 显然仅能出现于0到1之间。任何时刻的小车的比例具有随机性,这些提示我们一段时间的小车比例的分布可能符合贝塔分布。
记每小时的小车数为α ,大车数β,则小车的比例为。而这个比例就服从B(α,β)。也就是说,计算每小时观测到的小车比例,可以认为小车车流量服从 beta 分布,并进行求解。因此,小车的占比p的可能性为
0 ~ 1
,作为beta分布的输入x
,α 和β为函数的参数。
from scipy.stats import beta
import numpy as npa = input() #贝塔分布的alpha值
b = input() #贝塔分布的beta值
a = float(a)
b = float(b)
x=np.arange(0.1,1,0.1) #给定的输入数据
print(beta.pdf(x,a,b))
测试输入:
0.5
0.5
预期输出:
[1.06103295 0.79577472 0.69460912 0.64974733 0.63661977 0.649747330.69460912 0.79577472 1.06103295]
贝塔分布(beta分布)及Python实现——计算机视觉修炼之路(二)相关推荐
- 正态分布(高斯分布)及Python实现——计算机视觉修炼之路(三)
正态分布 正态分布(Normal distribution)正态分布又称高斯分布,是一种很重要的连续型分布,应用甚广.在医学卫生领域中有许多变量的频数分布资料可绘制成直方图而且频数分布是中间(靠近均数 ...
- 概率及常用概率分布的实现——计算机视觉修炼之路(零)
引言 计算机视觉是一门用计算机模拟生物视觉的学科.该学科让计算机代替人眼实现对目标的识别.分类.跟踪和场景理解. 计算机视觉是人工智能的重要分支,也是一门具有很强综合性的学科,涉及计算机科学与工程.信 ...
- 一个python开发者的修炼之路
在微信上有童鞋问我python开发者的入门标准是神马?这个问题难到我了,而且贸然给一个答案出来的话,必定会有万千高手来喷. 凡人修仙,仙人修道,道人修真.当我们还是一个在青石板上蹲马步汗水涔涔的废柴时 ...
- Python的自我修炼之路(一)
在13年的时候曾经接触过Python,当时需要利用爬虫去获取一些网页数据,所以用了半周的时间做了一个自适应(适应自我需求,不是自动适应环境,哈哈)的爬虫.后面由于一些原因转向了R的编程.最近接触大数据 ...
- python 概率分布_python实现beta分布概率密度函数的方法
如下所示: beta分布的最大特点是其多样性, 从下图可以看出, beta分布具有各种形态, 有U形, 类似正态分布的形状, 类似uniform分布的形状等, 正式这一特质使beta分布在共轭先验的计 ...
- Beta分布 原理理解及python 绘图
最近用到了β分布,需要理解一下β分布的原理 1.Beta分布 参考:直观理解β分布 2.python 绘图 画图工具源码:https://github.com/technojoe9982/Beta-D ...
- 机器学习中的数学——常用概率分布(十):贝塔分布(Beta分布)
分类目录:<机器学习中的数学>总目录 相关文章: · 常用概率分布(一):伯努利分布(Bernoulli分布) · 常用概率分布(二):范畴分布(Multinoulli分布) · 常用概率 ...
- 【LDA学习系列】Beta分布Python代码
代码: # -*- coding: utf-8 -*- ''' Created on 2018年5月15日 @author: user @attention: beta distribution '' ...
- 如何通俗理解 beta分布、汤普森采样和狄利克雷分布
如果想理解汤普森采样算法,就必须先熟悉了解贝塔分布. 一次伯努利实验(比如扔硬币,二元变量)叫做伯努利分布(Bernoulli distribution).多次伯努利实验叫做二项式分布(Binomia ...
最新文章
- 在Excel中制作复合饼图
- android 之Activity的五种传值方式 (在从当前Activity跳转到目标Activity时的传值方式)
- 太赞了!用200道题彻底搞定Python数据处理!
- POJ - 2115 C Looooops(扩展欧几里得)
- DotNet Core 介绍
- ArcGIS将CAD等高线转换为TIN/DEM数据
- [poj1742]coin
- 使用python下载文件_利用python web框架做文件流下载
- Makefile .PHONY用法
- 对一个前端使用AngularJS后端使用ASP.NET Web API项目的理解(3)
- 53Java模拟器,515最好的java模拟器
- @RequestParam使用
- 多线程经典问题1——主线程子线程交替问题
- Transformer详解
- TensorFlow RunTime(TFRT) 小试
- 可编辑表格TableCell
- php mysql echarts动态生成图表
- 计算机技术流浪地球,科幻圈观察:《流浪地球》原著作者刘慈欣:计算机技术是个坑!...
- 微信服务商和渠道商区别
- linux查看cpu主频