4

概率图模型系列(1):朴素贝叶斯分类器

 2 years ago
source link: https://allenwind.github.io/blog/7624/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

本篇是概率图模型系列的第一篇,首先介绍朴素贝叶斯分类器和Logistic模型。

概率图模型,由节点和边描述,使用观察节点表示可观察的数据,隐含节点表示潜在的信息或知识,而边可以分为有向边与无向边,表示数据与知识之间的概率关系。简而言之,点表示知识,边表示知识之间的概率关系。

概率图只是一种形象的说法,即便没有图这个形象的东西,我们依旧可以很便捷地建立概率模型,因此,我们这里强调,图是至于人的直观来说的,我们应该更关注模型背后的概率思想或信息论视角理解模型。

接下来预计写一系列关于图模型的文章,包括朴素贝叶斯模型、最大熵模型、隐马尔可夫模型(HMM)、最大熵马尔可夫模型(MEMM)、条件随机场(CRF)、主题模型等等,当然视时间而定更新。

贝叶斯网络与马尔可夫网络

概率图模型由节点和边构成。其中节点对应着随机变量分为隐含节点表示知识和观测节点表示数据;边对应着随机变量的依赖或相关关系分为有向边表示单向的依赖关系和无向边表示相互依赖关系。

概率图模型分为两大类:

  • 贝叶斯网络(Bayesian Network)用一个有向无环图(DAG)结构表示
  • 马尔可夫网络(Markov Network)用一个无向图的网络结构表示

因此,概率图模型可以简单概况为:

  • 节点:观察节点,表示数据;隐含节点,表示潜在知识
  • 边:有向边,单向依赖,箭头指向的节点依赖发出节点,即贝叶斯网络;无向边,互相依赖,即马尔可夫网络

下图概况常见的图模型(来自《统计自然语言处理》):

概率图模型中最基本的两个模型是Logistic模型和朴素贝叶斯模型,接下来一一介绍。

生成式模型和判别式模型

概率图模型可以分为生成式模型和判别式模型。假设可观测到的变量集为XX,需要预测的变量集为YY,那么生成式模型则是对联合概率分布P(X,Y)P(X,Y)进行建模,在获得XX的情况下,推断YY只需要计算

P(Y|X)=P(X,Y)P(X)P(Y|X)=P(X,Y)P(X)

生成式模型的代表有朴素贝叶斯分类器、HMM、ngrams语言模型等等。生成式模型认为XX由YY决定。

而判别式模型则是直接对

P(Y|X)P(Y|X)

进行进行建模,代表模型有最大熵模型、CRF、MEMM以及大多数深度学习建模模型。这类模型认为YY由XX​决定。

贝叶斯公式

回想贝叶斯公式,可以参考过去文章神经的贝叶斯公式,这里简单讲讲,

P(Y|X)=P(X|Y)P(Y)P(X)P(Y|X)=P(X|Y)P(Y)P(X)

平淡无期却威力无穷。其背后的意义是,

后验=先验×似然证据后验=先验×似然证据

贝叶斯公式写成分类器的形式,

p(Ck∣x)=p(Ck) p(x∣Ck)p(x)p(Ck∣x)=p(Ck)p(x∣Ck)p(x)

其中p(Ck)p(Ck)为先验分布,条件概率p(x∣Ck)p(x∣Ck)为似然。p(x)p(x)为证据。

朴素贝叶斯分类器

朴素贝叶斯模型可以见到地理解为,

朴素贝叶斯模型=贝叶斯公式+特征条件独立朴素贝叶斯模型=贝叶斯公式+特征条件独立

贝叶斯公式不难写成分类器的形式,根据特征xx推断样本所属的类别CkCk,

p(Ck∣x)=p(Ck) p(x∣Ck)p(x)p(Ck∣x)=p(Ck)p(x∣Ck)p(x)

最大化后验概率获得所属类别,

^k=argmaxk∈{1,…,K}p(Ck) p(x∣Ck)p(x)k^=argmaxk∈{1,…,K}p(Ck)p(x∣Ck)p(x)

朴素贝叶斯的学习需要估计p(Ck)p(Ck)和p(x∣Ck)p(x∣Ck),使用极大似然估计(MLE)后续会提及。注意到分母部分p(x)p(x)不参与分类计算。朴素贝叶斯之所以朴素是因为这里引入,特征条件独立假设

p(x|Ck)=∏ip(x(i)|Ck)p(x|Ck)=∏ip(x(i)|Ck)

p(x|Ck)p(x|Ck)示意图,

因此,朴素贝叶斯分类器的目标函数是后验概率最大化,分类器可以写成,

^k=argmaxk∈{1,…,K}p(Ck)∏ip(x(i)|Ck)k^=argmaxk∈{1,…,K}p(Ck)∏ip(x(i)|Ck)

就是说在特征 xx 条件下,类别为 CkCk 的概率。然而,这个计算还是很难的,为此我们弱化一下模型,认为特征 xx 的各个分量是条件独立的,这也是朴素的来源。为此,根据贝叶斯公式和特征条件独立假设,有如下推导,

