前言
本篇内容主要来自极客时间里的《程序员的数学基础课》,本来去年就买的课一直懒得看,赶上这次疫情才老老实实翻出来看看。看完瞬间觉得自己基础好差,尤其到后面的线性代数相关的直接就看不懂了。目前唯一有点感觉的也就是概率这一部分,配合《程序员的数学:概率统计》,这里简单记录一下,也算是学习笔记了吧。
基本概念
我们用随机变量(Random Variable)来描述事件所有可能出现的状态,并使用概率分布(Probability Distribution)来描述每个状态出现的可能性。而随机变量又可以分为离散型随机变量(Discrete Random Variable)和连续型随机变量(Continuous Random Variable)。
概率分布
假设我们使用一个随机变量 x 来表示新闻类型,如果在 100 篇新闻中,有 60 篇是娱乐新闻,有 20 篇是科技新闻,有 20 篇是体育新闻,那么你看到娱乐新闻的概率就是 60%,看到科技新闻的概率就是 20%,看到体育新闻的概率就是 20%。而这三组数据就可以构成变量 x 的概率分布P(x)。
以抛硬币为例,我们抛的次数越多,正反面的次数就越接近。也就是说,统计的采样次数越多,越趋近于我们理论上的情况。因此,从这个统计实验我们可以看出,概率分布描述的其实就是随机变量的概率规律。
伯努利分布(Bernoulli Distribution)
或者写作: 其中x只能为0或1
抛硬币就属于伯努利分布。别被名字唬到,伯努利分布是较为简单的一种分布,应用于两种实验结果。要么成功,要么失败,一定程度上是二元的性质。
分类分布(Categorical Distribution) 或 Multinoulli 分布
当k=2 的时候就变成了伯努利分布,他们两个都数据离散型分布。从计算的角度来说,我们可以直接求和得出的,就是“离散的”,需要用积分计算的,就是“连续的”。
正态分布 也叫 高斯分布(这个概念对于本篇文章没啥用,纯粹为了练习用markdown写数学公式)
比较经典的连续分布有正态分布、均匀分布、指数分布、拉普拉斯分布等等。如果你只需要掌握一个的话,那肯定是正态分布。
神说,要有正态分布,于是就有了正态分布。
如果你也和我一样,看不懂公式了,这里简单记录一下,帮你回忆回忆。
(exp 高等数学里指以自然常数e为底的指数函数。)
是均值,是标准差
如果你说标准差我也忘了,简单来说标准差就是一组数值,自平均值分散开来的程度的一种测量观念。
多个变量之间的关系
联合概率
由多个随机变量决定的概率我们就叫联合概率,它的概率分布就是联合概率分布。随机变量 x 和 y 的联合概率使用 P(x, y) 表示。联合分布中,联合概率之和为1。
边缘概率
对于连续型随机变量,我们可以通过联合概率 P(x, y) 在 y 上的积分,推导出概率 P(x)。这个时候,我们称 P(x) 为边缘概率。
联合概率与边缘概率的关系如下:
这里的求和符号表示穷举Y可取的值b后,有所有这些值对应的概率的和
来举个例子理解一下上面的概念。
image.png
答案如下:这个比较好理解
image.png
代入上面的公式,
image.png
注意:如果只知道边缘分布,无法反推联合分布
条件概率
条件概率也是由多个随机变量决定,但是和联合概率不同的是,它计算了给定某个(或多个)随机变量的情况下,另一个(或多个)随机变量出现的概率,其概率分布叫做条件概率分布。给定随机变量 x的前提下,随机变量 y 的条件概率使用 P(y | x) 表示。
条件概率的通用定义:
还是上面扑克牌的例子,请问在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|男生)
由之前的条件概率通用公式,我们可以得到
也就是
这样我们就能求得结果了,这个公式也就是贝叶斯公式
贝叶斯的应用场景,简单说就是充分利用统计和先验,转化为预测。
朴素贝叶斯分类
现在有三个水果,苹果,甜橙和西瓜,请问这三个水果摆在你面前,你要如何区分它们?可能有大小,颜色等等
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 个单词有关。
这有什么用呢?比如我现在想在一个文档中寻找一个特殊的句子,s 表示某个有意义的句子,由一连串按照特定顺序排列的词 w1,w2,…,wn 组成,这里 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)
结语
再向后基本就进入决策树,归一化相关的知识了,我目前的水平应该也就到这里了,后面慢慢努力吧。
网友评论