程序员的概率基础课

前言

本篇内容主要来自极客时间里的《程序员的数学基础课》,本来去年就买的课一直懒得看,赶上这次疫情才老老实实翻出来看看。看完瞬间觉得自己基础好差,尤其到后面的线性代数相关的直接就看不懂了。目前唯一有点感觉的也就是概率这一部分,配合《程序员的数学:概率统计》,这里简单记录一下,也算是学习笔记了吧。

基本概念

我们用随机变量(Random Variable)来描述事件所有可能出现的状态,并使用概率分布(Probability Distribution)来描述每个状态出现的可能性。而随机变量又可以分为离散型随机变量(Discrete Random Variable)连续型随机变量(Continuous Random Variable)

概率分布

假设我们使用一个随机变量 x 来表示新闻类型,如果在 100 篇新闻中,有 60 篇是娱乐新闻,有 20 篇是科技新闻,有 20 篇是体育新闻,那么你看到娱乐新闻的概率就是 60%,看到科技新闻的概率就是 20%,看到体育新闻的概率就是 20%。而这三组数据就可以构成变量 x 的概率分布P(x)。

以抛硬币为例,我们抛的次数越多,正反面的次数就越接近。也就是说,统计的采样次数越多,越趋近于我们理论上的情况。因此,从这个统计实验我们可以看出,概率分布描述的其实就是随机变量的概率规律

伯努利分布(Bernoulli Distribution)

P(x=0) = 1-\lambda
P(x=1) = \lambda
或者写作: P(x) = \lambda^x(1-\lambda)^{1-x} 其中x只能为0或1

抛硬币就属于伯努利分布。别被名字唬到,伯努利分布是较为简单的一种分布,应用于两种实验结果。要么成功,要么失败,一定程度上是二元的性质。

分类分布(Categorical Distribution) 或 Multinoulli 分布

P(x=k) = \lambda_k 当k=2 的时候就变成了伯努利分布,他们两个都数据离散型分布。从计算的角度来说,我们可以直接求和得出的,就是“离散的”,需要用积分计算的,就是“连续的”。

正态分布 也叫 高斯分布(这个概念对于本篇文章没啥用,纯粹为了练习用markdown写数学公式)

比较经典的连续分布有正态分布、均匀分布、指数分布、拉普拉斯分布等等。如果你只需要掌握一个的话,那肯定是正态分布。

P(x) = \frac{1}{\sqrt{2\pi\sigma^2}}exp(- \frac{{(x-\mu)}^2}{2\sigma^2})

神说,要有正态分布,于是就有了正态分布。
如果你也和我一样,看不懂公式了,这里简单记录一下,帮你回忆回忆。
(exp 高等数学里指以自然常数e为底的指数函数。)
\mu是均值,\sigma是标准差 \sigma =\sqrt{\frac{1}{N}\sum_{i=1}^{N}(x_i-\mu)^2}
如果你说标准差我也忘了,简单来说标准差就是一组数值,自平均值分散开来的程度的一种测量观念。

正态分布

多个变量之间的关系

联合概率

由多个随机变量决定的概率我们就叫联合概率,它的概率分布就是联合概率分布。随机变量 x 和 y 的联合概率使用 P(x, y) 表示。联合分布中,联合概率之和为1。

边缘概率

对于连续型随机变量,我们可以通过联合概率 P(x, y) 在 y 上的积分,推导出概率 P(x)。这个时候,我们称 P(x) 为边缘概率。

联合概率与边缘概率的关系如下:
P( x=a ) = \sum_{b}^{ } P( x=a , Y=b)
这里的求和符号表示穷举Y可取的值b后,有所有这些值对应的概率的和
P( x=b ) = \sum_{a}^{ } P( x=a , Y=b)

来举个例子理解一下上面的概念。


image.png

答案如下:这个比较好理解


image.png

代入上面的公式,


image.png

注意:如果只知道边缘分布,无法反推联合分布

条件概率

条件概率也是由多个随机变量决定,但是和联合概率不同的是,它计算了给定某个(或多个)随机变量的情况下,另一个(或多个)随机变量出现的概率,其概率分布叫做条件概率分布。给定随机变量 x的前提下,随机变量 y 的条件概率使用 P(y | x) 表示。

条件概率的通用定义:P( Y = b | X = a ) = \frac{P( X = a , Y = b ) }{ P(X = a) }

还是上面扑克牌的例子,请问在X=红色的前提下,Y=数字牌的概率是多少?答案:1/3。这个应该好理解吧。
用条件概率表示如下。


image.png

如果你也听说过“三门问题”的话,可以用条件概率来计算一下结果。条件变成了三个,稍微复杂了一些,这里就不进一步记录了。

练习一下

我们再举一个例子来巩固一下上面的知识。

