数学与编程:“概率论”总结_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 数学与编程:“概率论”总结

数学与编程:“概率论”总结

 2013/12/15 18:09:07  Vamei  博客园  我要评论(0)
  • 摘要:作者:Vamei出处:http://www.cnblogs.com/vamei欢迎转载,也请保留这段声明。谢谢!终于写完概率论部分的内容。写一个总结,同时算是导读(似乎有些偷懒)。这两天花了些时间,对原文进行修订。自己预期的目标,是将概率论的理论和编程结合起来。这里选择的编程工具是Python和一些第三方的包。我看过一些概率的书籍,觉得一些在数学上处理得好的,往往是纯粹数学的;而概率和编程相互结合的,又太过“实用”性,并没有把概率论的数学本质讲清楚。在我觉得
  • 标签:总结 编程

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!

 

终于写完概率论部分的内容。写一个总结,同时算是导读(似乎有些偷懒)。这两天花了些时间,对原文进行修订。自己预期的目标,是将概率论的理论和编程结合起来。这里选择的编程工具是Python和一些第三方的包。我看过一些概率的书籍,觉得一些在数学上处理得好的,往往是纯粹数学的;而概率和编程相互结合的,又太过“实用”性,并没有把概率论的数学本质讲清楚。在我觉得,理论是最好的实用。为什么不能把简洁优美的数学理论和同样美妙的编程合在一起呢?有了这个疑问,也就有了这一系列文章的探索。

回头看看,觉得Python在统计概率方面还无法完全和R语言比拟。比如写双变量高斯分布的时候,Scipy里没有现成的函数。可能选用R语言的话,功能会更全面。未来如果有时间的话,希望可以为这一系列文章增加一个R语言的实现版本

 

总的来说,概率论的体系是比较简单的。我觉得可以归纳为下面几个点:1. 公理体系,2. 典型分布,3. 描述量,4. 普适定律。在概率论的系列文章,或者是任何概率论的教材中,都会涉及这四个方面。

概率论的难点可能在于它的公理体系。尽管它的叙述非常简单,但并不容易把握。要知道,在概率论初期发展的一两百年里,并没有这样一个公理体系。当时的许多概率论研究都是很碎片化的。公理化体系是建立在现代数学的基础上,特别依赖于集合论和测度论的发展,因此它直到20世纪早期才建立起来的。一些基本的概率论“元件”,如样本、实验、事件、随机变量,放在集合论的大环境里,就比较容易理解。公理化体系的难点在于概率测度的概念,也就是通俗说的概率。测度论本身为了探索“长度”、“面积”和“体积”这样一些代表集合“大小”而产生的数学学科。概率论就是在事件集合上,增加一个称为“概率”的测度来。概率测度代表事件这样一个集合的“大小”。集合越大,越可能出现。我们随后引入的一些概念和工具,比如条件概率和连续分布,都是建立在概率测度的基础上的。所以,尽管测度论一般被认为是一门抽象学科,但一定程度的测度论知识非常有助于概率论的学习。

概率论的典型分布大多来源于古典研究,也就是出现在公理体系之前。这些典型分布大多基于一些具体的现实过程,比如连续打靶10次,中靶次数的分布。它们对应现实过程的一些经典事件的分布,因此非常实用。我们在研究许多概率论问题时,并不需要从最基本的公理从头开始,而更多的是根据问题的特性,来直接引用具体分布的结论。因此,这些经典分布就像一本“电磁学千题解”,我们需要掌握的,是问题所在的具体页码。这些经典分布最早都是为了解决概率论中的难题产生的。最经典和早期的一些数学分布来自于赌博这一现实活动。比如最早的概率论研究就来自于帕斯卡和费马的一系列通信,而这些通信都是为了解决帕斯卡的赌徒朋友所碰到的问题。数学的许多理论体系都来自于解题过程中产生的思想,比如高次多项式解这一数学难题,就孕育了抽象代数中的许多重要概念。如果没有了数学难题,比如千禧年七大问题,数学就丧失了它赖以生存的动能。

描述量有很强的实用意义。通过参照典型分布,我们已经可以大大简化工作量。但作为需要作出决定的普通人,我们往往只需要最重要的一些结果来参考。期望和方差就可以提供很重要、又很容易把握的分布信息。之前有一个报道,是美国一对老夫妇发现某种彩票的期望在一些特殊轮,买家的期望值是正值。他们于是根据期望来买彩票,结果不声不响的赚了几百万美元,还开公司教别人买彩票(事后证明,彩票公司的设计有问题)。下次打三国杀的时候,可以尝试考虑一下判定牌的期望(但期望不是具体的结果,除非打得够多 :-),才比较容易和期望值吻合。)。再比如说,作为股票买家,很容易分辨股价比较“震荡”和股价比较“平静”的时期,这就是方差的概念。在理论上,我们可以继续求其它的描述量,它们也有各自的具体意义,比如斜度。但无疑,期望和方差是生活中最常遇到,也最常处理的一些描述量。在矩概念上建立起的矩生成函数,是一种很常用的概率论理论研究工具。

最后,是一些普适定律,比如Chebyshev不等式和中心极限定律。这些定律不依赖于具体分布的类型,对所有分布都成立。这些定律就好象拿木棍做兵器,虽然糙了些,但胜在可以就地取材。但如果真的没有进一步信息,有一根木棍总胜过赤手空拳。这些定律可以参考它们的具体叙述。

 

概率论是许多学科的基础,比如我们后面要进入的统计。统计是对一大票人口的数据的研究。统计的“概率性”来自于,许多时候,我们无法获得所有人口的具体信息(由于收集信息的困难),我们需要通过采样来推断整个人口的信息。这样一种管中窥豹的研究方法,就具有很强的概率性。比如我们想了解程序员的比例,可以通过对500人采样来进行估计。尽管总人口中的程序员是确定的,但这500人的采样中,有多少个程序员,是一个概率事件。

概率论同样是随机过程的基础。随机过程的学习特别有助于理解一些具体分布的生成过程。此外,随机过程在计算机科学中也很重要,比如scheduler的线程,可以看作是随机的排队过程。我们可以通过对随机过程的了解,来优化scheduler。

 

程序员并不需要特别高深的数学,但数学可以是程序员武器库中一样有力的武器。在我觉得,抛开需要一定直觉和运气的数学研究,数学本身完全可以看作一个固定的、有确定规则的思维“编程”工具,它和程序员平常钻研的“操作系统”、“编程语言”,有很大的类似性:基于一定的规则,并沿着这样的规则,可以有一个确定的结果。计算机的一些领域是和数学紧密相关的,比如算法、函数式编程、计算机图形、数据挖掘、机器学习。许多编程书籍中“附赠”的数学节选,往往太过碎片化。看起来提供了所需要的数学,但将整个数学体系抛到脑后,只取结论。因为这个跳跃,让本身不是特别复杂的数学显得异常高深。其实,程序员这个异常好学的群体,为自己增加一个新的技能——数学,也是为自己打开许多计算机领域的门。

 

希望读过这一系列文章,可以“新技能get”。OK,下一步,统计。

 

欢迎继续阅读“数据科学”系列文章

上一篇: 配备 iPad 的婴儿躺椅,你会买吗? 下一篇: 没有下一篇了!
发表评论
用户名: 匿名