朴素贝叶斯算法原理

朴素贝叶斯算法原理

朴素贝叶斯分类器(Naive Bayes Classifier)的优点是运算时间短、数学原理清晰,我在MNIST和CIFAR-10数据集上测试,错误率分别为15.74%和58.45%。

实在看不懂,不如先复(yu)习一下概率统计;如果觉得是我写的太烂,周志华教授的《机器学习》书中,朴素贝叶斯分类器写的很清楚。

朴素贝叶斯算法

定义 x 为样本, ω 为标记,则将样本和标记用概率公式表示:

  • P(ω) 为先验概率,代表 ω 在所有标记中出现的概率。
  • P(x|ω) 为似然,代表在 ω 标记下,出现样本 x 的概率。
  • P(ω|x) 为后验概率,代表 x 出现的情况下,样本标记为 ω 的概率。
  • P(x) 代表样本 x 出现的概率。

训练样本

根据Bayes公式,后验概率可以由先验概率和似然表示:

P(ω|x)=P(ω)P(x|ω)P(x)

在分类问题中,我们认为 P(x) 为常数, P(ω) P(x|ω) 可由训练样本计算得到, P(ω|x) 即为所求的结果(在证据 x 出现的前提下,取得标记为 ω 的概率)。上式可以表示为:
P(ω|x)P(ω)P(x|ω)

在分类时,我们通过上式计算不同 ω 值所对应的 P(ω)P(x|ω) ,找到最大值对应的 ω ,即可完成分类。因此,我们将分类问题转化成了根据样本,计算先验概率 P(ω) 和似然 P(x|ω) 的问题。

先验概率 P(ω) 可以用样本中标记为 ω 的数量占总样本数之比表示:

P(ω)=DωD

但是,根据样本,我们无法直接计算似然 P(x|ω) 。在朴素贝叶斯分类算法中,我们假设样本的每个维度之间相互独立,此时似然就可以计算了。

对于离散的样本空间,第 i 个维度的似然可以表示为:

P(xi|ω)=Dω,iDω

考虑到部分样本取值可能没有在全部样本中出现,按上式计算时,没有出现的项就会取值为0。为了解决此问题, P(ω) P(xi|ω) 的表达式被修正为
P(ω)=Dω+1D+NP(xi|ω)=Dω,i+1Dω+Ni

N 为标记 ω 可能取值的总数, Ni 为样本 x 可能取值的总数。

若样本连续,且假设样本满足高斯分布,似然可表示为

p(xi|ω)=12πσω,iexp(xiμω,i)22σ2ω,i

高斯分布的系数 σ μ 可以由最大似然估计(Maximum Likelihood Estimation, MLE)得到:
μ^=1Nj=0Nxj=x¯

σ^2=1Nj=0N(xjx¯)2

对于全部维度的似然 P(x|ω)

P(x|ω)=i=1NP(xi|ω)

至此,我们即可根据给定的样本空间,计算先验概率 P(ω) 和似然 P(x|ω)

分类

在分类时,因为先验概率 P(ω) 和似然 P(x|ω) 已知,待分类数据 x 已知, P(ω)P(x|ω) 可以方便地求得。

又因为

P(ω|x)P(ω)P(x|ω)=P(ω)i=1NP(xi|ω)

找出使 P(ω|x) 最大的 ωi ωi 即为分类结果。

需要注意的是,在实际应用中,样本 x 的维数通常很高,而概率值均小于1。因此,为避免浮点数连乘出现0,将上式两边取对数

logP(ω|x)logP(ω)+i=1NlogP(xi|ω)

对每个 ωi 计算 logP(ωi)+Ni=1logP(xi|ωi) ,使该式最大的 ωi 即为分类结果。

版本信息

1.0 20171118 initial commit

知识共享许可协议
本作品采用知识共享署名-相同方式共享 3.0 未本地化版本许可协议进行许可。

你可能感兴趣的:(朴素贝叶斯算法原理)