贝叶斯分类器(10X单细胞和10X空间转录组的基础算法)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了贝叶斯分类器(10X单细胞和10X空间转录组的基础算法)相关的知识,希望对你有一定的参考价值。

参考技术A

贝叶斯分类器,即是以贝叶斯决策理论为基础的分类器,什么是贝叶斯决策理论呢?

贝叶斯决策论是贝叶斯学派关于统计推断(根据已有资料或者说数据,对未知问题作出判断)的理论,要理解贝叶斯理论,就不得不和他的 “老对手”——频率学派(经典学派)一起聊。

首先我们看看统计推断的问题是什么。statistical inference 是学统计的目的,即根据样本数据,对总体进行统计推断(假设检验 或 预测).是指统计学中研究如何根据样本数据去推断总体数量特征的方法。统计推断主要可以分为两大类:一类是参数估计问题;另一类是假设检验问题。

关于这些问题,从20世纪上半页至今,频率学派和贝叶斯学派两大学派一直在辩论,也一直互相不服。贝叶斯学派的发展在二十世纪滞后于频率学派,所以我们在学校教材上学到的统计推断的方法基本上都是频率学派的,比如最大似然估计、卡方检验、T检验、矩估计等等。

两个学派争论的点是什么呢?

现在应该对贝叶斯学派的思想有了一点认识了。那我们看看在分类问题上贝叶斯分类器是怎么一回事呢?

贝叶斯分类器是一类分类算法的总称,贝叶斯定理是这类算法的核心,因此统称为贝叶斯分类。

在分类问题中,我们可以根据样本 x 计算出在样本中各个类别 c 出现的概率,即后验概率 P(c|x) ,根据之前对贝叶斯统计推断的介绍,还需要引入各种推断结果所带来的损失,我们定义 λ i,j 为将 c j 误分为 c i 时所产生的损失,根据误判出现的概率和导致的损失,可以计算出错误分类是产生的期望损失,称之为“风险”:

后验概率最大化与风险最小化 :对于二分类问题,λ要么等于0要么等于1

i = i ,即正确分类时, λ ii = 0,所以可以计算此时所以条件风险(该条件下的风险)为

P(c|x) 就是根据样本 x 进行分类,想想以前讲过的KNN、LR等,所做的不就是这个工作吗,这种直接对 P(c|x) 进行建模来预测 c 的方法,都叫做 判别式模型(Discriminative Model) ,判别式模型不考虑样本的产生模型,直接研究预测模型。如果我们换一种思路,先得到联合分布 P(c,x) ,再得到后验概率 P(c|x) ,这就是 生成式模型(Generative Model) ,顾名思义,生成式模型会研究样本的产生模型,判别式模型和生成式模型都是监督学习中的概念。

显然生成模型比判别模型包含更多的信息,可以做到更多的事,实际上由生成模型可以得到判别模型,但由判别模型得不到生成模型,贝叶斯分类器就是从生成模型的角度来解决分类问题,怎么实现呢?

P(c) 是类“先验”(prior)概率; P(c|x) 是样本x相对于类标记c的类条件概率(class-conditional probability); P(c|x) 是用于归一化的“证据”(evidence)因子。

类先验概率 P(c) 表达了样本空间中各类样本所占的比例,根据大数定律,当训练集包含充足的独立同分布样本时, P(c) 可通过各类样本出现的频率来进行估计. P(x) 看起来是样本出现的概率,对给定样本 x ,从形式上也可以看出 与样本的类标记无关 ,因此估计 P(c|x) 的问题就转化为如何基于训练数据D来估计先验 P(c) P(x|c) 的问题,所以问题的重点就是怎么求 P(x|c) ,得到 P(x|c)
就能得到联合概率 P(x,c) ,也能能得到一个贝叶斯分类器了。那么怎么完成呢?能直接通过样本中的频率来统计吗?
P(x|c) 来说,由于它涉及关于x 所有属性的联合概率,直接根据样本出现的频率来估计将会遇到严重的困难,例如,假设样本的 d 个属性都是二值的,则样本空间将有 2 d 种可能的取值,在现实应用中,这个值往往远大于训练样本数m,也就是说,很多样本取值在训练集中根本没有出现,直接使用频率来估计 P(x|c) 显然不可行,因为"未被观测到"与"出现概率为零"通常是不同的。
那应该怎么计算呢?先说第一种方法: 最大似然估计
要求得类条件概率 P(x|c) ,如果我们什么信息都没有肯定是不行的,所以一般假设我们知道它的概率分布,然后用一定方法来求出分布的参数即可。对于求分布的参数,一般使用最大似然估计MLE,虽然MLE是频率学派的估计方法,不过好用的东西大家一起用嘛,贝叶斯学派有个差不多的估计方法:最大后验估计MAP,不过MAP比MLE多了个作为因子的先验概率P(θ),更复杂一些,这些内容咱们下回再讲。