某家长一直在操心儿子的教育问题,所以一直在研究他班级的成绩单。为了弄清儿子在班级上的成绩排名,向老师要了张全班成绩的分布表。

image.png

男生的概率是 P(男生)=10/20=50%
90 分及以上的学生的概率是 P(90-100)=4/20=20%
那全班考了 90 分以上的男生的概率是多少呢?(联合概率)也就是 P(男生, 90-100)=2/20=10%。
在男生中,考 90 分及以上的概率是多少?(条件概率)P(90-100|男生)= 2/10=20%。

  • |男, 90-100|表示考了 90 分以上的男生人数;
  • |男|表示男生人数;
  • |全班|表示全班人数。
    已知 P(90-100 | 男生) = |男生, 90-100| / |男生|,P(男) = |男生| / |全班|
    则p(90-100 | 男生)✖️P(男) = P(男生, 90-100)

下面我们假设这样一种场景,想知道男生考了 90~100 分的概率有多少,来评估一下儿子在男生中算什么水平。可是老师出于隐私保护,并没有把全班数据的分布告诉我,她说道“我可以告诉你全班考 90~100 分的概率,以及 90~100 分中男生的概率。
也就是已知P(男生)、P(90-100)和P(男生|90-100),求 P(90-100|男生)

由之前的条件概率通用公式,我们可以得到
P( x | y ) \times P(y) = P(x,y) = P(y,x) = P( y | x ) \times P(x)
也就是
P( x | y ) = \frac{P( y | x ) \times P(x)}{P(y)}
这样我们就能求得结果了,这个公式也就是贝叶斯公式
贝叶斯的应用场景,简单说就是充分利用统计和先验,转化为预测。

朴素贝叶斯分类

现在有三个水果,苹果,甜橙和西瓜,请问这三个水果摆在你面前,你要如何区分它们?可能有大小,颜色等等


image.png

那么请问你要如何让计算机来认识这三种水果呢?

image.png

当然了,仅仅只有三种水果的数据还是太少了,我们可以把样本量扩充。基于我们前面提到的贝叶斯定理,我们首先计算出各种水果特征的概率。对于上表中出现的 0.00 概率,在做贝叶斯公式中的乘积计算时,会出现结果为 0 的情况,因此我们通常取一个比这个数据集里最小统计概率还要小的极小值,来代替“零概率”。这里我们取0.01
image.png

假定数据对象的不同属性对其归类影响时是相互独立的。现在我们手上有一个水果,它是圆形,口感是甜的。
image.png

同理可得,甜橙的概率是0.269 ,西瓜的概率是0.007。所以从概率上来说这个水果应该甜橙。

所以什么是朴素贝叶斯分类,简单总结一下就是:

  • 准备数据:针对水果分类这个案例,我们收集了若干水果的实例,并从水果的常见属性入手,将其转化为计算机所能理解的数据。这种数据也被称为训练样本
  • 建立模型:通过手头上水果的实例,我们让计算机统计每种水果、属性出现的先验概率,以及在某个水果分类下某种属性出现的条件概率。这个过程也被称为基于样本的训练
  • 分类新数据:对于一颗新水果的属性数据,计算机根据已经建立的模型进行推导计算,得到该水果属于每个分类的概率,实现了分类的目的。这个过程也被称为预测

之所以名字中带有“朴素”,因为前提是各种变量是相互独立的,同时也只能处理离散型分布。

关于朴素贝叶斯分类,这里推荐下面这个视频,
网易公开课概率推理2 没有耐心的小伙伴可以从24分钟开始。

马尔科夫模型

在讲语言模型之前,我们先来了解两个基本概念:链式法则和马尔科夫假设

链式法则

image.png

推导过程如下
image.png

这个法则有什么用呢?这里可参见
网易公开课概率推理1 没有耐心的小伙伴可以从28分开始看
简单来说,利用条件独立性,可大大减少联合概率的计算量。当然还有其他更厉害的应用,感兴趣的在视频中了解吧。

马尔科夫假设

任何一个词 wi​ 出现的概率只和它前面的 1 个或若干个词有关。基于这个假设,我们可以提出多元文法(Ngram)模型。Ngram 中的“N”很重要,它表示任何一个词出现的概率,只和它前面的 N-1 个词有关。
我以二元文法模型为例,某个单词出现的概率只和它前面的 1 个单词有关。
P(w_n|w_1w_2w_3...w_{n-1}) \approx P(w_n|w_{n-1})

这有什么用呢?比如我现在想在一个文档中寻找一个特殊的句子,s 表示某个有意义的句子,由一连串按照特定顺序排列的词 w1​,w2​,…,wn​ 组成,这里 n 是句子里单词的数量。
那个这个特殊句子出现的概率是多少呢?
P(s) = P(w_1,w_2,w_3,...,w_n)
使用链式法则展开后数量级过于庞大,对于计算机计算难度也很高。这时使用二元文法优化后,系统复杂度就可以降到我们能够接受的量级。

