概率与测度 (3):概率模型

标签: Mathematics Math Probability | 发表时间:2011-09-14 23:10 | 作者:pluskid Sosi
出处:http://blog.pluskid.org

本文属于概率与测度系列

系列的前面两篇大致陈述了一下测度论方面的基础,由于这个学期有去旁听《概率论》这门课,所以主要还是按照课程进度来吧,不定期地把课程里一些有意思的内容抽取出来整理在这里。这次就说概率模型。

先从一个例子开始,比如一个盒子里放了 8 个黑球和 2 个白球,从盒子里随机拿一个球,问它是白球的概率是多少,大家都会不假思索地说,1/5 。的确,这似乎是很显然的,不过,实际上我们是用了一个模型来进行概率分析,但是由于这个情况实在太简单了,我们根本就没有注意到模型的存在性,但是换一个稍微简单的例子,要忽略模型“走捷径”有时候就会一下子想不清楚了。比如两个人各掷一个骰子,问 A 得到的点数比 B 大的概率。这个问题就比刚才那个问题要困难一些了。

最早人们在对这类概率问题进行数学抽象的时候,归纳出来的一种模型,现正称为古典概率模型。该模型包由一个包含有限个(设为 $N$)元素的样本空间 $\Omega$ 组成,$\Omega$ 中的每一个元素称为一个基本事件,$\Omega$ 的任意一个子集是一个事件。所有基本事件的概率是相等的,即 $1/N$ ,而任意事件的概率即为该集合的元素个数乘以 $1/N$ ,换句话说:

\[
P(A) = \frac{|A|}{N}
\]

也就是该事件集合的元素个数除以样本空间的总元素个数。对于第一个例子,我们可以这样建立模型:对每一个球编号,一共 1 到 10 号,设 8 号和 9 号是白球,其他的都是黑球,样本空间 $\Omega$ 为 {抽到的是 1 号球、抽到的是 2 号球、……、抽到的是 10 号球} ,而“抽到白球”这个事件集合即 {抽到的是 9 号球、抽到的是 10 号球} ,简单计算立即得到 1/5 的概率。

对于第二个问题,我们用一个 tuple $(x,y)$ 来记两次掷骰子的结果,则整个样本空间集合为 {$(x,y)$, $x=1,\ldots,6$, $y=1,\ldots,6$} 一共 36 个元素,要计算 A 的点数大于 B 的点数这个事件中基本事件的个数,只要暴力数一遍就好了(当然有更好的办法,例如先去掉相等的点数,然后利用对称性,但是这种具体的细节不是我们这里要关注的东西)。

心里有精确的模型存在的时候,就不至于“凭感觉”去想问题而导致各种混淆和错误了。不过古典概率模型实际上限制是比较大的,首先一个是各个基本事件的概率是一样的,这一点可以稍作修改得到稍微改进的版本。不过最主要的限制还在于样本空间必须是有限的这个问题上,在这里没有办法做直接推广,因为古典概率模型中事件的概率实际上就是把事件中包含的基本事件的概率全部加起来而得到的,但是如果集合的元素并不限制为有限个的话,求和式是不是有意义并且收敛就不一定能保证了。

除了古典概率模型之外呢,还有一个比较直观的模型叫做几何概率模型。它的样本空间为 $\mathbb{R}^n$ 上的一个“可求体积”的图形;基本事件是该图形中的点,而基本事件的概率为零;事件则是该图形的“可求体积”的子图形,一个事件 $A$ 的概率通过如下公式计算:

\[
P(A) = \frac{V_A}{V}
\]

其中 $V$ 表示样本空间的体积,而 $V_A$ 表示事件 $A$ 的体积。关于“可求体积”这个模糊的概念,我们待会再说。这里先举一个例子。比较有名的例子当属 Buffon’s needle 了,它有一个有趣的应用就是可以用来估计 $\pi$ 的值。这个例子虽然也不难,但是为了节省时间(好困…… ~_~),我们直接讲一个最简单直接的例子:在平面上有一个矩形,矩形里有一个圆,从矩形里任意选一个点,这个点落在圆内的概率是多少?这个问题正好就适合这里提到的几何概率模型——模型都不用建了,问题本身就已经建好了,比如,假设矩形是以原点为中心,边长为 2 的正方形,而圆是以原点为中心,半径为 1 的圆,那么根据刚才的公式,立即可以算出来概率为 $P=\pi/4$ 。

另一方面,我们知道(为什么?)具体试验所得到的频率是趋向于该事件的概率的。因此,我们可以通过做实验的方法来估算概率 $P$ ,从而反过来得到 $\pi$ 的数值。在这里我就纯粹用程序来模拟一下:

require 'open-uri'
 
EDGE_LEN = 1.2
 
def rand_ptr
    return [2*EDGE_LEN*rand-EDGE_LEN, 2*EDGE_LEN*rand-EDGE_LEN]
end
 
$rnd_org_nums = []
def rnd_org_rand_num
    if $rnd_org_nums.empty?
        puts "Getting new random numbers from random.org"
        $rnd_org_nums += open('http://www.random.org/decimal-fractions/?num=10000&dec=10&col=1&format=plain&rnd=new').
            read.split.map { |s| s.to_f }
    end
    return $rnd_org_nums.pop