说回最大似然估计,说到最大似然估计就不得不问一句,什么是似然?这里需要好好的说道说道,只有搞清楚似然的概念才能理解怎么计算它。

极大似然是频率学派的参数估计方法,似然即参数的似然,是由频率学派建立的、极大似然估计中的重要概念。从前文可知,频率学派认为参数是确定值,参数的似然就表达了给定样本 x 下某参数为这个确定值的可能性。在计算上,参数的似然值等于在该参数下事件发生的概率 L(θ|x) = P(X = x|θ) 。也就是说,似然值可以用概率来计算,但似然却不是概率,因为频率学派的体系下, 参数不是随机变量,故似然不是概率 ,概率是在确定参数的情况下,观测结果发生的可能性,概率的对象是概率空间中的事件,而似然的对象是参数。
因此,似然函数定义为:似然函数 L(θ|x) 是给定样本x时,关于参数θ的函数,其在数值上等于给定参数θ后变量X的概率

只是似然函数的自变量,并不是概率空间里的取值。这也从一方面说明似然是不满足概率定理(柯尔莫果洛夫公理)的三个条件的,似然并不是概率。

关于似然,知乎上还有一个很形象的例子,他山之石,可以借鉴一下, 如何理解似然函数?HiTao的回答

其中的核心观点是:似然和概率两个函数有着不同的名字,却源于同一个函数。 P(x|θ) 是一个有着两个变量的函数。 如果,你将θ设为常量,则你会得到一个概率函数(关于x的函数);如果,你将x设为常量你将得到似然函数(关于θ的函数)
举一个例子:
有一个硬币,它有 θ 的概率会正面向上,有 1-θ 的概率反面向上。现有正反序列:

现在应该对似然有了一定的了解了,我们回忆一下贝叶斯分类器说到哪了,对:

我们已经知道,似然即参数的似然,表示给定样本下,参数 θ 为真值的可能性,所以,极大似然估计就是以最大化参数的似然值的方法来估计参数的真值的算法。

对于一批样本,共有M个属性值和N个类别,那么 x 就是一个M维向量,要求得[图片上传中...(image-e088df-1618739940424-51)],其实就是要求

取对数得到对数似然函数,连乘转换为累加,求导之类的计算更加方便:

注意:

知乎上大神详细介绍了从散度的角度解读极大似然估计: 知乎 - 微调的回答 ,跟随大神的脚步学习一下(原回答了引入了期望,我觉得其实不用期望也没问题):

MLE的第一步是假设分布(或者已有一个分布),接下来就是通过最大化 X 发生的概率来求得分布参数,认为这就是最可能真实的分布,这个思路其实还是有一点绕的,凭什么说 X 发生的概率最大的参数就是真的参数呢?我们的目的是求出真实分布,最直观的思路应该是看我们 算出来的分布跟真实分布的相似程度 ,这刚好可以通过散度来解释。
这里的散度是机器学习的散度,也就是信息论中的散度,与物理上的散度不太一样。机器学习中我们常用的散度是KL散度(KL-Divergence)。信息论中, KL(P||Q) 可以理解为:用来衡量在同一份数据P下,使用P的编码方案和Q的编码方案的平均编码长度的差异,如果我们把真实的分布 P θ 和计算得到的分布

是不是根本就是一样的?所以其实如果我们正向考虑极大似然估计,当模型是条件概率分布,损失函数是对数损失函数时,极大似然估计就是做 经验风险最小化 ;如果我们反过来考虑,即上面从散度推导的过程,MLE就是在寻找最接近真实分布的分布。

以上一篇提到的西瓜好坏分类为例:
西瓜数据集如下图:

显然样本共有 M=6 个属性值和 N=2 个类别,首先根据样本估计类先验概率 P(好瓜)=8/17 = 0.47 , P(坏瓜)=9/17 = 0.53 ,然后为每个属性估计条件概率 P(x|c) ,要求 P(x|c)
,应该假设两个六维概率分布,比如我们假设样本为6元正态分布:

是一个6*6的正定矩阵。
然后分别写出似然函数的对数形式:

讲完了极大似然估计的理论和操作,再来看看它和一个跟它很像的算法最大后验估计MAP的关系。

