朴素贝叶斯(Naive Bayes)
朴素贝叶斯(Naive Bayes)是一种基于贝叶斯定理的简单概率分类器,其核心假设是在给定目标类的条件下,各特征相互独立(虽然这一假设在真实数据中往往不成立,但能显著简化计算)。该算法仅需为每个特征估计少量参数,训练和预测效率极高,具有良好的可扩展性,尤其适用于大规模高维数据场景。在文本分类、垃圾邮件识别、情感分析等领域,朴素贝叶斯凭借其高效性和可解释性被广泛采用。为防止因训练集中未出现的特征值导致的零概率问题,通常采用拉普拉斯平滑等技术对概率进行“加一”处理,提高模型稳定性。尽管独立性假设过于“朴素”,但在许多复杂的实际场景下,朴素贝叶斯仍能提供令人满意的分类性能。
算法原理
朴素贝叶斯是一种条件概率模型,其分类决策依据为最大后验概率(MAP)准则:
C ^ = arg max C P ( C ∣ x ) \hat{C} = \arg\max_{C} P(C\mid \mathbf{x}) C^=argCmaxP(C∣x)
其中,贝叶斯定理将后验概率分解为先验与似然的乘积:
P ( C ∣ x ) = P ( C ) P ( x ∣ C ) P ( x ) P(C\mid \mathbf{x}) = \frac{P(C)\,P(\mathbf{x}\mid C)}{P(\mathbf{x})} P(C∣x)=P(x)P(C)P(x∣C)
在实际分类时,由于分母 P ( x ) P(\mathbf{x}) P(x) 对所有类别均相同,可省略,只需比较 P ( C ) ∏ i P ( x i ∣ C ) P(C)\prod_i P(x_i\mid C) P(C)∏iP(xi∣C) 大小。
- 条件独立性假设:假设给定类别 (C) 后,各特征 x i x_i xi相互独立,使得
P ( x ∣ C ) = ∏ i = 1 n P ( x i ∣ C ) P(\mathbf{x}\mid C)=\prod_{i=1}^n P(x_i\mid C) P(x∣C)=i=1∏nP(xi∣C)
从而将高维联合概率问题转化为多个一维概率估计,极大降低了计算复杂度与数据需求。
贝叶斯定理直观描述
贝叶斯定理描述了在观察到证据 (B) 后,对假设 (A) 的信念如何更新:
P ( A ∣ B ) = P ( B ∣ A ) P ( A ) P ( B ) . P(A\mid B)=\frac{P(B\mid A)\,P(A)}{P(B)}. P(A∣B)=P(B)P(B∣A)P(A).
直观而言,它将先验概率( A A A 的总体概率)与似然函数(在 A A A发生时观测到 B B B的概率)相结合,以得到后验概率(观测 B B B后 A A A的概率)。
示例:想象一个忙碌的厨房,厨师需要根据嘈杂环境中听到的口令( y y y)和以往菜品点单频率(先验 P ( t ) P(t) P(t)),以及嘈杂情况下听错的概率模型(似然 P ( y ∣ t ) P(y\mid t) P(y∣t)),来估计真实点单菜品(后验 P ( t ∣ y ) P(t\mid y) P(t∣y)),以最大化出错最小化。
公式
-
贝叶斯定理:
P ( C ∣ x ) = P ( x ∣ C ) P ( C ) P ( x ) P(C\mid x) = \frac{P(x\mid C)\,P(C)}{P(x)} P(C∣x)=P(x)P(x∣C)P(C)
其中,- P ( C ) P(C) P(C):类别 C C C 的先验概率;
- P ( x ∣ C ) P(x\mid C) P(x∣C):在类别 C C C 下观测到特征向量 x x x 的概率;
- P ( x ) P(x) P(x):观测到 x x x 的总概率(对所有类别相同,可省略)。
-
朴素贝叶斯分类决策(MAP):
C ^ = arg max C P ( C ) ∏ i = 1 n P ( x i ∣ C ) . \hat{C} = \arg\max_C P(C)\prod_{i=1}^n P(x_i\mid C). C^=argCmaxP(C)i=1∏nP(xi∣C).
由于通常只关心分子部分,上式等价于选取使 P ( C ) ∏ i P ( x i ∣ C ) P(C)\prod_i P(x_i\mid C) P(C)∏iP(xi∣C) 最大的类别。
平滑方法
在离散特征建模中,如果某个特征值 (x_i) 在类别 (C) 的训练集中未出现,则 (P(x_i\mid C)=0),使得整体概率乘积归零。拉普拉斯平滑(加一平滑)通过对所有计数加上常数 (\alpha)(通常取 1),避免零概率:
P ( x i ∣ C ) = N x i , C + α N C + α ∣ V ∣ , P(x_i\mid C)=\frac{N_{x_i,C} + \alpha}{N_C + \alpha\,|V|}, P(xi∣C)=NC+α∣V∣Nxi,C+α,
其中
- N x i , C N_{x_i,C} Nxi,C 为类别 C C C 中特征取值 x i x_i xi 的出现次数;
- N C N_C NC 为类别 C C C 的样本总数;
- ∣ V ∣ |V| ∣V∣ 为特征可能取值的总数;
- α = 1 \alpha=1 α=1 时即为经典的拉普拉斯平滑。
常见问题
Q1: 朴素贝叶斯的“朴素”指什么?
A:
- 特征条件独立假设:假设所有特征在给定类别下相互独立。
- 目的:简化计算,但可能因忽略特征间相关性而损失模型精度。
Q2: 朴素贝叶斯的优缺点?
A:
优点 | 缺点 |
---|---|
训练和预测效率高(线性复杂度) | 强独立性假设可能不成立 |
对小规模数据表现良好 | 对输入数据分布敏感 |
支持多分类任务 | 特征相关性高时效果差 |
对缺失数据鲁棒性强 | 概率估计可能不准确 |
Q3: 如何处理连续型特征?
A:
- 高斯朴素贝叶斯:假设连续特征服从正态分布,使用概率密度函数估计:
P ( X i = x i ∣ Y = y ) = 1 2 π σ y 2 exp ( − ( x i − μ y ) 2 2 σ y 2 ) P(X_i=x_i|Y=y) = \frac{1}{\sqrt{2\pi\sigma_y^2}} \exp\left(-\frac{(x_i - \mu_y)^2}{2\sigma_y^2}\right) P(Xi=xi∣Y=y)=2πσy21exp(−2σy2(xi−μy)2)
变种类型
- 多项式朴素贝叶斯:适用于离散特征(如文本分类的词频)。
- 伯努利朴素贝叶斯:适用于二值特征(如文本的0-1出现表示)。
- 高斯朴素贝叶斯:适用于连续特征(假设服从正态分布)。