end
def rnd_org_rand_ptr
    return [2*EDGE_LEN*rnd_org_rand_num-EDGE_LEN, 2*EDGE_LEN*rnd_org_rand_num-EDGE_LEN]
end
 
$dev_rnd_nums = []
INT32_MAX = 2**32
def dev_rnd_rand_num
    if $dev_rnd_nums.empty?
        puts "Getting new random numbers from /dev/urandom"
        $dev_rnd_nums += open('/dev/urandom').read(10000*4).unpack("L*").
            map { |i| i.to_f / INT32_MAX }
    end
    return $dev_rnd_nums.pop
end
def dev_rnd_rand_ptr
    return [2*EDGE_LEN*dev_rnd_rand_num-EDGE_LEN, 2*EDGE_LEN*dev_rnd_rand_num-EDGE_LEN]
end
 
def in_circle(ptr)
    ptr[0]*ptr[0] + ptr[1]*ptr[1] <= 1 ? 1 : 0
end
 
def find_freq(n)
    (1..n).map {
        #in_circle(dev_rnd_rand_ptr)
        in_circle(rand_ptr)
    }.inject(0) {|a,b| a+b}.to_f / n
end
 
pi = find_freq(50000)*(2*EDGE_LEN)*(2*EDGE_LEN)
puts "Pi = #{pi}"

其实代码不用这么长的,写了这么多是因为除了用 Ruby 自带的伪随机数生成器来随机之外,还尝试了 Linux kernel 附带的据说“随机性更好”的伪随机数生成器 /dev/urandom (如果直接用真随机的 /dev/random 的话,经常 block 住……)。另外还尝试了下 random.org 提供的真随机数服务来获取随机数——不过似乎很容易就超过每天的 quota 了。到底什么样的随机数“更加随机”嘛,我想下面这个呆伯特的漫画很能说明问题: :p

模拟的结果不是很理想,基本上保证能算对 3.1 这两位吧,也许重复次数增加会稍微好一点。不过传说曾经有人用 Buffon’s needle 模型(应该和这里差不多的)做实验数千次之后算到了 $\pi$ 的 7 位精度,听上去似乎是运气相当相当好才能达到这样的精度哦。不知道可否算一下:用这样的实验方法达到 7 位精度的概率是多少呢? :p

最后,再来说一下刚才提到的“可求体积”这个很不精准的概念,实际上看过前两次介绍或者对测度论有所了解的同学肯定已经明白是什么意思了,其实就是“可测”的意思。为了将这些不精确的地方精确化,将以前的那些概率模型归纳起来,建立一个严格的数学模型,作为现代概率论之父的 Andrey Kolmogorov 在测度论的基础上建立了公理化的现代概率模型。

在公理化体系里,一个概率空间由一个三元组 $(\Omega, \mathcal{A}, P)$ 组成,其中 $\Omega$ 是样本空间,$\mathcal{A}$ 是 $\Omega$ 的一个子集族,它必须是一个 $\sigma$-Algebra ,我们在最开始关于测度的介绍中也提到过,一个 $\sigma$-Algebra (或者称 $\sigma$-field )是满足如下三条公理的一个集族:

  1. $\emptyset\in \mathcal{A}$, $\Omega\in\mathcal{A}$
  2. $A\in\mathcal{A}\Rightarrow A^c\in\mathcal{A}$,这里 $A^c$ 表示 $A$ 的补集
  3. $A_i\in\mathcal{A},i\geq 1\Rightarrow \bigcup_{i=1}^\infty A_i \in\mathcal{A}$

而 $P$ 则是一个概率测度,它也必须满足三条公理:

  1. $P(\emptyset)=0$, $P(\Omega)=1$
  2. $P(A)\geq 0$, $\forall A\in\mathcal{A}$
  3. 可列可加性

很明显可以看到,“概率测度”所满足的公理实际上就是“测度”的公理再加上了上面的第一条归一化,使得全概率等于 1 。因此,公理化的概率空间,说白了实际上就是一个归一化了的测度空间。

前面提到的两种概率模型实际上都是这种公理化模型的特殊情况。例如古典概率模型,$\Omega$ 是所有基本事件构成的集合,$\mathcal{A}$ 是 $\Omega$ 的 power set ,也就是所有子集构成的集族,而 $P$ 就是我们以前曾经介绍过的 Counting measure 再加以归一化的结果。

而几何概率模型则更直接一点,那里的“可求体积”实际上就是指该集合(Lebesgue)可测,而概率测度就是普通的 $\mathbb{R}^n$ 上的 Lebesgue 测度再通过全集 $\Omega$ 的测度来归一化之后的结果。 :)

相关 [概率 测度 概率模型] 推荐:

概率与测度 (3):概率模型

