这里写自定义目录标题
概率和统计是一个东西吗?
概率(probabilty)和统计(statistics)看似两个相近的概念,其实研究的问题刚好相反。
-
概率研究的问题是,已知一个模型和参数,怎么去预测这个模型产生的结果的特性(例如均值,方差,协方差等等)。
举个例子,我想研究怎么养猪(模型是猪),我选好了想养的品种、喂养方式、猪棚的设计等等(选择参数),我想知道我养出来的猪大概能有多肥,肉质怎么样(预测结果)。 -
统计是,有一堆数据,要利用这堆数据去预测模型和参数。
仍以猪为例。现在我买到了一堆肉,通过观察和判断,我确定这是猪肉(这就确定了模型。在实际研究中,也是通过观察数据推测模型是/像高斯分布的、指数分布的、拉普拉斯分布的等等),然后,可以进一步研究,判定这猪的品种、这是圈养猪还是跑山猪还是网易猪,等等(推测模型参数)。
一句话总结:概率是已知模型和参数,推数据。统计是已知数据,推模型和参数。
显然,本文解释的MLE(最大似然估计)和MAP(最大后验估计)都是统计领域的问题。它们都是用来推测参数的方法(不是推测模型,模型必须预先指定或假设好)。
为什么会存在着两种不同方法呢? 这需要理解贝叶斯思想。我们来看看贝叶斯公式。
贝叶斯派观点 VS 频率派观点
问题引入:已知数据和模型, 求模型的参数 θ \theta θ
已知一组数据集 D = x 1 , x 2 , . . . x n D={x_1,x_2,...x_n} D=x1,x2,...xn 是独立地从概率分布 p ( X ) p(X) p(X)上采样生成的,且 p ( X ) p(X) p(X) 具有确定的形式(如高斯分布,二项分布等)但参数 θ \theta θ 未知。
频率派与贝叶斯派的不同思考方式
抽象一点来讲,频率学派和贝叶斯学派对世界的认知有本质不同(参考 聊一聊机器学习的MLE和MAP:最大似然估计和最大后验估计):
- 频率学派认为世界是确定的,有一个本体,这个本体的真值是不变的,我们的目标就是要找到这个真值或真值所在的范围;
- 而贝叶斯学派认为世界是不确定的,人们对世界先有一个预判,而后通过观测数据对这个预判做调整,我们的目标是要找到最优的描述这个世界的概率分布。
具体而言,频率派与贝叶斯派各自不同的思考方式:
-
频率派认为需要推断的参数θ是一个客观存在的固定值,即概率虽然是未知的,但最起码是确定的一个值,同时,样本 x x x 是随机的,所以频率派重点研究样本空间,大部分的概率计算都是针对样本 x x x 的分布,即研究 P ( D ∣ θ ) P(D|\theta) P(D∣θ);
最大似然估计 P ( D ∣ θ ) P(D|\theta) P(D∣θ)本质上就是频率派思维,认为模型参数θ虽然未知但是固定的,通过找到使数据集 D D D 出现可能性最大的值,对参数 θ \theta θ 进行估计,此便是极大似然估计的核心思想。 -
贝叶斯派的观点则截然相反,他们认为参数是随机变量,而样本 x x x是固定的,由于样本是固定的,所以他们重点研究的是参数的分布,即研究 P ( θ ∣ D ) P(\theta|D) P(θ∣D)。
最大后验估计本质上是贝叶斯派思维。贝叶斯派既然把 θ \theta θ看做是一个随机变量,所以要计算 P ( θ ∣ D ) P(θ|D) P(θ∣D)的分布。
其首先根据主观的经验假定 θ \theta θ的概率分布为 P ( θ ) P(\theta) P(θ) (先验分布,往往并不准确),然后根据观察到的新信息(数据集 D D D)对其进行修正,此时 θ \theta θ的概率分布为 P ( θ ∣ D ) P(\theta|D) P(θ∣D) (后验分布)。
最大似然估计(MLE)
概率函数与似然函数
似然(likelihood)这个词其实和概率(probability)是差不多的意思,Colins字典这么解释:The likelihood of something happening is how likely it is to happen. 你把likelihood换成probability,这解释也读得通。但是在统计里面,似然函数和概率函数却是两个不同的概念(其实也很相近就是了)。
对于这个函数:
P
(
x
∣
θ
)
P(x|θ)
P(x∣θ) ----公式(1)
输入有两个:
x
x
x表示某一个具体的数据;
θ
θ
θ表示模型的参数。
-
概率函数:对于公式1,如果 θ θ θ是已知确定的, x x x是变量,这个函数叫做概率函数(probability function),它描述对于不同的样本点x,其出现概率是多少。
-
似然函数:对于公式1,如果 x x x是已知确定的, θ θ θ是变量,这个函数叫做似然函数(likelihood function), 它描述对于不同的模型参数,出现x这个样本点的概率是多少。
这有点像“一菜两吃”的意思。其实这样的形式我们以前也不是没遇到过。例如,
f
(
x
,
y
)
=
x
y
f(x,y)=x^y
f(x,y)=xy, 即
x
x
x的
y
y
y次方。如果x是已知确定的(例如x=2),这就是f(y)=2^y, 这是指数函数。
如果y是已知确定的(例如y=2),这就是f(x)=x^2,这是二次函数。同一个数学形式,从不同的变量角度观察,可以有不同的名字。
最大似然估计的本质和基本思想
核心思想:找到使数据集
D
D
D出现可能性最大的值,对参数
θ
\theta
θ 进行估计,即
最大似然估计的例子
假设有一个造币厂生产某种硬币,现在我们拿到了一枚这种硬币,想试试这硬币是不是均匀的。即想知道抛这枚硬币,正面出现的概率(记为θ)各是多少?
这是一个统计问题,回想一下,解决统计问题需要什么? 数据!
于是我们拿这枚硬币抛了10次,得到的数据( x 0 x_0 x0)是:反正正正正反正正正反。
- 模型:假设是二项分布;
- 参数:我们想求的正面概率θ是模型参数。
那么,出现实验结果
x
0
x_0
x0(即反正正正正反正正正反)的似然函数是多少呢?
f
(
x
0
∣
θ
)
=
(
1
−
θ
)
×
θ
×
θ
×
θ
×
θ
×
(
1
−
θ
)
×
θ
×
θ
×
θ
×
(
1
−
θ
)
=
θ
7
(
1
−
θ
)
3
=
f
(
θ
)
f(x_0|θ)=(1−θ)×θ×θ×θ×θ×(1−θ)×θ×θ×θ×(1−θ)=θ^7(1−θ)^3=f(θ)
f(x0∣θ)=(1−θ)×θ×θ×θ×θ×(1−θ)×θ×θ×θ×(1−θ)=θ7(1−θ)3=f(θ)
注意,这是个只关于θ的函数。
最大似然估计,顾名思义,就是要最大化这个似然函数。
我们可以画出f(θ)的图像:
可以看出,在θ=0.7时,似然函数取得最大值。
这样,我们已经完成了对θ的最大似然估计。即,抛10次硬币,发现7次硬币正面向上,最大似然估计认为正面向上的概率是0.7。(ummm…这非常直观合理,对吧?)
- 贝叶斯思想:
且慢,一些人可能会说,硬币一般都是均匀的啊! 就算你做实验发现结果是“反正正正正反正正正反”,我也不信θ=0.7。
这里就包含了贝叶斯学派的思想了——要考虑先验概率。 为此,引入了最大后验概率估计。
最大后验概率估计
最大后验估计的基本思想
找到使后验概率最大的值,对参数
θ
\theta
θ 进行估计,即
顺带一提, P ( θ ∣ D ) P(θ|D) P(θ∣D)即后验概率,这就是“最大后验概率估计”名字的由来。
最大后验估计与最大似然估计的比较
- 最大似然估计是求参数θ, 使似然函数 P ( D ∣ θ ) P(D|θ) P(D∣θ)最大。
- 最大后验概率估计则是想求θ使
P
(
D
∣
θ
)
P
(
θ
)
P(D|θ)P(θ)
P(D∣θ)P(θ)最大。求得的θ不单单让似然函数大,θ自己出现的先验概率也得大。
-(这有点像正则化里加惩罚项的思想:最大后验估计与最大似然估计优化过程中的差异便是多了一项 l o g P ( θ ) logP(\theta) logP(θ) ,相当于加了一项与 θ \theta θ 的先验概率 P ( θ ) P(\theta) P(θ)有关的惩罚项。) - MAP其实是在最大化
P
(
θ
∣
D
)
=
P
(
D
∣
θ
)
P
(
θ
)
P
(
D
)
P(θ|D)=\frac{P(D|θ)P(θ)}{P(D)}
P(θ∣D)=P(D)P(D∣θ)P(θ), 只不过是去掉了P(D)的影响。
—解释1:因为 P ( D ) P(D) P(D)与 θ \theta θ无关,故可直接去掉。
— 解释2:因为 D D D是确定的(即投出的“反正正正正反正正正反”), P ( D ) P(D) P(D)是一个已知值,所以去掉了分母 P ( D ) P(D) P(D).
例如, P ( D ) P(D) P(D)的求法:
(假设“投10次硬币”是一次实验,实验做了1000次,“反正正正正反正正正反”出现了n次,
则P(D)=n/1000。总之,这是一个可以由数据集得到的值)。
这里有两点值得注意的地方:
- 随着数据量的增加,参数分布会越来越向数据靠拢,先验的影响力会越来越小
- 如果先验是uniform distribution,则贝叶斯方法等价于频率方法。因为直观上来讲,先验是uniform distribution本质上表示对事物没有任何预判
最大后验估计的例子
对于投硬币的例子来看,我们认为(”先验地知道“)θ取0.5的概率很大,取其他值的概率小一些。我们用一个高斯分布来具体描述我们掌握的这个先验知识,例如假设P(θ)为均值0.5,方差0.1的高斯函数,如下图:
对于投币10次的硬币实验,实验结果 x 0 x_0 x0(即反正正正正反正正正反)的似然函数是:
f ( x 0 ∣ θ ) = ( 1 − θ ) × θ × θ × θ × θ × ( 1 − θ ) × θ × θ × θ × ( 1 − θ ) = θ 7 ( 1 − θ ) 3 f(x_0|θ)=(1−θ)×θ×θ×θ×θ×(1−θ)×θ×θ×θ×(1−θ)=θ^7(1−θ)^3 f(x0∣θ)=(1−θ)×θ×θ×θ×θ×(1−θ)×θ×θ×θ×(1−θ)=θ7(1−θ)3
则 P ( x 0 ∣ θ ) P ( θ ) P(x_0|θ)P(θ) P(x0∣θ)P(θ)的函数图像为:
注意,此时函数取最大值时,θ取值已向左偏移,不再是0.7。实际上,在θ=0.558时函数取得了最大值。即,用最大后验概率估计,得到θ=0.558
最后,那要怎样才能说服一个贝叶斯派相信θ=0.7呢?你得多做点实验。实验做得多,似然函数P(x0|θ)的重要性就增加,而先验概率P(θ)的影响就变小了
如果做了1000次实验,其中700次都是正面向上,这时似然函数为:
f
(
x
0
∣
θ
)
=
=
θ
700
(
1
−
θ
)
300
f(x_0|θ)==θ^{700}(1−θ)^{300}
f(x0∣θ)==θ700(1−θ)300,而P(θ)还是那个高斯函数。此时,似然函数图像如下:
如果仍然假设P(θ)为均值0.5,方差0.1的高斯函数,P(x0|θ)P(θ)的函数图像为:
在θ=0.696处,P(x0|θ)P(θ)取得最大值。
这样,就算一个考虑了先验概率的贝叶斯派,也不得不承认得把θ估计在0.7附近了。
贝叶斯定理
在引出贝叶斯定理之前,先学习几个定义:
-
条件概率(又称后验概率)就是事件A在另外一个事件B已经发生条件下的发生概率。条件概率表示为P(A|B),读作“在B条件下A的概率”。其定义为:
P ( A ∣ B ) = P ( A ∩ B ) P ( B ) P(A|B) =\frac{P(A\cap B)}{P(B)} P(A∣B)=P(B)P(A∩B) -
联合概率表示两个事件共同发生的概率。A与B的联合概率表示为 P ( A ∩ B ) P(A\cap B) P(A∩B)。
-
边缘概率(又称先验概率)是某个事件发生的概率。
通过联合概率求边缘概率:在联合概率中,把最终结果中那些不需要的事件通过合并成它们的全概率,而消去它们(对离散随机变量用求和得全概率,对连续随机变量用积分得全概率),这称为边缘化(marginalization),比如A的边缘概率表示为P(A),B的边缘概率表示为P(B)。
接着,考虑一个问题:P(A|B)是在B发生的情况下A发生的可能性。
- 首先,事件B发生之前,我们对事件A的发生有一个基本的概率判断,称为A的先验概率,用P(A)表示;
- 其次,事件B发生之后,我们对事件A的发生概率重新评估,称为A的后验概率,用P(A|B)表示;
- 类似的,事件A发生之前,我们对事件B的发生有一个基本的概率判断,称为B的先验概率,用P(B)表示;
- 同样,事件A发生之后,我们对事件B的发生概率重新评估,称为B的后验概率,用P(B|A)表示。
贝叶斯定理便是基于下述贝叶斯公式:
P
(
A
∣
B
)
=
P
(
B
∣
A
)
P
(
A
)
P
(
B
)
P(A|B) = \frac{P(B|A)P(A)}{P(B)}
P(A∣B)=P(B)P(B∣A)P(A)
贝叶斯公式可以直接根据条件概率的定义直接推出。
朴素贝叶斯分类器
带你彻彻底底搞懂朴素贝叶斯公式
一. 朴素贝叶斯
朴素贝叶斯用于分类,是一种分类器,根据观察到的特征来判别类型。
朴素贝叶斯中的朴素一词的来源就是假设各特征之间相互独立(注意:是特征之间独立,不是特征与类别之间独立,如果是后者那么通过特征来推断类别就没有意义了)。这一假设使得朴素贝叶斯算法变得简单,但有时会牺牲一定的分类准确率。
-
贝叶斯公式:
P ( A ∣ B ) = P ( B ∣ A ) P ( A ) P ( B ) P(A|B) = \frac{P(B|A)P(A)}{P(B)} P(A∣B)=P(B)P(B∣A)P(A) -
在分类任务中,我们的目的是要根据观察到的特征,来实现分类任务,即求出p(类别|特征)。
将贝叶斯公式应用到分类任务:
P ( 类别 ∣ 特征 ) = P ( 特征 ∣ 类别 ) P ( 类别 ) P ( 特征 ) P(类别|特征) =\frac{P(特征|类别)P(类别)}{P(特征)} P(类别∣特征)=P(特征)P(特征∣类别)P(类别) -
朴素贝叶斯:通常的分类任务中,特征有许多个,如果假设各个特征之间相互独立,那么就变成了朴素贝叶斯:
其中, c k c_k ck表示第k类, x ( j ) x^{(j)} x(j)表示第j个特征
-
朴素贝叶斯公式不求分母,只求分子,最后求各个分子之间的相对比值,就可得出各个类别的概率。
-
什么情况下适用朴素贝叶斯?
当特征(X)有多个,又可以假设各个特征之间条件独立。因为特征(X)有多个,所以P(类别 | 多个特征的组合)不好求解,而P(单个特征 | 类别)是可以根据观察结果计算出来的,P(多个特征组合|类别) = P(特征0|类别)xP(特征1|类别)…xP(特征n|类别) -
朴素贝叶斯的优缺点
优点:
(1) 算法逻辑简单,易于实现(算法思路很简单,只要使用贝叶斯公式转化即可!)
(2)分类过程中时空开销小(假设特征相互独立,只会涉及到二维存储)
缺点:
朴素贝叶斯假设属性之间相互独立,这种假设在实际过程中往往是不成立的。在属性之间相关性越大,分类误差也就越大。
朴素贝叶斯分类器实例
首先,给出数据如下:
现在给我们的问题是,如果一对男女朋友,男生想女生求婚,男生的四个特点分别是不帅,性格不好,身高矮,不上进,请你判断一下女生是嫁还是不嫁?
这是典型的二分类问题,按照朴素贝叶斯的求解,转换为求
1)P(嫁|不帅、性格不好、矮、不上进)的概率
2)P(不嫁|不帅、性格不好、矮、不上进)的概率。
这里我们根据贝特斯公式:
在根据朴素贝叶斯假设(特征之间独立):
我们的目标是求解为不同的类别,贝叶斯公式的分母总是相同的。所以,只求解分子即可。
-
第一步,求各个特征的概率值和条件概率值的方法:从观察数据中统计
对原始数据表进行统计可得:
P(嫁)=1/2、P(不帅|嫁)=1/2、P(性格不好|嫁)=1/6、P(矮|嫁)=1/6、P(不上进|嫁)=1/6。
P(不嫁)=1/2、P(不帅|不嫁)=1/3、P(性格不好|不嫁)=1/2、P(矮|不嫁)=1、P(不上进|不嫁)=2/3 -
第二步,求朴素贝叶斯公式的分子
于是,对于类别“嫁”的贝叶斯分子为:P(嫁)P(不帅|嫁)P(性格不好|嫁)P(矮|嫁)P(不上进|嫁)=1/2 * 1/2 * 1/6 * 1/6 * 1/6=1/864
对于类别“不嫁”的贝叶斯分子为:P(不嫁)P(不帅|不嫁)P(性格不好|不嫁)P(矮|不嫁)P(不上进|不嫁)=1/2 * 1/3 * 1/2 * 1* 2/3=1/18。 -
第三步,求分子之间的相对比值,得出各个类别的概率。
朴素贝叶斯公式不求分母,只求分子,最后求各个分子之间的相对比值,就可得出各个类别的概率。
P(嫁|不帅、性格不好、矮、不上进)=(1/864) / (1/864+1/18)=1/49=2.04%
P(不嫁|不帅、性格不好、矮、不上进)=(1/18) / (1/864+1/18)=48/49=97.96%
贝叶斯网络
贝叶斯网络(Bayesian network),又称信念网络(Belief Network),或有向无环图模型(directed acyclic graphical model),是一种概率图模型,于1985年由Judea Pearl首先提出。它是一种模拟人类推理过程中因果关系的不确定性处理模型,其网络拓朴结构是一个有向无环图(DAG)。
贝叶斯网络的有向无环图中的节点表示随机变量{X1,X2,…,Xn}
它们可以是可观察到的变量,或隐变量、未知参数等。认为有因果关系(或非条件独立)的变量或命题则用箭头来连接。若两个节点间以一个单箭头连接在一起,表示其中一个节点是“因(parents)”,另一个是“果(children)”,两节点就会产生一个条件概率值。
例如,假设节点E直接影响到节点H,即E→H,则用从E指向H的箭头建立结点E到结点H的有向弧(E,H),权值(即连接强度)用条件概率P(H|E)来表示,如下图所示:
简言之,把某个研究系统中涉及的随机变量,根据是否条件独立绘制在一个有向图中,就形成了贝叶斯网络。其主要用来描述随机变量之间的条件依赖,用圈表示随机变量(random variables),用箭头表示条件依赖(conditional dependencies)。
此外,对于任意的随机变量,其联合概率可由各自的局部条件概率分布相乘而得出:
P
(
x
1
,
.
.
.
x
k
)
=
P
(
x
k
∣
x
1
.
.
.
x
k
−
1
)
.
.
.
P
(
x
2
∣
x
1
)
P
(
x
1
)
P(x_1,...x_k) = P(x_k|x_1...x_{k-1})...P(x_2|x_1)P(x_1)
P(x1,...xk)=P(xk∣x1...xk−1)...P(x2∣x1)P(x1)
贝叶斯网络定义: 令G = (I,E)表示一个有向无环图(DAG),其中I代表图形中所有的节点的集合,而E代表有向连接线段的集合,且令X = (Xi)i ∈ I为有向无环图中的某一节点i所代表的随机变量,若节点X的联合概率可以表示成:
则称X为相对于有向无环图G 的贝叶斯网络,其中,pa(i)表示节点i之“因”,或称pa(i)是i的parents(父母)。
此外,对于任意的随机变量,其联合概率可由各自的局部条件概率分布相乘而得出:
如下图所示,便是一个简单的贝叶斯网络:
有p(a,b,c)=p(c|a,b)p(b|a)p(a)
贝叶斯网络的结构形式
- 形式一: head-to-head
依上图,所以有:P(a,b,c) = P(a)P(b)P(c|a,b)成立,即在c未知的条件下,a、b被阻断(blocked),是独立的,称之为head-to-head条件独立。 - 形式二: tail-to -tail
考虑c未知,跟c已知这两种情况:
在c未知的时候,有:P(a,b,c)=P©P(a|c)P(b|c),此时,没法得出P(a,b) = P(a)P(b),即c未知时,a、b不独立。
在c已知的时候(c已知时的条件概率),有:P(a,b|c)=P(a,b,c)/P©,然后将P(a,b,c)=P©P(a|c)P(b|c)带入式子中,得到:P(a,b|c)=P(a,b,c) /P( c) = P( c)P(a|c)P(b|c) / P( c) = P(a|c)*P(b|c),即c已知时,a、b独立。
- 形式三:head-to-tail
还是分c未知跟c已知这两种情况:
c未知时,有:P(a,b,c)=P(a)P(c|a)P(b|c),但无法推出P(a,b) = P(a)P(b),即c未知时,a、b不独立。
c已知时,有:
P
(
a
,
b
∣
c
)
=
P
(
a
,
b
,
c
)
/
P
(
c
)
P(a,b|c)=P(a,b,c)/P(c)
P(a,b∣c)=P(a,b,c)/P(c),且根据
P
(
a
,
c
)
=
P
(
a
)
P
(
c
∣
a
)
=
P
(
c
)
P
(
a
∣
c
)
P(a,c) = P(a)P(c|a) = P(c)P(a|c)
P(a,c)=P(a)P(c∣a)=P(c)P(a∣c),可化简得到:
P
(
a
,
b
∣
c
)
=
P
(
a
,
b
,
c
)
/
P
(
c
)
=
P
(
a
)
∗
P
(
c
∣
a
)
∗
P
(
b
∣
c
)
/
P
(
c
)
=
P
(
a
∣
c
)
∗
P
(
b
∣
c
)
P(a,b|c) = P(a,b,c)/P(c)= P(a)*P(c|a)*P(b|c)/P(c) = P(a|c)*P(b|c)
P(a,b∣c)=P(a,b,c)/P(c)=P(a)∗P(c∣a)∗P(b∣c)/P(c)=P(a∣c)∗P(b∣c)
所以,在c给定的条件下,a,b被阻断(blocked),是独立的,称之为head-to-tail条件独立。
这个head-to-tail其实就是一个链式网络,如下图所示:
根据之前对head-to-tail的讲解,我们已经知道,在xi给定的条件下,xi+1的分布和x1,x2…xi-1条件独立。意味着啥呢?意味着:xi+1的分布状态只和xi有关,和其他变量条件独立。通俗点说,当前状态只跟上一状态有关,跟上上或上上之前的状态无关。这种顺次演变的随机过程,就叫做马尔科夫链(Markov chain)。
因子图
wikipedia上是这样定义因子图的:将一个具有多变量的全局函数因子分解,得到几个局部函数的乘积,以此为基础得到的一个双向图叫做因子图(Factor Graph)。
通俗来讲,所谓因子图就是对函数进行因子分解得到的一种概率图。一般内含两种节点:变量节点和函数节点。我们知道,一个全局函数通过因式分解能够分解为多个局部函数的乘积,这些局部函数和对应的变量关系就体现在因子图上。
举个例子,现在有一个全局函数,其因式分解方程为:
其中fA,fB,fC,fD,fE为各函数,表示变量之间的关系,可以是条件概率也可以是其他关系。其对应的因子图为:
在概率图中,求某个变量的边缘分布是常见的问题。这问题有很多求解方法,其中之一就是把贝叶斯网络或马尔科夫随机场转换成因子图,然后用sum-product算法求解。换言之,基于因子图可以用sum-product 算法高效的求各个变量的边缘分布。
从贝叶斯网络来观察朴素贝叶斯
朴素贝叶斯可以看做是贝叶斯网络的特殊情况:即该网络中无边,各个节点都是独立的。
朴素贝叶斯朴素在哪里呢? —— 两个假设:
- 一个特征出现的概率与其他特征(条件)独立;
- 每个特征同等重要。