举一个使用上述知识的例子,信息检索。
q 表示一个查询,d 表示一篇文档。现在想知道哪个文档更符合用户的查询条件,即求P(d∣q),根据贝叶斯定理得到如下公式,


image.png

对于同一个查询,其出现概率 P(q) 都是相同的,同一个文档 d 的出现概率 P(d) 也是固定的。所以我们只需要关心求P(q∣d)。根据链式法则,我们可以展开成为


image.png

为了提升效率,我们也使用马尔科夫假设和多元文法。假设是三元文法,那么我们可以写成这样:


image.png

最终,根据每篇文档所获得的 P(d∣q) 这个值,由高到低对所有的文档进行排序。我就实现了信息检索。

那语言模型是不是也可以用于估算其他序列出现的概率呢?答案是肯定的。
前文提到了二元文法、三元文法。对于二元文法来说,某个词出现的概率只和前一个词有关。对应的,在马尔科夫模型中,如果一个状态出现的概率只和前一个状态有关,那么我们称它为一阶马尔科夫模型或者马尔科夫链

Google 公司最引以为傲的 PageRank 链接分析算法,它的核心思想也和马尔科夫链有关。感兴趣的小伙伴可以去网上查找一些相关知识。

信息熵

有个公众号上有一个做的不错的视频,感兴趣的可以参考一下。
https://mp.weixin.qq.com/s/8_XAK3Drrh7fDMQKdbePXA
这个视频很好的回答了两个问题,
信息是怎么计算的?
为什么信息还有单位?

这里盗用一下里面的思维导图,其中离散分布的位置就是信息熵的计算公式。


image.png

信息熵,我们通常简称为熵,其实就是用来刻画给定集合的纯净度的一个指标。

image.png

那么集合中分组的数量 n 为 1,A 分组的元素在集合中出现的概率为 100%,所以这个集合的熵为 -100%*log(100%, 2) = 0


image.png

那么集合中分组的数量 n 为 2,A 和 B 分组的元素在集合中出现的概率各为 50%,所以这个集合的熵为 2(-50%log(50%, 2)) = 1

从上述两个集合的对比可以看出,一个集合中所包含的分组越多、元素在这些分组里分布得越均匀,熵值也越大。而熵值表示了纯净的程度,或者从相反的角度来说,是混乱的程度。

如果你已经看懂了上面的部分,相信你已经知道单个集合的熵是如何计算的了。那么,如果将一个集合划分成多个更小的集合之后,又该如何根据这些小集合,来计算整体的熵呢?

image.png

其中,T 表示一种划分,Pv​ 表示划分后其中某个小集合,Entropy(Pv​) 表示某个小集合的熵, 而 ∣Pv∣除以|P|​ 表示某个小集合出现的概率。所以这个公式其实就表示,对于多个小集合而言,其整体的熵等于各个小集合之熵的加权平均。而每个小集合的权重是其在整体中出现的概率。

image.png

根据之前单个集合的熵计算,A 和 B 组元素所组成的小集合,它的熵是 1。而 C 组没有和其他组混合,所形成的小集合其熵为 0。在计算前两个小集合的整体熵时,A 组和 B 组形成的集合出现的概率为 2/3​,而 C 组形成的集合出现概率为 1/3​,所有整体熵 =2/3​∗1+1/3​∗0=0.67。

如果我们将划分前后的整体熵做个对比,你会发现划分后的整体熵要小于划分之前的整体熵。

我们将划分后整体熵的下降,称为信息增益(Information Gain)

结语

再向后基本就进入决策树,归一化相关的知识了,我目前的水平应该也就到这里了,后面慢慢努力吧。

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

推荐阅读更多精彩内容

  • 基础概念:  逻辑:  逻辑可以在给定某些命题是真或假的假设下,判断另外一些命题是真还是假。  概率:  概率可以...
    交大小浪花阅读 1,504评论 0 6
  • 概率图模型是之前一直搁置的内容,然而躲得过初一躲不过十五,看葫芦书时发现其中有整整一章关于概率图,方才意识到概率图...
    单调不减阅读 11,706评论 0 6
  • 1 信息量 信息量即信息多少的度量。跟我们认识中秒是时间多少的度量,米是长度多少的量度是一样的意思。 百度百科上定...
    chao6510阅读 431评论 0 0
  • 请听题:什么是熵?什么是交叉熵?什么是联合熵?什么是条件熵?什么是相对熵?它们的联系与区别是什么? 如果你感到回答...
    工程师milter阅读 11,935评论 5 57
  • 前言 计算机科学作为理工科一个独特的分支,本质上仍然是建立在逻辑思维上的一门科学,良好的概率论思维有助于设计高效可...
    TOMOCAT阅读 707评论 0 3