极大似然估计MLE是频率学派的参数估计方法,最大后验估计MAP是贝叶斯学派的参数估计方法。因此,同样是参数估计的问题,MLE中参数是确定值,故定义为 P(x,θ) ;MAP中参数是一个随机变量,故定义为
P(θ|c) ,是一个后验概率,受到先验 P(c) 和样本 x 的共同作用,这就是他们最本质的区别了,由此可得到其计算过程的区别:极大似然估计MLE对参数 θ 的估计是:

我们发现原来MAP与MLE在计算上的不同就是多了一个先验概率项,因此如果有一个合理的先验的话,MAP会比MLE对样本数据的依赖更小一些,如果数据量很大的话他们基本就是一样的了,以我们上一篇中的抛硬币例子来说:

如果按极大似然估计计算,取对数求导后计算得到 θ=0.7 ,这似乎不太符合我们的常识,如果是用MAP呢?对抛硬币问题,我们先验是

我们将贝叶斯分类器转化为了求解 P(x|c) 的问题,使用极大似然估计是我们介绍的第一个求解方法,它还存在一些不足:

求解 P(x|c) 问题的另一个方法:朴素贝叶斯。

根据 贝叶斯分类器(1)贝叶斯决策论概述、贝叶斯和频率、概率和似然 ,我们对贝叶斯分类器所要解决的问题、问题的求解方法做了概述,将贝叶斯分类问题转化成了求解 P(x|c) 的问题,上面我们分析了第一个求解方法:极大似然估计。这里我们来介绍一个更加简单的 P(x|c) 求解方法,并在此基础上讲讲常用的一个贝叶斯分类器的实现:朴素贝叶斯分类器(Naive Bayes classifier)。

我们的目标是通过对样本的学习来得到一个分类器,以此来对未知数据进行分类,即求后验概率 P(x|c)
。在[贝叶斯分类器(1)贝叶斯决策论概述、贝叶斯和频率、概率和似然】( https://www.jianshu.com/p/88b6ada7fa0e )中,我们描述了贝叶斯分类器是以生成式模型的思路来处理这个问题的,如下面的公式所示,贝叶斯分类器通过求得联合概率 P(x,c) 来计算 P(x|c) ,并将联合概率 P(x,c) 转化成了计算类先验概率 P(c) 、类条件概 P(x|c) 、证据因子 P(x)

朴素贝叶斯实现了我们的梦想!朴素贝叶斯中的朴素就是对多属性的联合分布做了一个大胆的假设,即 x
n 个维度之间相互独立:

朴素贝叶斯分类器伯努利模型

【中文标题】朴素贝叶斯分类器伯努利模型【英文标题】:Naïve Bayes Classifier Bernoulli model 【发布时间】:2016-02-14 07:14:10 【问题描述】:

我正在对发票和收据进行分类,我将使用伯努利模型。

这是朴素贝叶斯分类器:

P(c|x) = P(x|c) x P(c) / P(x)

我知道如何计算 P(c) 类先验概率,因为我们假设所有单词都是独立的,所以我们不需要 P(x)。

现在的公式是这样的:P(c|x) = P(x|c) x P(c) 为了计算 P(x|c),我们使用似然法计算所有单词的概率 P (c|X) = P(x1|c)P(x2|c)*P(x3|c)....

我的问题是在计算似然性之后,我是否需要将它与 P(c) 相乘,P(c|X) = P(x1|c)P(x2|c)*P(x3|c) ...*个人电脑)?

【问题讨论】:

【参考方案1】:

P(c|x) 等于P(x|c) P(c)。它是成比例的,就像你在分类过程中所做的那样

cl(x) = arg max_c P(c|x) = arg max_c P(x|c) P(c) / P(x) = arg max_c P(x|c) P(c)

这适用于每个概率分布,其中P(x)>0,此时不需要任何贝叶斯假设。这只是一个简单的贝叶斯定理 + 注意到 P(x) 只是这个等式中的一个正常数。

因此,您从不实际计算P(c|x),您只需计算P(x|c) P(c),这将为您提供相同的分类。我希望这表明您的分类必须基于P(x|c)P(c) 的乘积,正如您所指出的P(x|c) = PROD_i P(x_i|c)(这里我们使用朴素贝叶斯关于独立性的假设,而不是之前) .

【讨论】:

以上是关于贝叶斯分类器(10X单细胞和10X空间转录组的基础算法)的主要内容,如果未能解决你的问题,请参考以下文章

10X单细胞(10X空间转录组)聚类算法之Louvain

10X单细胞(10X空间转录组)多样本批次效应去除分析之RCA2

10X单细胞转录组整合、转录组 && ATAC整合分析之VIPCCA

10X单细胞(10X空间转录组)之一张UMAP图同时展示两个基因的表达情况

10X单细胞(10X空间转录组)Seurat分析之QQplot的详细解释及绘制

10X Genomics单细胞转录组测序