^y=argmaxk∈{1,…,K} p(Ck) p(x∣Ck)p(x)=argmaxk∈{1,…,K} p(Ck) p(x∣Ck)=argmaxk∈{1,…,K} p(Ck)n∏i=1p(x(i)∣Ck)=argmaxk∈{1,…,K}(logp(Ck)+n∑i=1logp(x(i)|Ck))y^=argmaxk∈{1,…,K}p(Ck)p(x∣Ck)p(x)=argmaxk∈{1,…,K}p(Ck)p(x∣Ck)=argmaxk∈{1,…,K}p(Ck)∏i=1np(x(i)∣Ck)=argmaxk∈{1,…,K}(log⁡p(Ck)+∑i=1nlog⁡p(x(i)|Ck))

估计p(Ck)p(Ck)和p(x∣Ck)p(x∣Ck),使用极大似然估计(MLE)。这么简单的模型,但是威力巨大,早期 Google 使用朴素贝叶斯方法进行邮件分类。

参数估计与平滑化

使用极大似然估计来估计来自贝叶斯公式的模型的参数,熟悉贝叶斯统计的同学可能觉得这操作比较奇诡。我想,这就是朴素贝叶斯的名称来源之一。

贝叶斯分类器可以使用最大似然方法估计p(Ck)p(Ck)和p(x∣Ck)p(x∣Ck)。其中先验概率p(Ck)p(Ck)的估计如下,

p(Ck)=N∑i=1I(yi=Ck)N,k=1,…,Kp(Ck)=∑i=1NI(yi=Ck)N,k=1,…,K

条件概率p(x∣Ck)p(x∣Ck)估计如下,

P(X(j)=ajl∣Y=Ck)=N∑i=1I(x(j)i=ajl,yi=Ck)N∑i=1I(yi=Ck)P(X(j)=ajl∣Y=Ck)=∑i=1NI(xi(j)=ajl,yi=Ck)∑i=1NI(yi=Ck)

然而,最大似然方法估计可能会出现概率值为0的情况,进而影响后验概率的计算,影响模型性能。为此,可以在最大似然方法估计的基础上引入参数平滑。

先验概率p(Ck)p(Ck)加λλ平滑后的估计如下,

p(Y=Ck)=N∑i=1I(yi=Ck)+λN+Kλ,k=1,…,Kp(Y=Ck)=∑i=1NI(yi=Ck)+λN+Kλ,k=1,…,K

当λ=1λ=1时,称为拉普拉斯平滑,这也是最简单最常用的平滑方法。如果λ=0λ=0则退化成极大似然估计。

条件概率p(x∣Ck)p(x∣Ck)加λλ平滑后的估计如下,

P(X(j)=ajl∣Y=Ck)=N∑i=1I(x(j)i=ajl,yi=Ck)+λN∑i=1I(yi=Ck)+SjλP(X(j)=ajl∣Y=Ck)=∑i=1NI(xi(j)=ajl,yi=Ck)+λ∑i=1NI(yi=Ck)+Sjλ

同样,如果λ=0λ=0则退化成极大似然估计。

高斯贝叶斯分类器

如果似然函数p(x∣Ck)p(x∣Ck)为,

P(xi∣Ck)=1√2πσ2Ckexp(−(xi−μCk)22σ2Ck)P(xi∣Ck)=12πσCk2exp⁡(−(xi−μCk)22σCk2)

那么朴素贝叶斯分类器称为高斯贝叶斯分类器。

Multinomial naive Bayes

朴素贝叶斯分类器可以推广到多项朴素贝叶斯(Multinomial naive Bayes)分类器。多项分布下,似然p(x∣Ck)p(x∣Ck)为,

p(x∣Ck)=(∑ixi)!∏ixi!∏ipkixip(x∣Ck)=(∑ixi)!∏ixi!∏ipkixi

然后套用上面的推导并取对数,

^y=argmaxk∈{1,…,K} p(Ck) p(x∣Ck)=argmaxk∈{1,…,K} p(Ck) (∑ixi)!∏ixi!∏ipkixi=argmaxk∈{1,…,K}logp(Ck)+n∑i=1xi⋅logpkiy^=argmaxk∈{1,…,K}p(Ck)p(x∣Ck)=argmaxk∈{1,…,K}p(Ck)(∑ixi)!∏ixi!∏ipkixi=argmaxk∈{1,…,K}log⁡p(Ck)+∑i=1nxi⋅log⁡pki

注意一些干扰项,其实推导是不难的。看明白后,你会发现,什么,这不就是一个线性分类器吗?

本文是概率图模型系列的第一篇,主要讲述概率图的基本概念以及两个模型:朴素贝叶斯分类器和Logistic模型。下篇计划写最大熵模型。

[1] 《统计学习方法》

[2] https://en.wikipedia.org/wiki/Naive_Bayes_classifier

[3] https://scikit-learn.org/stable/modules/naive_bayes.html

[4] 《统计自然语言处理》


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK