贝叶斯景象

一、理论篇

总所周知,概率界分为两大学派,一是频率派,二是贝叶斯派。如果用一句话来陈述它们的核心区别,我倾向于这样讲,“频率派:概率是事件在长时间内发生的频率;贝叶斯派:概率可以解释为我们对一件事情发生的相信程度(信心)。”,通俗来讲,前者需大量的事件,看发生的次数,后者针对某一件事,我们对它发不发生有多大的信心。

这周在学习贝叶斯,正好还看了点吴军的《数学之美》,前几章大多涉及到贝叶斯、马尔科夫链在翻译、语音识别等方向的应用,深入浅出,看得真是不亦乐乎。

话不多说,上公式:

贝叶斯公式

这就是大名鼎鼎的贝叶斯公式。

P(A):什么都不知道,发生A的概率。通常称为先验概率。

P(A|X):在已知X发生的前提下,发生A的概率。我们已经有了X的证据了,再来推断A发生的概率,通常称为后验概率。

有什么用呢?

先验和后验,可以说就是贝叶斯的核心所在了。

举个例子吧,通常来讲,一个班级学生的成绩符合正态分布,这个“正态分布”就是先验:我什么数据、样本、证据都没有,我不清楚班上有多少人、不清楚哪怕其中一个人的成绩,得出的事件A。

正态分布有两个参数,平均数u和标准差std,我们知道一个班的成绩符合正态分布,但是是一个怎样的正态分布就不知道了。于是我们需要样本---各个学生的成绩,事件X,在有了X的情况下,我们获得的事件A才有意义。这个明确参数的“正态分布”就是后验:不仅知道它是正态分布,而且知道它是怎样的一个正态分布,得出事件P(A|X),在X的条件下A的情况。

这也符合我们日常的思考逻辑:在信息缺少的情况下,先估摸着得到一个模子,然后不断的从外界获取信息,打磨之前的模子,信息获得的越多越准,模子自然就越精美。

再举个生动点的例子,假如我们现在想对两个参数为lambda1,lambda2的泊松分布进行估计(记住:我们的目的是估计lambda),一开始我们什么都不知道,假设两种情况(两种先验):一、lambda符合均匀分布;二、lambda符合指数分布,下图图一(1)、图一(2)是先验概率的直观图,颜色越深代表概率越大(越有可能发生),显然平均分布在整个空间上每处的概率一致,处处颜色相等,指数分布在靠近0的位置颜色要深些。

上面是先验,搞定了。为弄后验,我们需要样本,就自己生成些样本罢:因为有两个参数lambda1,lambda2,要成两组样本,第一组样本A1由lambda1=1的泊松分布随机生成,第二组样本A2由lambda2=3的泊松分布随机生成。

有了A1,A2两组样本,我们就可以用他们来估计lambda1,lambda2了(事先我们是不知道A1,A2两组样本是符合lambda1=1,lambda2=3的泊松分布的,在这里为了模拟,用它来生成模拟数据A1,A2的)。

从直观图可以看出,当样本数N=1时,对原来的先验空间产生影响,估计值处在真实值lambda1=1,lambda2=3的很大一篇范围内,也就是说,一个样本不足以估计lambda。

图一,样本数N=1

N=5,可以看出,估计值在(1,3)这个真实值点的估计范围在缩小。

图二,样本数N=5

N=20,50就更小了,这个时候可以估计真实值大概在(1,3)附近

图三,样本数N=20
图四,样本数N=50

N=100,有了100组样本点,可以说基本就敢断定真实值就在(1,3)了


图五,样本数N=100

总结:

先验为均匀分布或指数分布,但参数不可知。可通过一系列的样本,来不断的估计参数值,得到后验。

二、应用篇

import scipy.stats as stats

import numpy as np

from IPython.core.pylabtools import figsize

from matplotlib import pyplot as plt

from matplotlib.pyplot import jet

plt.rcParams['font.sans-serif']=['SimHei']#解约matplotlib画图,中文乱码问题

N=100#样本数

#为产生模拟数据的参数

lambda_1_true = 1

lambda_2_true = 3

#产生poisson分布的两组样本,参数分别是lambda_1_true,lambda_2_true

data = np.concatenate([

stats.poisson.rvs(lambda_1_true,size=(N,1)),

stats.poisson.rvs(lambda_2_true,size=(N,1))

],axis=1)

# print (data)

x = y = np.linspace(.01,5,100)

#pmf:概率质量函数,代表某个点符合poisson的概率大小

likelihood_x =np.array([stats.poisson.pmf(data[:,0],_x)

for _x inx]).prod(axis=1)

likelihood_y =np.array([stats.poisson.pmf(data[:,1],_y)

for _y iny]).prod(axis=1)

L =np.dot(likelihood_x[:,None],likelihood_y[None,:])

# print(likelihood_x)

# print(likelihood_y)

figsize(12.5,12)

#pdf:概率密度函数,在x,y上分别生成两组均匀分布的概率密度

uni_x = stats.uniform.pdf(x,loc=0,scale=5)

uni_y = stats.uniform.pdf(y,loc=0,scale=5)

Mu = np.dot(uni_x[:,None],uni_y[None,:])

#pdf:概率密度函数,在x,y上分别生成两组指数分布的概率密度

exp_x = stats.expon.pdf(x,loc=0,scale=3)

exp_y = stats.expon.pdf(y,loc=0,scale=10)

Me = np.dot(exp_x[:,None],exp_y[None,:])

#第一个图:均分分布

plt.subplot(221)

im = plt.imshow(Mu, interpolation='none',origin='lower', vmax=1, vmin=-.15, extent=(0,5,0,5))

plt.scatter(lambda_2_true,lambda_1_true,c='k',s=50,edgecolors='none')

plt.xlim(0,5)

plt.ylim(0,5)

plt.title('(1)均匀分布,先验概率直观图')

#第二个图:参数为lambda的poisson分布,lambda为均匀分布

plt.subplot(223)

plt.contour(x, y, Mu*L)

im = plt.imshow(Mu*L, interpolation='none',origin='lower', extent=(0,5,0,5))

plt.scatter(lambda_2_true,lambda_1_true,c='k',s=50,edgecolors='none')

plt.xlim(0,5)

plt.ylim(0,5)

plt.title('(3)均匀分布,后验概率直观图')

#第三个图:指数分布

plt.subplot(222)

plt.contour(x, y, Me)

im = plt.imshow(Me, interpolation='none',origin='lower', extent=(0,5,0,5))

plt.scatter(lambda_2_true,lambda_1_true,c='k',s=50,edgecolors='none')

plt.xlim(0,5)

plt.ylim(0,5)

plt.title('(2)指数分布,先验概率直观图')

#第三个图:参数为lambda的poisson分布,lambda为指数分布

plt.subplot(224)

plt.contour(x, y, Me*L)

im = plt.imshow(Me*L, interpolation='none',origin='lower', extent=(0,5,0,5))

plt.scatter(lambda_2_true,lambda_1_true,c='k',s=50,edgecolors='none')

plt.xlim(0,5)

plt.ylim(0,5)

plt.title('(4)指数分布,后验概率直观图')

plt.set_cmap('jet')

plt.show()

参考:《贝叶斯方法-概率编程与贝叶斯推断》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,277评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,689评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,624评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,356评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,402评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,292评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,135评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,992评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,429评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,636评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,785评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,492评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,092评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,723评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,858评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,891评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,713评论 2 354

推荐阅读更多精彩内容