当前位置: 首页 > news >正文

朴素贝叶斯(Naive Bayes)完整解析:概率论经典算法

1️⃣ 什么是朴素贝叶斯?

朴素贝叶斯(Naive Bayes,NB)是一类基于贝叶斯定理(Bayes Theorem)条件独立假设的分类算法。

核心思想:

通过计算样本属于不同类别的后验概率,选择概率最大的类别作为预测结果。

NB 适合文本分类、垃圾邮件识别等场景,是经典的概率生成模型。

2️⃣ 核心思想与贝叶斯公式

贝叶斯定理

对于一个类别 C_k 和特征向量 X = (x_1, x_2, \dots, x_n)

P(C_k|X) = \frac{P(X|C_k)P(C_k)}{P(X)}

  • P(C_k):先验概率

  • P(X|C_k):似然概率

  • P(C_k|X):后验概率

  • P(X):样本出现的概率

NB 算法选择最大后验概率类别:

\hat{y} = \arg\max_{C_k} P(C_k|X) 

3️⃣ 条件独立假设(朴素性)

特征条件独立:

P(X|C_k) = \prod_{i=1}^n P(x_i|C_k) 

  • 简化了多维联合概率的计算

  • 实际上特征往往并不完全独立,但在多数任务中效果依然良好

最终分类公式: 

\hat{y} = \arg\max_{C_k} P(C_k) \prod_{i=1}^n P(x_i|C_k) 

4️⃣ 数学公式推导(平滑处理)

实际问题中,某些特征条件概率可能为 0,导致整体概率为 0。

解决方案:拉普拉斯平滑(Laplace Smoothing)

P(x_i|C_k) = \frac{N_{x_i, C_k} + \alpha}{N_{C_k} + \alpha m} 

  • N_{xi,Ck}​​:类别 C_k​ 中特征 x_i 出现的次数

  • N_{C_k}:类别 C_k中样本总数

  • m:特征取值个数

  • \alpha > 0:平滑系数(默认 \alpha=1

5️⃣ 常见变体

  1. 多项式朴素贝叶斯(Multinomial NB)

    • 常用于文本分类(词频)

  2. 高斯朴素贝叶斯(Gaussian NB)

    • 特征服从高斯分布时适用

  3. 伯努利朴素贝叶斯(Bernoulli NB)

    • 特征为二元(0/1)时使用

6️⃣ 优缺点总结

✅ 优点

  1. 理论简单、计算高效

  2. 对小数据集效果好

  3. 可处理多分类问题

  4. 对缺失数据不敏感

❌ 缺点

  1. 条件独立假设过于强,特征相关时效果差

  2. 对连续特征需做分布假设

  3. 无法捕捉特征之间的交互

7️⃣ Python 实现(sklearn)

文本分类示例

from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score# 加载文本数据
data_train = fetch_20newsgroups(subset='train', remove=('headers', 'footers', 'quotes'))
data_test = fetch_20newsgroups(subset='test', remove=('headers', 'footers', 'quotes'))# 特征提取(词频)
vectorizer = CountVectorizer()
X_train = vectorizer.fit_transform(data_train.data)
X_test = vectorizer.transform(data_test.data)# 多项式朴素贝叶斯模型
nb_clf = MultinomialNB(alpha=1.0)
nb_clf.fit(X_train, data_train.target)# 预测与评估
y_pred = nb_clf.predict(X_test)
print("测试集精度:", accuracy_score(data_test.target, y_pred))

8️⃣ 应用场景

  • 文本分类:垃圾邮件检测、新闻分类

  • 情感分析:正负面评论判断

  • 医疗诊断(概率模型)

  • 适合特征维度高、样本量大的离散特征数据集

📚 总结

  • Naive Bayes 是基于概率的生成模型,核心是 贝叶斯公式 + 条件独立假设

  • 对特征维度高(如文本)的任务非常高效

  • 缺点是条件独立假设过强,但实践中效果依旧稳定

http://www.dtcms.com/a/314777.html

相关文章:

  • Scrapy 工作流程深度解析:引擎驱动的完美协作
  • API接口的应用及重要性
  • Nestjs框架: @nestjs/config 配置模块详解与实践
  • 鸿蒙开发-端云一体化--云存储
  • Python-初学openCV——图像预处理(七)——模板匹配、霍夫变换
  • 注解知识学习
  • 腾讯混元重磅开源:四款小尺寸模型全面发布
  • 文件包含篇
  • elementPlus的el-switch在初始化时会调用一次change事件
  • CCLink转ModbusRTU网关控制除湿机配置案例—PLC组态篇
  • AI大模型的基本知识
  • 如何解决GIT合并冲突问题
  • Python----大模型(量化 Quantization)
  • SimpleDateFormat早期Java 日期格式化工具详解
  • 强干扰下车位识别准确率↑28%!陌讯时序建模方案在充电桩占位检测的实战解析
  • 数据结构与算法:哈希函数的应用及一些工程算法
  • Git基础玩法简单描述
  • AR技术赋能能源勘探:从数据可视化到智能预测的革命性突破
  • AR技术赋能轨道交通培训:虚实结合提升学习效率
  • NumPy 重要知识点总结
  • Anthropic的商业模式与战略
  • 2.4- WPF中非 UI 线程上安全地更新 UI 控件方法
  • QT之QLocalSocket下的两进程互相守护
  • Nexus配置npm私有仓库
  • 开源的现代数据探索和可视化平台:Apache Superset 使用 Docker Compose
  • 单片机裸机程序设计架构
  • MLIR Introduction
  • Linux84 SHELL编程:流程控制 前瞻(1)
  • 数字信号处理_编程实例1
  • 京东开源新框架DripTable:轻量高效的企业级动态列表解决方案