联合概率与联合分布、条件概率与条件分布、边缘概率与边缘分布、贝叶斯定理、生成模型(Generative Model)和判别模型(Discriminative Model)的区别

版权声明:站在巨人的肩膀上学习。 https://blog.csdn.net/zgcr654321/article/details/83478212

在看生成模型和判别模型之前,我们必须先了解联合概率与联合分布、条件概率与条件分布、边缘概率与边缘分布、贝叶斯定理的概念。

联合概率与联合概率分布:

假设有随机变量X与Y, 此时,P(X=a,Y=b)用于表示X=a且Y=b的概率。这类包含多个条件且所有条件同时成立的概率称为联合概率。联合概率并不是其中某个条件的成立概率, 而是所有条件同时成立的概率。联合概率的一览表称为联合分布。

边缘概率与边缘概率分布:

与联合概率对应的,P(X=a)或P(Y=b)这类仅与单个随机变量有关的概率称为边缘概率。边缘概率的一览表称为边缘分布。

联合概率与边缘概率的关系:

求和符号表示“穷举Y可取的值b后,由所有与这些值对应的(...)相加得到的和”。

类似地,表示“穷举X可取的值a后,由所有与这些值对应的(...)相加得到的和”。

举例:

按照上图的联合概率分布表:

边缘概率Pr(X=x1)=4/32+2/32+2/32+8/32=16/32。

边缘概率Pr(Y=y1)=4/32+2/32+1/32+1/32=8/32。

条件概率与条件概率分布:

在条件Y=b成立的情况下,X=a的概率,记作P(X=a|Y=b)或P(a|b)。条件概率的分布简称条件分布,即已知两个相关的随机变量X和Y,随机变量Y在条件{X=x}下的条件概率分布是指当已知X的取值为某个特定值x之时,Y的概率分布。

联合概率、边缘概率、条件概率之间的关系:

“XY的联合概率”=“X基于Y的条件概率”乘以“Y的边际概率” 。

离散型分布的情况下:

Pr(X=x, Y=y)为“XY的联合概率”; 

Pr(X=x)为“X的边际概率”; 

Pr(X=x | Y=y)为“X基于Y的条件概率”; 

Pr(Y=y)为“Y的边际概率”。

上式可简写成Pr(X=x, Y=y) = Pr(X=x | Y=y) * Pr(Y=y) 。这就是离散型分布下联合概率、边际概率、条件概率之间的转换计算公式

连续型分布的情况下:

只需要将“累加”换成“积分”,就是连续型分布下联合概率、边际概率、条件概率之间的转换计算公式

举例:

如下图所示.我们将在16张扑克牌中随机抽取一张,并用X表示这张牌的颜色(红色或黑色),用Y表示它的类型(数字牌或人头牌)。试求X与Y的联合分布及X的边缘分布。

我们只需统计在各种条件下, 这16张牌中有几张符合条件即可得到答案。

X与Y的联合分布如下表所示。

X的边缘分布则如下所示。

P(X =红色) = P(X =红色,Y=数字牌) +P(X =红色,Y=人头牌) = 3/16 + 6/16 = 9/16
P(X =黑色) = P(X =黑色,Y=数字牌) +P(X =黑色,Y=人头牌) = 6/16 + 1/16 = 7/16

我们可以像上面这样通过联合分布计算边缘分布。然而, 如果只知道边缘分布, 我们无法借此求得相应的联合分布。如下所示, 在很多情况下, 即使边缘分布相同, 联合分布也可能不同

如:

条件概率:

仍然只考虑上面的例子,"X=红色"的世界中有三分之一的"Y=数字牌",三分之二的"Y=人头牌"。那么我们可得:

上面两式分别表示:

在条件X=红色成立时,Y=数宇牌的条件概率是1/3;

在条件X=红色成立时,Y=人头牌的条件概率是2/3。

这两个式子统称为:在条件X=红色下Y的条件分布。

注意:

”在条件X=红色下Y的条件分布” 也是一种"Y的概率分布” ,因此“穷举Y可取的值后,所有与这些值对应的概率之和为1"。

同理你也可以写出X=黑色下Y的条件分布。

还是上面的例子,我们再看下面这张图:

图中,红色的面积为9/16,其中三分之二是人头牌,因此“红色的人头牌” 的面积(即概率)如下:

(2/3)*(9/16)=6/16

该式的左侧表示P(Y=人头牌|X=红色)*P(X=红色),右侧表示P(X=红色,Y=人头牌)。

还记得联合概率、边际概率、条件概率之间的转换计算公式吗?就是下面这个:

“XY的联合概率”=“X基于Y的条件概率”乘以“Y的边际概率” 。

我们可以看到上面的例子“红色的人头牌” 的面积(即概率)如下:(2/3)*(9/16)=6/16 就是用这个计算公式算出的。

贝叶斯定理:

贝叶斯定理用来描述两个条件概率之间的关系。贝叶斯公式提出的依据是当分析样本大到接近总体数时,样本中事件发生的概率将接近于总体中事件发生的概率

贝叶斯公式解决的是一些原因X无法直接观测、测量,而我们希望通过其结果Y来反推出原因X的问题,也就是知道一部分先验概率,来求后验概率的问题。

记P(A)、P(B)分别表示事件A和事件B发生的概率,则:

P(A|B):表示事件B发生的情况下,事件A发生的概率

P(AB):表示事件A和事件B同时发生的概率

乘法法则(其实就是条件概率公式的变形):

P(A∩B) = P(A)*P(B|A)=P(B)*P(A|B)

可推导出贝叶斯公式

P(A|B) = P(B|A)*P(A) / P(B)或也可变形为P(B|A) = P(A|B)*P(B) / P(A)

先验概率:

事件发生前的预判概率。可以是基于历史数据的统计,可以由背景常识得出,也可以是人的主观观点给出。一般都是单独事件概率,如P(x),P(y)。

后验概率:

事件发生后求的反向条件概率;或者说,基于先验概率求得的反向条件概率。概率形式与条件概率相同。

条件概率:

一个事件发生后另一个事件发生的概率。一般的形式为P(x|y)表示y发生的条件下x发生的概率。

对于贝叶斯公式:P(y|x) = ( P(x|y) * P(y) ) /P(x),有

P(y|x)是后验概率,一般是我们求解的目标。

P(x|y)是条件概率,又叫似然概率,一般是通过历史数据统计得到(即通过一个已知的小样本统计得到)。

P(y) 是先验概率,一般都是人主观给出的。贝叶斯中的先验概率一般特指它。

P(x)其实也是先验概率,只是在贝叶斯的很多应用中不重要(因为只要最大后验不求绝对值),需要时往往用全概率公式计算得到。

举例:

假设y是文章种类,是一个枚举值;x是向量,表示文章中各个单词的出现次数。

在拥有训练集的情况下,显然除了后验概率P(y|x)中的x来自一篇新文章时无法得到,p(x),p(y),p(x|y)都是可以在抽样集合上统计出的。

对于上面的例子,如果采用最大似然理论:

则认为使P(x|y)达到最大值的类别y,就是新文章所属的类别。即Max P(x|y) = Max p(x1|y)*p(x2|y)*...p(xn|y), for all y。

对于上面的例子,如果采用贝叶斯理论:

认为需要增加先验概率p(y),因为有可能某个y是很少出现的类别,即使P(x|y)很高,也很可能不是它。

因此y = Max P(x|y) * P(y),其中p(y)一般是数据集里统计出来的。

生成模型(Generative Model):

又叫产生式模型。估计的是联合概率分布(joint probability distribution),p(class, context)=p(class|context)*p(context)。即由数据学习联合概率密度分布P(X,Y),然后求出条件概率分布P(Y|X)作为预测的模型,即生成模型:P(Y|X)= P(X,Y)/ P(X)。

基本思想是利用尽可能多(理想情况下是无穷多)样本,首先学习建立样本的联合概率概率密度模型P(X,Y),然后再得到后验概率P(Y|X)模型(需要先计算P(X)以得到后验概率),再利用后验概率模型作为预测模型进行分类。生成方法关心的是给定输入x产生输出y的生成关系。这种方法一般建立在统计学和Bayes理论的基础之上。

在机器学习中,生成模型或用于直接对数据建模(用概率密度函数对观察到的样本数据建模),或作为生成条件概率密度函数的中间步骤。

生成模型的特点:

一般主要是对后验概率建模,从统计的角度表示数据的分布情况,能够反映同类数据本身的相似度。只关注自己的inclass本身,不关心到底 decision boundary在哪里;

生成模型还原出联合概率分布,而判别方法不能;

生成模型的学习收敛速度更快、即当样本容量增加的时候,学到的模型可以更快地收敛于真实模型;

当存在隐变量时,仍然可以用生成模型学习,此时判别模型不能用。

生成模型的优点:

实际上带的信息要比判别模型丰富;

研究单类问题比判别模型灵活性强;

模型可以通过增量学习得到;

能用于数据不完整(missing data)情况。

