Skip to content

朴素贝叶斯 (Naive Bayes)

核心思想

朴素贝叶斯基于贝叶斯定理特征条件独立假设,是一种高效的生成式分类器。虽然"朴素"假设在实践中几乎不成立,但朴素贝叶斯在文本分类等场景通常表现优异。

贝叶斯定理

P(Y=ckx)=P(xY=ck)P(Y=ck)P(x)
  • 先验概率P(Y=ck)
  • 似然P(xY=ck)
  • 后验概率P(Y=ckx)
  • 证据P(x)(对所有类别相同,可忽略)

条件独立假设

假设给定类别 ck 后,所有特征相互独立:

P(xY=ck)=P(x1,x2,,xdY=ck)=j=1dP(xjY=ck)

这极大地降低了需要估计的参数数量:从 O(K|X|d) 降为 O(Kd)

分类决策

y^=argmaxckP(Y=ck)j=1dP(xjY=ck)

取对数避免下溢:

y^=argmaxck[lnP(Y=ck)+j=1dlnP(xjY=ck)]

不同分布假设下的似然模型

高斯朴素贝叶斯

假设每个特征服从正态分布:

P(xjY=ck)=12πσkj2exp((xjμkj)22σkj2)

参数估计:

μkj=1|Dk|i:yi=ckxij,σkj2=1|Dk|i:yi=ck(xijμkj)2

多项式朴素贝叶斯

适用于离散计数特征(如词频):

P(xjY=ck)=Nkj+αNk+αd

其中 Nkj 为类别 ck 中特征 j 出现的总次数,α 为平滑参数。

伯努利朴素贝叶斯

适用于二值特征(出现/不出现):

P(xjY=ck)=pkjxj(1pkj)1xj

拉普拉斯平滑

当某个特征值在某类别中从未出现时,P(xjY=ck)=0,导致整个后验概率为零。

拉普拉斯平滑为每个计数加 α(通常 α=1):

P^(xj=ajlY=ck)=i:yi=ck1(xij=ajl)+α|Dk|+αSj

其中 Sj 是特征 j 的可能取值数。

代码对应

bash
python -m pipelines.classification.naive_bayes