- Sosi - Free Mind
系列的前面两篇大致陈述了一下测度论方面的基础,由于这个学期有去旁听《概率论》这门课,所以主要还是按照课程进度来吧,不定期地把课程里一些有意思的内容抽取出来整理在这里. 先从一个例子开始,比如一个盒子里放了 8 个黑球和 2 个白球,从盒子里随机拿一个球,问它是白球的概率是多少,大家都会不假思索地说,1/5.

概率与测度 (4):闲扯大数定理与学习理论

- Mao.. - Free Mind
在本系列的上一篇文章中,我偷偷留了一个问题:为什么具体试验所得到的频率是趋向于该事件的概率的. 这个问题似乎是显而易见的,但是仔细想想似乎也并不显然,并不能一下子得出这个结论来. 事实上,历史上有以这个性质作为基础来构建概率论的理论体系的尝试,不过在现在的概率论公理化体系下面,这个可以作为一个结论推导出来,具体来说,它是大数定理的一个特殊情况.

求解:概率选择题

- -_- - YesKafei Daily
“愤怒的小鸟”出现在物理考试中. 囧| 最牢固的车门 – 牢牢地被固定. 色狼等级考试试题 (@nuomifan). 2011年全国性考试时间表 (@17weiguan). 老外汉语考试,表情很痛苦 (@17weiguan). 围观公务员考试的壮观景象 (@17weiguan).

追MM功败垂成?只是概率惹的祸

- 欣 - 死理性派 - 果壳网
这种感觉应该不陌生:邂逅一个 MM,感觉不错,于是发动攻势. 先搞到 QQ 号或者手机号,然后请她吃饭她也欣然答应. 后来越聊越投机,甚至一起出去郊游. 可是,在某个月黑风高的夜晚,你蓄谋已久,“不经意间”拉起她的手,MM 却异常反感,从此以后电话不接短信不回. 而你,除了恢复以前的日子继续宅在宿舍枯坐于电脑前之外,偶尔也会感慨一下:为什么每次都是这样,总是在最后一步就不给力了.

概率论教你说谎:直觉思维的科学解释

- zhouqi - Matrix67: My Blog
    昨夜,M同学牵着女朋友的手走出宿舍楼,整夜没有回来;直到今天早晨,大家才见他支着腰回到寝室,样子十分疲惫. 我们几个好友似乎已经心领神会,于是一行人走上前去,带着淫邪的笑容拷问他:昨晚干啥了,那么疲惫. 本以为M同学会支支吾吾答不上话来,殊不知他义正严词地答道:我和女朋友去看通宵电影去了. 几个人不服气,问他,那电影票呢.

用JavaScript玩转游戏编程(一)掉宝类型概率

- vento - 博客园-Milo的游戏开发
游戏(和一些模拟程序)经常需要使用随机数,去应付不同的游戏(或商业)逻辑. 本文分析一个常见问题:有N类物件,设第i类物件的出现概率为P(X=i),如何产生这样的随机变量X. 输入数组<0.12, 0.4, 0.4, 0.07, 0.01> 输出符合以上概率的随机数序列,如<1, 4, 2, 1, 2, 2, 1, 0, ...>.

体罚孩童会增加患精神疾病概率

- - Starming星光社最新更新
      研究人员称,在儿童时期受过伤的成年人出现心理问题的概率更高,包括焦虑症、酗酒和吸毒.       该项研究首次探寻了心理问题和一般责打之间的关系. 为了更好地了解简单体罚的影响,更加严重的虐打被排除在外.       根据加拿大的曼尼托巴大学研究表明,在孩童时期被责打过的人往后产生心理问题的概率比常人高2~7%.

下篇 | 使用 Transformers 进行概率时间序列预测

- - SegmentFault 最新的文章
在《使用 Transformers 进行概率时间序列预测》的第一部分里,我们为大家介绍了传统时间序列预测和基于 Transformers 的方法,也一步步准备好了训练所需的数据集并定义了环境、模型、转换和 InstanceSplitter. 本篇内容将包含从数据加载器,到前向传播、训练、推理和展望未来发展等精彩内容.

不要相信直觉!那些概率统计的奇妙结论

- liuce.cn - 死理性派 - 果壳网
对于概率和统计的不确定性,我们始终有足够的直觉. 虽然如此,这依旧远远不够,多数人对概率的理解其实并不充分. 要知道这是一个数学家稍有闪失就会错的一塌胡涂的领域,原因很多时候正是我们的直觉,而正确结论却与之相悖. 我们不妨来看看几个概率统计中的奇妙结论,这也正是概率统计这门学科的魅力所在. 在单位圆内随机地取一条弦,其长超过该圆内接等边三角形的边长√3的概率等于多少.

学好数学很重要-谈CRC32碰撞的概率和可能性

- 三马 - 白菜的博客
      前段时间跟某大牛叽歪的时候,才被提到我写的一篇文章里提到的CRC32算法有误. 今天写代码,恰好需要用到这个函数,想起来了,就又回去看了下. 确认了下,原先的文章并没有错误,但是有一处描述是很有问题的.       原文是这样的,『综合以上的思路,决定采用CRC32来实现. CRC32也是一个哈希算法,和MD5类似,不过它是32位的,故更短一些,速度也更快.