【第二章:机器学习与神经网络概述】03.类算法理论与实践-(2)朴素贝叶斯分类器

第二章: 机器学习与神经网络概述

第三部分:类算法理论与实践

第二节:朴素贝叶斯分类器

内容:条件独立假设、拉普拉斯平滑、分类准确率。

朴素贝叶斯是一类基于贝叶斯定理 且假设特征之间相互独立的概率分类模型,广泛应用于文本分类、垃圾邮件过滤、情感分析等任务中。


一、贝叶斯定理基础回顾

贝叶斯定理描述了在已知先验概率和条件概率下,如何更新后验概率:

  • P(C∣X):在给定特征 X 的情况下属于类别 C 的概率(后验概率)

  • P(C):类别的先验概率

  • P(X∣C):类别 C 下出现特征 X 的概率

  • P(X):所有类别下特征 X 的总概率(可忽略用于比较)


二、朴素假设:特征条件独立

朴素贝叶斯对贝叶斯定理进行了简化,假设特征之间相互独立,因此:

于是:

这大大简化了模型训练与推理过程。


三、模型训练与预测流程
  1. 统计先验概率 P(C):每个类别出现的频率

  2. 统计条件概率 :特征在每个类别中出现的频率

  3. 应用拉普拉斯平滑(见下)防止零概率问题

  4. 预测时计算各类别后验概率,选择概率最大的类别作为结果


四、拉普拉斯平滑(Laplacian Smoothing)

当某些特征在某类中未出现时,,使整体概率为零。

解决方法是对所有概率加一个正数(通常是1):

其中 k 是特征总数(对于多项式模型,k 为词汇表大小)。


五、朴素贝叶斯常见变体
模型类型 适用数据类型 条件概率分布
高斯贝叶斯 连续型数据 高斯正态分布
多项式贝叶斯 计数型特征(如词频) 多项式分布
伯努利贝叶斯 二元特征(如是否出现) 伯努利分布

六、Python 示例(使用 sklearn)
python 复制代码
from sklearn.naive_bayes import MultinomialNB
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.model_selection import train_test_split

# 示例数据
texts = ["good product", "very bad", "excellent service", "worst experience", "nice quality"]
labels = [1, 0, 1, 0, 1]  # 1=好评, 0=差评

# 文本向量化
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(texts)

# 训练模型
X_train, X_test, y_train, y_test = train_test_split(X, labels, test_size=0.2)
model = MultinomialNB()
model.fit(X_train, y_train)

# 测试准确率
accuracy = model.score(X_test, y_test)
print(f"测试准确率: {accuracy:.2f}")
python 复制代码
测试准确率: 0.00

七、评价指标
  • 准确率(Accuracy):预测正确的样本数 / 总样本数

  • 精确率(Precision)、召回率(Recall)、F1-score:在不均衡样本中更常用

  • 混淆矩阵:展示预测与真实类别的分布情况


八、优点与局限
优点 说明
计算效率高 适用于大规模数据
简单易实现 理解与部署容易
可解释性强 输出为概率,可量化信心度
局限 说明
特征独立假设不现实 实际数据特征常常相关
对连续变量建模能力弱 需假设高斯分布或离散化
相关推荐
初级炼丹师(爱说实话版)17 分钟前
算法面经常考题整理(3)大模型
算法
Neil今天也要学习1 小时前
永磁同步电机无速度算法--基于相位超前校正的LESO
算法·1024程序员节
码农多耕地呗1 小时前
力扣226.翻转二叉树(java)
算法·leetcode·职场和发展
IT古董3 小时前
【第五章:计算机视觉-项目实战之推荐/广告系统】2.粗排算法-(3)理解粗排模型之在线部分:在线架构及对双塔的应用
算法·1024程序员节
大数据张老师3 小时前
数据结构——平衡二叉树
数据结构·算法·查找
py有趣3 小时前
LeetCode算法学习之合并区间
学习·算法·leetcode
m0_748233643 小时前
单调栈详解【C/C++】
c语言·c++·算法·1024程序员节
郝学胜-神的一滴4 小时前
Linux中的`fork`函数详解:深入解析
linux·服务器·开发语言·c++·算法
Theodore_10224 小时前
机器学习(9)正则化
人工智能·深度学习·机器学习·计算机视觉·线性回归·1024程序员节
莫叫石榴姐4 小时前
半导体晶圆制造关于设备制程几个核心概念及映射关系
人工智能·机器学习·制造