人工智能之核心基础 机器学习 第六章 朴素贝叶斯

人工智能之核心基础 机器学习

第六章 朴素贝叶斯


文章目录

  • [人工智能之核心基础 机器学习](#人工智能之核心基础 机器学习)
    • [6.1 贝叶斯定理基础](#6.1 贝叶斯定理基础)
      • [📌 核心公式:用已知反推未知](#📌 核心公式:用已知反推未知)
      • [💡 举个生活例子:疾病检测](#💡 举个生活例子:疾病检测)
    • [6.2 朴素贝叶斯的"朴素"假设](#6.2 朴素贝叶斯的“朴素”假设)
      • [🔑 核心假设:**特征条件独立**](#🔑 核心假设:特征条件独立)
    • [6.3 常见朴素贝叶斯模型](#6.3 常见朴素贝叶斯模型)
      • [📊 举例说明](#📊 举例说明)
    • [6.4 朴素贝叶斯的优缺点与适用场景](#6.4 朴素贝叶斯的优缺点与适用场景)
      • [✅ 优点](#✅ 优点)
      • [❌ 缺点](#❌ 缺点)
      • [🎯 最佳适用场景](#🎯 最佳适用场景)
    • [6.5 实战案例 + 代码实现](#6.5 实战案例 + 代码实现)
    • [🎯 本章总结](#🎯 本章总结)
  • 资料关注

6.1 贝叶斯定理基础

📌 核心公式:用已知反推未知

贝叶斯定理 告诉我们:

在看到某些证据后,如何更新对某件事发生的信念(概率)

公式如下:

P ( Y ∣ X ) = P ( X ∣ Y ) ⋅ P ( Y ) P ( X ) P(Y|X) = \frac{P(X|Y) \cdot P(Y)}{P(X)} P(Y∣X)=P(X)P(X∣Y)⋅P(Y)

  • P ( Y ∣ X ) P(Y|X) P(Y∣X):后验概率 ------ 看到数据 X X X 后,类别 Y Y Y 的概率(我们要预测的!)
  • P ( X ∣ Y ) P(X|Y) P(X∣Y):似然 ------ 如果是类别 Y Y Y,出现数据 X X X 的可能性
  • P ( Y ) P(Y) P(Y):先验概率 ------ 类别 Y Y Y 本身出现的频率(比如垃圾邮件占30%)
  • P ( X ) P(X) P(X):证据 ------ 数据 X X X 出现的总概率(对所有类别都一样,可忽略)

目标 :对每个类别 Y Y Y 计算 P ( Y ∣ X ) P(Y|X) P(Y∣X),选概率最大的那个!


💡 举个生活例子:疾病检测

  • 先验:人群中得病概率 P ( 病 ) = 1 % P(\text{病}) = 1\% P(病)=1%
  • 检测准确率:得病者检出阳性 P ( 阳 ∣ 病 ) = 99 % P(\text{阳}|\text{病}) = 99\% P(阳∣病)=99%
  • 假阳性率:健康人误检 P ( 阳 ∣ 健康 ) = 5 % P(\text{阳}|\text{健康}) = 5\% P(阳∣健康)=5%

问:你检测阳性,真得病的概率是多少?

用贝叶斯:

P ( 病 ∣ 阳 ) = 0.99 × 0.01 0.99 × 0.01 + 0.05 × 0.99 ≈ 16.7 % P(\text{病}|\text{阳}) = \frac{0.99 \times 0.01}{0.99 \times 0.01 + 0.05 \times 0.99} \approx 16.7\% P(病∣阳)=0.99×0.01+0.05×0.990.99×0.01≈16.7%

👉 即使检测阳性,真实得病概率也不高!这就是先验的重要性。


6.2 朴素贝叶斯的"朴素"假设

🔑 核心假设:特征条件独立

给定类别 Y Y Y,所有特征 x 1 , x 2 , . . . , x n x_1, x_2, ..., x_n x1,x2,...,xn 相互独立

即:

P ( X ∣ Y ) = P ( x 1 , x 2 , . . . , x n ∣ Y ) = P ( x 1 ∣ Y ) ⋅ P ( x 2 ∣ Y ) ⋅ . . . ⋅ P ( x n ∣ Y ) P(X|Y) = P(x_1, x_2, ..., x_n | Y) = P(x_1|Y) \cdot P(x_2|Y) \cdot ... \cdot P(x_n|Y) P(X∣Y)=P(x1,x2,...,xn∣Y)=P(x1∣Y)⋅P(x2∣Y)⋅...⋅P(xn∣Y)

❗ 这个假设在现实中几乎不成立 (比如"免费"和"赢钱"在垃圾邮件中常一起出现)

但神奇的是------即使假设错误,朴素贝叶斯依然效果很好!

为什么能work?

  • 分类只需比较相对大小,不需要精确概率
  • 对噪声和无关特征鲁棒
  • 训练快、参数少,不易过拟合

6.3 常见朴素贝叶斯模型

根据特征类型不同,选择不同概率分布:

模型 特征类型 概率分布 典型场景
高斯朴素贝叶斯 连续数值 假设特征服从正态分布 身高、体重、温度等连续值
多项式朴素贝叶斯 离散计数 特征为词频/次数 文本分类(TF、TF-IDF)
伯努利朴素贝叶斯 二值特征 特征为0/1(是否出现) 短文本、关键词存在性

📊 举例说明

  • 邮件内容 :"免费 免费 赢钱"
    • 多项式NB:统计词频 → "免费":2, "赢钱":1
    • 伯努利NB:只看是否出现 → "免费":1, "赢钱":1

📌 文本分类首选:多项式NB(保留词频信息)


6.4 朴素贝叶斯的优缺点与适用场景

✅ 优点

优势 说明
训练极快 只需统计频率,无需迭代
内存占用小 存储每个特征的分布参数
对小样本有效 即使数据少也能工作
天然支持多分类 直接计算所有类别概率
对噪声鲁棒 无关特征影响小

❌ 缺点

劣势 说明
独立性假设太强 实际特征常相关
无法捕捉特征交互 比如"不+好" ≠ "不好"
概率估计不准 输出概率不可靠(但排序可用)
零概率问题 某词在训练集中未出现 → 概率为0 → 整体为0

🔧 解决零概率拉普拉斯平滑 (Laplace Smoothing)

给每个计数加1,避免0概率


🎯 最佳适用场景

  • 文本分类(垃圾邮件、情感分析、新闻分类)
  • 实时预测(因推理速度极快)
  • 高维稀疏数据(如词袋模型)
  • ❌ 不适合:需要精确概率、特征高度相关、连续特征非高斯分布

💡 行业事实

尽管深度学习流行,朴素贝叶斯仍是工业界文本分类的baseline首选


6.5 实战案例 + 代码实现

案例1:垃圾邮件过滤(多项式NB)

python 复制代码
from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import CountVectorizer, TfidfTransformer
from sklearn.naive_bayes import MultinomialNB
from sklearn.pipeline import Pipeline
from sklearn.metrics import classification_report

# 构造垃圾邮件 vs 正常邮件数据(简化版)
emails = [
    "Free money now!!!", 
    "Win a million dollars!", 
    "Hey, how are you?", 
    "Meeting tomorrow at 3pm",
    "Claim your prize today!",
    "Can we reschedule the call?"
]
labels = [1, 1, 0, 0, 1, 0]  # 1=垃圾, 0=正常

# 创建管道:词袋 → TF-IDF → 多项式NB
text_clf = Pipeline([
    ('vect', CountVectorizer()),          # 生成词频
    ('tfidf', TfidfTransformer()),        # 转TF-IDF
    ('clf', MultinomialNB(alpha=1.0))     # alpha=拉普拉斯平滑参数
])

# 训练
text_clf.fit(emails, labels)

# 预测新邮件
new_emails = ["Congratulations! You won free cash!", "Let's have lunch"]
preds = text_clf.predict(new_emails)
for email, pred in zip(new_emails, preds):
    print(f"'{email}' → {'垃圾邮件' if pred == 1 else '正常邮件'}")

输出:

复制代码
'Congratulations! You won free cash!' → 垃圾邮件
'Let's have lunch' → 正常邮件

案例2:电影评论情感分析(正面/负面)

python 复制代码
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 模拟数据
reviews = [
    "This movie is amazing!", 
    "I love the acting", 
    "Terrible film, waste of time",
    "Boring and slow",
    "Great story and visuals",
    "Awful dialogue"
]
sentiments = [1, 1, 0, 0, 1, 0]  # 1=正面, 0=负面

# 划分数据
X_train, X_test, y_train, y_test = train_test_split(
    reviews, sentiments, test_size=0.3, random_state=42
)

# 向量化 + 训练
vectorizer = TfidfVectorizer()
X_train_vec = vectorizer.fit_transform(X_train)
X_test_vec = vectorizer.transform(X_test)

nb = MultinomialNB(alpha=0.5)
nb.fit(X_train_vec, y_train)

# 评估
y_pred = nb.predict(X_test_vec)
print("准确率:", accuracy_score(y_test, y_pred))

# 查看预测概率
proba = nb.predict_proba(X_test_vec)
for i, text in enumerate(X_test):
    print(f"'{text}' → 正面概率: {proba[i][1]:.2f}")

案例3:高斯NB ------ 鸢尾花分类(连续特征)

python 复制代码
from sklearn.naive_bayes import GaussianNB
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

gnb = GaussianNB()
gnb.fit(X_train, y_train)

print("准确率:", gnb.score(X_test, y_test))

🎯 本章总结

  • 朴素贝叶斯 = 贝叶斯定理 + 特征独立假设
  • 文本分类用多项式NB,连续数据用高斯NB
  • 训练快、内存小、对小数据友好
  • 虽"朴素",但在文本任务中常胜!

💡 建议

下次做文本分类项目,先跑一个朴素贝叶斯作为baseline

它可能比你想象的更强,而且几行代码就能搞定!


资料关注

公众号:咚咚王

gitee:https://gitee.com/wy18585051844/ai_learning

《Python编程:从入门到实践》

《利用Python进行数据分析》

《算法导论中文第三版》

《概率论与数理统计(第四版) (盛骤) 》

《程序员的数学》

《线性代数应该这样学第3版》

《微积分和数学分析引论》

《(西瓜书)周志华-机器学习》

《TensorFlow机器学习实战指南》

《Sklearn与TensorFlow机器学习实用指南》

《模式识别(第四版)》

《深度学习 deep learning》伊恩·古德费洛著 花书

《Python深度学习第二版(中文版)【纯文本】 (登封大数据 (Francois Choliet)) (Z-Library)》

《深入浅出神经网络与深度学习+(迈克尔·尼尔森(Michael+Nielsen)》

《自然语言处理综论 第2版》

《Natural-Language-Processing-with-PyTorch》

《计算机视觉-算法与应用(中文版)》

《Learning OpenCV 4》

《AIGC:智能创作时代》杜雨+&+张孜铭

《AIGC原理与实践:零基础学大语言模型、扩散模型和多模态模型》

《从零构建大语言模型(中文版)》

《实战AI大模型》

《AI 3.0》

相关推荐
Elastic 中国社区官方博客1 天前
Elasticsearch:上下文工程 vs. 提示词工程
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
轴测君1 天前
SE Block(Squeeze and Excitation Block)
深度学习·机器学习·计算机视觉
正宗咸豆花1 天前
LangGraph实战:构建可自愈的多智能体客服系统架构
人工智能·系统架构·claude
檐下翻书1731 天前
文本创作进化:从辅助写作到内容策划的全面赋能
人工智能
仙人掌_lz1 天前
AI代理记忆设计指南:从单一特征到完整系统,打造可靠智能体
人工智能
昨日之日20061 天前
Qwen3-TTS - 一句话指挥AI配音 自由定制你的专属声音 十种语言随心说 支持50系显卡 一键整合包下载
人工智能
创客匠人老蒋1 天前
AI赋能创始人表达:从个人智慧到组织能力的战略跃迁
人工智能·创始人ip·创客匠人
搞科研的小刘选手1 天前
【数字经济专题会议】第三届粤港澳大湾区数字经济与人工智能国际学术会议(DEAI 2026)
人工智能·aigc·软件工程·电子商务·数字经济·经济学·学术会议
星爷AG I1 天前
9-12 场景感知(AGI基础理论)
人工智能·agi
lyx49491 天前
Open Interpreter + 智谱GLM-4:零基础搭建能操控电脑的 AI Agent
人工智能·agent·ai本地助手