朴素贝叶斯
约 1053 字大约 4 分钟
2025-05-28
步骤 1:分类问题概述
朴素贝叶斯是一种监督学习算法,主要用于分类任务。它基于贝叶斯定理,计算在给定特征下每个类别的概率,并选择后验概率最大的类别作为预测结果。
- 目标:给定特征和类别标签的数据集,预测新样本的类别,最大化后验概率。
- 关键假设:给定类别标签时,特征条件独立(即“朴素”假设)。
- 优势:计算高效、适用于高维数据、可扩展性强。
- 局限性:特征独立性假设在实际中可能不成立,特征高度相关时效果下降。
步骤 2:朴素贝叶斯模型
数据集定义:设 X={x1,x2,…,xn} 为样本特征集合,xi∈Rd,对应类别 yi∈{C1,C2,…,Ck}。
贝叶斯定理:
P(Ck∣x)=P(x)P(Ck)⋅P(x∣Ck)
其中:
- P(Ck):类别 Ck 的先验概率
- P(x∣Ck):给定类别的特征似然
- P(x):归一化常数(可省略)
朴素假设:
特征条件独立:
P(x∣Ck)=i=1∏dP(xi∣Ck)
决策规则:
y^=argCkmaxP(Ck)i=1∏dP(xi∣Ck)
由于 P(x) 对所有类别相同,可忽略不计。
常用似然模型:
高斯朴素贝叶斯(适用于连续特征):
P(xi∣Ck)=2πσk,i21exp(−2σk,i2(xi−μk,i)2)
多项式朴素贝叶斯(适用于词频等计数数据):
P(xi∣Ck)=∑j(xj+α)xi+α
伯努利朴素贝叶斯(适用于二值特征):
P(xi∣Ck)=P(xi=1∣Ck)xi⋅(1−P(xi=1∣Ck))1−xi
步骤 3:算法流程
步骤 3.1:训练阶段
估计先验概率:
P(Ck)=总样本数类别 Ck 的样本数
估计似然函数:
- 高斯模型下:计算每个特征在每个类别下的均值 μk,i 和方差 σk,i2。
- 多项式/伯努利模型下:统计每个特征在各类别中的出现频率,并应用平滑(如 α=1 的拉普拉斯平滑)。
步骤 3.2:预测阶段
计算后验概率并预测类别:
y^=argCkmaxP(Ck)i=1∏dP(xi∣Ck)
数值稳定性改进(对数形式):
y^=argCkmax[logP(Ck)+i=1∑dlogP(xi∣Ck)]
步骤 4:处理现实场景
拉普拉斯平滑(解决零概率问题):
P(xi∣Ck)=类别 Ck 的总计数+α⋅V特征 xi 在类别 Ck 的计数+α
其中 V 是特征可能的取值个数,α 通常取 1。
选择合适模型:
特征类型 建议模型 连续特征 高斯朴素贝叶斯 词频计数 多项式朴素贝叶斯 是否出现 伯努利朴素贝叶斯 处理特征相关性:
若特征间相关性强,建议使用特征选择或降维技术(如 PCA)降低冗余性。
步骤 5:优化与评估
参数优化:
- 平滑参数 α 可通过网格搜索或交叉验证调优。
- 特征选择(如基于信息增益、卡方检验)可提升模型性能。
模型评估指标:
指标 说明 准确率 正确分类样本占比 精确率 正确预测为正的样本占所有预测为正的比例 召回率 正确预测为正的样本占所有实际为正的比例 F1 分数 精确率与召回率的调和平均 ROC/AUC 用于衡量二分类器性能 混淆矩阵 分类结果的详细结构分析 交叉验证 如 K 折交叉验证,衡量模型泛化能力 实现建议:
- 仅高斯模型对特征缩放敏感,建议标准化。
- 使用
scikit-learn可快速实现三种朴素贝叶斯模型:
提示
朴素贝叶斯适合高维稀疏数据,特别在文本分类中表现良好。但在特征高度相关场景下,可考虑使用逻辑回归、SVM 或集成方法替代。