生成模型的缺点:

学习和计算过程比较复杂。

主要应用:

典型的生成模型有:朴素贝叶斯法、马尔科夫模型、高斯混合模型、probabilistic context free grammars(概率上下文无关文法)、RBM(受限波兹曼机)、Averaged one-dependence estimators(平均一依赖估计量)、Latent Dirichlet allocation(潜在狄利克雷分布)。

判别模型(Discriminative Model):

又可以称为条件模型或条件概率模型。估计的是条件概率分布(conditional distribution),p(class|context)。即给定观测变量x和目标变量y的条件模型,数据直接学习决策函数y=f(X)或者条件概率分布P(y|x)作为预测的模型。

判别方法关心的是对于给定的输入X,应该预测什么样的输出Y。利用正负例和分类标签,主要关心判别模型的边缘分布。其目标函数直接对应于分类准确率判别模型多数放在分类)。判别模型寻找不同类别之间的最优分类面,反映的是异类数据之间的差异。

判别模型的优点:

分类边界更灵活,比使用纯概率方法或生产模型得到的更高级;

能清晰的分辨出多类或某一类与其他类之间的差异特征;

在聚类、视角变化、部分遮挡、尺度改变等方面效果较好;

适用于较多类别的识别;

判别模型的性能比生成模型要简单,比较容易学习。

判别模型的缺点:

不能反映训练数据本身的特性,即能力有限,可以告诉你的是1还是2,但没有办法把整个场景描述出来

缺少生成模型的优点,即先验结构的不确定性

黑盒操作,即变量间的关系不清楚,不可视

主要应用:

典型的判别模型包括:线性回归、神经网络、k近邻法、感知机、决策树、逻辑斯蒂回归模型、最大熵模型、SVM(支持向量机)、boosting方法和条件随机场等。

生成模型和判别模型的区别和关系:

两者之间的关系:

生成模型可以得到判别模型,但由判别模型得不到生成模型

两者之间的区别:

生成模型是学得各个类别各自的特征(即可看成学得多个模型),可用这些特征数据和要进行分类的数据进行比较,看新数据和学得的模型中哪个最相近,进而确定新数据属于哪一类。判别模型是学得一个分类面(即学得一个模型),该分类面可用来区分不同的数据分别属于哪一类;

生成模型是建立在所有变量上面的联合概率模型,而判别模型只是定义在目标变量上的条件概率模型。因此判别模型相对比生成模型有局限性,生成模型还可以作为预测任何一个变量的模型;

判别模型不需要建立观测变量的概率模型,一般情况下它不能预测复杂的观测和预测值关系。另外,判别模型本质上是有监督的,想要变成无监督会比较困难;

如果观测数据是符合联合概率分布,那么是用Maximize Likelihood求得模型参数是常见的方法。如果建立的概率模型只是所有变量的一个子集,那么直接使用条件概率模型可能会更有效。当然具体模型选择会由相应应用决定。

举例:

要确定一只羊是山羊还是绵羊,用判别模型的方法是先从历史数据中学习到模型,然后通过提取这只羊的特征x来预测出这只羊f(X)是山羊的概率,是绵羊的概率。用生成模型的方法是我们可以根据山羊的特征首先学习出一个山羊模型,然后根据绵羊的特征学习出一个绵羊模型。然后从这只羊中提取特征,放到山羊模型P(w1|X)中看概率是多少,再放到绵羊模型P(w2|X)中看概率是多少,如果P(w1|X)>P(w2|X),那么我们就认为X是属于w1类,即该羊属于山羊

再举一个机器学习中的例子:

在机器学习中:

决策函数Y=f(X):你输入一个X,它就输出一个Y,这个Y与一个阈值比较,根据比较结果判定X属于哪个类别。如两类(w1和w2)分类问题,如果Y大于阈值,X就属于类w1,如果小于阈值就属于类w2。这样就得到了该X对应的类别了。

条件概率分布P(Y|X):你输入一个X,它通过比较它属于所有类的概率,然后输出概率最大的那个作为该X对应的类别。如:如果P(w1|X)大于P(w2|X),那么我们就认为X是属于w1类的。

在过去,人们认为判别模型在分类问题上比生成模型表现更加好(比如Logistic Regression与Naive Bayesian的比较,再比如HMM与Linear Chain CRF的比较)。 

但生成模型也有一些难以代替的地方,比如更容易结合无标注数据做semi-or-un-supervised learning(半监督或无监督学习)。

猜你喜欢

转载自blog.csdn.net/zgcr654321/article/details/83478212