【机器学习】每日一讲-朴素贝叶斯公式

news2025/4/18 16:31:15

文章目录

      • **一、朴素贝叶斯公式详解**
        • **1. 贝叶斯定理基础**
        • **2. 从贝叶斯定理到分类任务**
        • **3. 特征独立性假设**
        • **4. 条件概率的估计**
      • **二、在AI领域的作用**
        • **1. 文本分类与自然语言处理(NLP)**
        • **2. 推荐系统**
        • **3. 医疗与生物信息学**
        • **4. 实时监控与异常检测**
        • **5. 多模态数据处理**
      • **三、推导过程示例(以文本分类为例)**
      • **四、代码实现(Python)**
      • **五、总结**
    • 贝叶斯公式 vs. 朴素贝叶斯公式​
      • **贝叶斯公式 vs. 朴素贝叶斯公式**
        • **1. 贝叶斯公式(Bayes' Theorem)**
        • **2. 朴素贝叶斯公式(Naive Bayes Formula)**
      • **两者的核心区别**
      • **为什么叫“朴素”(Naive)?**
      • **为什么需要“朴素”假设?**
      • **示例说明**
      • **总结**
    • 推荐

一、朴素贝叶斯公式详解

朴素贝叶斯(Naive Bayes)是一种基于 贝叶斯定理 的分类算法,其核心思想是通过概率建模解决分类问题。它假设特征之间 相互独立(即“朴素”的由来),尽管这一假设在现实中可能不成立,但能大幅简化计算,并在实际任务中表现出色。

1. 贝叶斯定理基础

贝叶斯定理描述了条件概率之间的关系:
P ( A ∣ B ) = P ( B ∣ A ) ⋅ P ( A ) P ( B ) P(A|B) = \frac{P(B|A) \cdot P(A)}{P(B)} P(AB)=P(B)P(BA)P(A)
P ( A ∣ B ) P(A|B) P(AB):在事件B发生的条件下,事件A发生的概率(后验概率)。
P ( B ∣ A ) P(B|A) P(BA):在事件A发生的条件下,事件B发生的概率(似然概率)。
P ( A ) P(A) P(A) P ( B ) P(B) P(B):事件A和B的先验概率(独立于其他事件的初始概率)。

2. 从贝叶斯定理到分类任务

在分类问题中,给定输入特征 X = { x 1 , x 2 , . . . , x n } X = \{x_1, x_2, ..., x_n\} X={x1,x2,...,xn},目标是找到最可能的类别 C k C_k Ck。根据贝叶斯定理,计算条件概率:
P ( C k ∣ X ) = P ( X ∣ C k ) ⋅ P ( C k ) P ( X ) P(C_k|X) = \frac{P(X|C_k) \cdot P(C_k)}{P(X)} P(CkX)=P(X)P(XCk)P(Ck)
由于分母 P ( X ) P(X) P(X) 对所有类别相同,只需最大化分子:
P ( C k ∣ X ) ∝ P ( C k ) ⋅ P ( X ∣ C k ) P(C_k|X) \propto P(C_k) \cdot P(X|C_k) P(CkX)P(Ck)P(XCk)

3. 特征独立性假设

朴素贝叶斯假设所有特征在给定类别时条件独立,因此:
P ( X ∣ C k ) = P ( x 1 ∣ C k ) ⋅ P ( x 2 ∣ C k ) ⋅ . . . ⋅ P ( x n ∣ C k ) = ∏ i = 1 n P ( x i ∣ C k ) P(X|C_k) = P(x_1|C_k) \cdot P(x_2|C_k) \cdot ... \cdot P(x_n|C_k) = \prod_{i=1}^n P(x_i|C_k) P(XCk)=P(x1Ck)P(x2Ck)...P(xnCk)=i=1nP(xiCk)
最终分类公式为:
C ^ = arg ⁡ max ⁡ C k P ( C k ) ⋅ ∏ i = 1 n P ( x i ∣ C k ) \hat{C} = \arg\max_{C_k} P(C_k) \cdot \prod_{i=1}^n P(x_i|C_k) C^=argCkmaxP(Ck)i=1nP(xiCk)
C ^ \hat{C} C^:预测的类别。
P ( C k ) P(C_k) P(Ck):类别 C k C_k Ck 的先验概率(训练集中类别出现的频率)。
P ( x i ∣ C k ) P(x_i|C_k) P(xiCk):在类别 C k C_k Ck 下,特征 x i x_i xi 的条件概率。

4. 条件概率的估计

不同数据类型需采用不同的概率分布模型:

数据类型模型公式适用场景
离散特征(如文本词频)多项式朴素贝叶斯 P ( x i ) P(x_i) P(xi) ( C k ) (C_k) (Ck)= N x i , C k + α N C k + α n \frac{N_{x_i,C_k} + \alpha}{N_{C_k} + \alpha n} NCk+αnNxi,Ck+α
连续特征(如温度)高斯朴素贝叶斯 P ( x i ) P(x_i) P(xi) ( C k ) (C_k) (Ck)= 1 2 π σ C k 2 e − ( x i − μ C k ) 2 2 σ C k 2 \frac{1}{\sqrt{2\pi\sigma_{C_k}^2}} e^{-\frac{(x_i - \mu_{C_k})^2}{2\sigma_{C_k}^2}} 2πσCk2 1e2σCk2(xiμCk)2
二值特征(如是否出现)伯努利朴素贝叶斯 P ( x i ) P(x_i) P(xi) ( C k ) (C_k) (Ck) = p ⋅ x i + ( 1 − p ) ( 1 − x i ) p \cdot x_i + (1-p)(1 - x_i) pxi+(1p)(1xi)
平滑处理(如拉普拉斯平滑):防止未出现的特征导致概率为0(例如, α = 1 \alpha=1 α=1 时为加1平滑)。

二、在AI领域的作用

1. 文本分类与自然语言处理(NLP)

垃圾邮件检测:根据邮件中单词的频率计算概率,例如“免费”“中奖”等词在垃圾邮件中概率更高。
情感分析:判断评论的情感极性(正面/负面),例如“优秀”“糟糕”等词的条件概率不同。
新闻分类:将新闻按主题分类(如体育、科技),基于关键词(如“进球”“算法”)的条件概率。

2. 推荐系统

协同过滤:结合用户历史行为(如点击、购买)和物品特征(如电影类型),预测用户兴趣。
点击率预测:根据用户特征(年龄、性别)和广告内容,预测广告被点击的概率。

3. 医疗与生物信息学

疾病诊断:根据症状(发烧、咳嗽)和检查指标(白细胞计数),计算患者患某类疾病的概率。
基因数据分析:基于基因突变位点和表达水平,预测癌症亚型或药物反应。

4. 实时监控与异常检测

金融风控:通过交易金额、频率、地点等特征,识别信用卡欺诈行为。
工业物联网(IIoT):根据传感器数据(温度、振动),预测设备故障概率。

5. 多模态数据处理

图像分类:结合图像标签和像素统计特征(如颜色直方图),分类图像内容。
语音识别:基于声学特征(MFCC系数)和上下文词汇,识别语音内容。

三、推导过程示例(以文本分类为例)

假设训练数据包含以下邮件及其标签:

邮件文本类别
“免费 赢取 现金”垃圾邮件
“会议 安排 附件”正常邮件
“领取 奖品 现在”垃圾邮件
“项目 更新 审核”正常邮件

步骤1:计算先验概率
P ( 垃圾邮件 ) = 2 4 = 0.5 P(\text{垃圾邮件}) = \frac{2}{4} = 0.5 P(垃圾邮件)=42=0.5
P ( 正常邮件 ) = 2 4 = 0.5 P(\text{正常邮件}) = \frac{2}{4} = 0.5 P(正常邮件)=42=0.5

步骤2:计算条件概率
假设新邮件为 “免费 奖品”,统计各单词在类别中的出现频率(使用拉普拉斯平滑, α = 1 \alpha=1 α=1):

单词垃圾邮件中出现次数正常邮件中出现次数
免费10
奖品10
赢取10
现金10
会议01
安排01
附件01
领取10
现在10
项目01
更新01
审核01

垃圾邮件下词汇总数:6(2封邮件,每封3词)
P ( 免费 ∣ 垃圾邮件 ) = 1 + 1 6 + 12 = 2 18 = 0.111 P(\text{免费} | \text{垃圾邮件}) = \frac{1+1}{6+12} = \frac{2}{18} = 0.111 P(免费垃圾邮件)=6+121+1=182=0.111
P ( 奖品 ∣ 垃圾邮件 ) = 1 + 1 6 + 12 = 0.111 P(\text{奖品} | \text{垃圾邮件}) = \frac{1+1}{6+12} = 0.111 P(奖品垃圾邮件)=6+121+1=0.111

正常邮件下词汇总数:6
P ( 免费 ∣ 正常邮件 ) = 0 + 1 6 + 12 = 1 18 = 0.055 P(\text{免费} | \text{正常邮件}) = \frac{0+1}{6+12} = \frac{1}{18} = 0.055 P(免费正常邮件)=6+120+1=181=0.055
P ( 奖品 ∣ 正常邮件 ) = 0 + 1 6 + 12 = 0.055 P(\text{奖品} | \text{正常邮件}) = \frac{0+1}{6+12} = 0.055 P(奖品正常邮件)=6+120+1=0.055

步骤3:计算联合概率
• 垃圾邮件: 0.5 × 0.111 × 0.111 = 0.0061 0.5 \times 0.111 \times 0.111 = 0.0061 0.5×0.111×0.111=0.0061
• 正常邮件: 0.5 × 0.055 × 0.055 = 0.0015 0.5 \times 0.055 \times 0.055 = 0.0015 0.5×0.055×0.055=0.0015

因此,邮件 “免费 奖品” 被分类为 垃圾邮件

四、代码实现(Python)

from sklearn.naive_bayes import MultinomialNB
from sklearn.feature_extraction.text import CountVectorizer

# 训练数据
emails = [
    ("免费 赢取 现金", "垃圾邮件"),
    ("会议 安排 附件", "正常邮件"),
    ("领取 奖品 现在", "垃圾邮件"),
    ("项目 更新 审核", "正常邮件")
]
texts = [email[0] for email in emails]
labels = [email[1] for email in emails]

# 文本向量化(词袋模型)
vectorizer = CountVectorizer(tokenizer=lambda x: x.split())
X_train = vectorizer.fit_transform(texts)

# 训练模型(使用拉普拉斯平滑)
model = MultinomialNB(alpha=1)
model.fit(X_train, labels)

# 预测新邮件
new_email = ["免费 奖品"]
X_new = vectorizer.transform(new_email)
prediction = model.predict(X_new)
print(prediction)  # 输出:['垃圾邮件']

五、总结

朴素贝叶斯是AI领域的经典算法,其核心优势在于:

  1. 高效性:计算复杂度低,适合高维数据(如文本分类)。
  2. 鲁棒性:对小规模数据或噪声数据表现稳定。
  3. 可解释性:通过概率值直观解释分类结果。

尽管其 特征独立性假设 在现实中可能不成立,但在文本分类、推荐系统、医疗诊断等场景中仍广泛应用。对于需要快速原型验证或资源受限的任务(如边缘计算),它是理想选择。

贝叶斯公式 vs. 朴素贝叶斯公式​


贝叶斯公式 vs. 朴素贝叶斯公式

1. 贝叶斯公式(Bayes’ Theorem)

贝叶斯公式是概率论中的核心定理,用于计算 条件概率,描述在已知某些条件下事件发生的概率。
公式
P ( A ∣ B ) = P ( B ∣ A ) ⋅ P ( A ) P ( B ) P(A|B) = \frac{P(B|A) \cdot P(A)}{P(B)} P(AB)=P(B)P(BA)P(A)
P ( A ∣ B ) P(A|B) P(AB):在事件B发生的条件下,事件A发生的概率(后验概率)。
P ( B ∣ A ) P(B|A) P(BA):在事件A发生的条件下,事件B发生的概率(似然概率)。
P ( A ) P(A) P(A) P ( B ) P(B) P(B):事件A和B的先验概率(独立于其他事件的初始概率)。

核心作用
贝叶斯公式是一个通用工具,用于根据已知信息更新事件的概率,广泛应用于统计学、机器学习、医学诊断等领域。


2. 朴素贝叶斯公式(Naive Bayes Formula)

朴素贝叶斯是 基于贝叶斯公式的分类算法,其核心是对贝叶斯公式进行以下扩展和简化:
公式
P ( C k ∣ X ) ∝ P ( C k ) ⋅ ∏ i = 1 n P ( x i ∣ C k ) P(C_k|X) \propto P(C_k) \cdot \prod_{i=1}^n P(x_i|C_k) P(CkX)P(Ck)i=1nP(xiCk)
C k C_k Ck:类别标签(如“垃圾邮件”或“正常邮件”)。
X = { x 1 , x 2 , . . . , x n } X = \{x_1, x_2, ..., x_n\} X={x1,x2,...,xn}:输入特征的集合(如邮件中的单词)。
关键假设:所有特征 x i x_i xi 在给定类别 C k C_k Ck条件独立(即特征之间无相关性)。

核心作用
通过最大化后验概率 P ( C k ∣ X ) P(C_k|X) P(CkX) 进行分类,适用于文本分类、推荐系统等任务。


两者的核心区别

维度贝叶斯公式朴素贝叶斯公式
定义概率论中的通用定理,计算条件概率。基于贝叶斯公式的分类算法,加入特征独立假设。
应用场景所有需要条件概率的场景(如统计推断)。分类任务(如文本分类、垃圾邮件检测)。
特征独立性不要求特征独立强制假设特征条件独立(即“朴素”的来源)。
复杂度计算联合概率 $P(XC_k)$ 困难(需全概率公式)。

为什么叫“朴素”(Naive)?

朴素贝叶斯的“朴素”一词源于其 特征条件独立假设
现实中的特征通常相关:例如,在文本分类中,“足球”和“比赛”这两个词可能同时出现在体育类文章中,它们之间存在相关性。
模型的简化假设:朴素贝叶斯强制假设所有特征在给定类别时相互独立,即:
P ( X ∣ C k ) = P ( x 1 ∣ C k ) ⋅ P ( x 2 ∣ C k ) ⋅ . . . ⋅ P ( x n ∣ C k ) P(X|C_k) = P(x_1|C_k) \cdot P(x_2|C_k) \cdot ... \cdot P(x_n|C_k) P(XCk)=P(x1Ck)P(x2Ck)...P(xnCk)
这一假设忽略了特征之间的关联性,简化了计算,但在现实中可能不成立,因此被称为“朴素”(即“天真”或“简化”的假设)。


为什么需要“朴素”假设?

尽管特征独立性假设在现实中不一定成立,但其带来的优势使得朴素贝叶斯在实践中广泛适用:

  1. 计算高效
    • 直接计算联合概率 P ( X ∣ C k ) P(X|C_k) P(XCk) 需要估计所有特征组合的可能性,复杂度为 O ( 2 n ) O(2^n) O(2n)
    • 通过独立性假设,复杂度降低为 O ( n ) O(n) O(n),适合高维数据(如文本中的单词特征)。

  2. 避免数据稀疏问题
    • 如果特征维度高(如文本分类中数万词汇),联合概率 P ( X ∣ C k ) P(X|C_k) P(XCk) 的估计需要极大样本量。
    • 独立性假设允许通过单个特征的概率估计组合得到结果。

  3. 对小样本数据友好
    • 即使训练数据较少,也能通过独立假设快速构建模型。


示例说明

假设需要判断一封包含“免费”和“中奖”的邮件是否为垃圾邮件:
贝叶斯公式:需计算所有可能的特征组合(如“免费”和“中奖”同时出现的概率),复杂度高。
朴素贝叶斯:假设“免费”和“中奖”在给定类别时独立,直接计算:
P ( 垃圾邮件 ∣ 免费, 中奖 ) ∝ P ( 垃圾邮件 ) ⋅ P ( 免费 ∣ 垃圾邮件 ) ⋅ P ( 中奖 ∣ 垃圾邮件 ) P(\text{垃圾邮件}|\text{免费, 中奖}) \propto P(\text{垃圾邮件}) \cdot P(\text{免费}|\text{垃圾邮件}) \cdot P(\text{中奖}|\text{垃圾邮件}) P(垃圾邮件免费中奖)P(垃圾邮件)P(免费垃圾邮件)P(中奖垃圾邮件)
即使“免费”和“中奖”在现实中相关,模型仍通过独立假设简化计算。


总结

贝叶斯公式是概率论的基础工具,用于计算条件概率。
朴素贝叶斯是贝叶斯公式在分类任务中的应用,通过特征独立假设简化计算,代价是可能牺牲部分准确性。
• “朴素”一词反映了模型对现实世界的简化假设,但这种假设使得算法高效、易实现,成为文本分类等任务中的经典选择。

推荐

蒙牛50支随变组合蓝莓橙子麦片脆皮经典香草随变转巧克力冰淇淋
【在售价】158.00元
【到手价】98.00元

下单链接:https://p.pinduoduo.com/jXzerhzf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2336589.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

idea中提高编译速度研究

探索过程: 有三种情况: 第一种: idea中用eclipse编译器编译springboot项目,然后debug启动Application报错找不到类。 有待继续研究。 第二种: idea中用javac编译器编译springboot项目,重新构建用时&a…

静态链接part2

编译 语义分析 由语义分析器完成,这个步骤只是完成了对表达式的语法层面的分析,它并不了解这个语句是否真的有意义(例如在C语言中两个指针做乘法运算,这个语句在语法上是合法的,但是没有什么意义;还有同样…

Vue3+Vite+TypeScript+Element Plus开发-17.Tags-组件构建

系列文档目录 Vue3ViteTypeScript安装 Element Plus安装与配置 主页设计与router配置 静态菜单设计 Pinia引入 Header响应式菜单缩展 Mockjs引用与Axios封装 登录设计 登录成功跳转主页 多用户动态加载菜单 Pinia持久化 动态路由 -动态增加路由 动态路由-动态删除…

3D语义地图中的全局路径规划!iPPD:基于3D语义地图的指令引导路径规划视觉语言导航

作者: Zehao Wang, Mingxiao Li, Minye Wu, Marie-Francine Moens, Tinne Tuytelaars 单位:鲁汶大学电气工程系,鲁汶大学计算机科学系 论文标题: Instruction-guided path planning with 3D semantic maps for vision-language …

ShellScript脚本编程

语法基础 脚本结构 我们先从这个小demo程序来窥探一下我们shell脚本的程序结构 #!/bin/bash# 注释信息echo_str"hello world"test(){echo $echo_str }test echo_str 首先我们可以通过文本编辑器(在这里我们使用linux自带文本编辑神器vim),新建一个文件…

【HarmonyOS 5】敏感信息本地存储详解

【HarmonyOS 5】敏感信息本地存储详解 前言 鸿蒙其实自身已经通过多层次的安全机制,确保用户敏感信息本地存储安全。不过再此基础上,用户敏感信息一般三方应用还需要再进行加密存储。 本文章会从鸿蒙自身的安全机制进行展开,最后再说明本地…

探索鸿蒙沉浸式:打造无界交互体验

一、鸿蒙沉浸式简介 在鸿蒙系统中,沉浸式是一种极具特色的设计理念,它致力于让用户在使用应用时能够全身心投入到内容本身,而尽可能减少被系统界面元素的干扰。通常来说,就是将应用的内容区巧妙地延伸到状态栏和导航栏所在的界面…

网站301搬家后谷歌一直不收录新页面怎么办?

当网站因更换域名或架构调整启用301重定向后,许多站长发现谷歌迟迟不收录新页面,甚至流量大幅下滑。 例如,301跳转设置错误可能导致权重传递失效,而新站内容与原站高度重复则可能被谷歌判定为“低价值页面”。 即使技术层面无误&a…

在Mac上离线安装k3s

目录 首先是安装multipass。 1. 系统要求 2. 环境准备 本来想照着网上文档学习安装一下k3s,没想到在docker被封了之后,现在想通过命令行去下载github的资源也不行了(如果有网友看到这个文档、并且知道问题原因的,请留言告知&am…

2025低代码平台选型策略:ROI导向下的功能与成本权衡

在当今快速变化的商业环境中,企业面临着前所未有的挑战与机遇。数字化转型已成为企业提升竞争力的关键,而软件开发的高成本和长周期无疑是实现这一转型的绊脚石。 低代码平台的兴起,为企业提供了一种高效、灵活的解决方案,使得非…

Redis的IO多路复用

1 传统的socket编码模型 传统 Socket 模型通常采用 多线程/多进程 或 阻塞 I/O 的方式处理网络请求。以下是典型实现步骤: 创建套接字(Socket) 步骤:调用 socket() 创建一个 TCP/UDP 套接字。通常把这个套接字称为【主动套接字】…

基于YOLOv9的课堂行为检测系统

基于YOLOv9的课堂行为检测系统 项目概述 本项目是一个基于YOLOv9深度学习模型的课堂行为检测系统,旨在通过计算机视觉技术自动识别和监测课堂中学生的各种行为状态,帮助教师更好地了解课堂教学效果。 项目结构 课堂行为检测/ ├── data/ │ ├──…

端、管、云一体化原生安全架构 告别外挂式防护!

面对数字化转型浪潮,企业网络安全风险日益凸显。数据泄露、黑客勒索等事件频发,合规要求加速推进。尽管企业纷纷部署了防病毒、身份认证、文件加密、入侵防护、流量监控等多种安全系统,但分散且孤立的架构非但没有有效抵御风险,反…

BI面向模型开发和面向报表开发,有什么区别?

在数字化时代,商业智能(BI)已成为企业决策不可或缺的工具。BI项目实施时,通常有两种开发模式:面向模型开发和面向报表开发。虽然两者都旨在通过数据驱动决策,但在开发逻辑、目标价值和技术路径上存在显著差…

进程控制(上)【Linux操作系统】

进程控制 写时拷贝 本质是一种减少深拷贝的方法 Linux中有很多拷贝的场景都用得上写时拷贝,下面以创建子进程时的写时拷贝为例: 子进程被创建的时候: 会继承父进程的mm_struct和页表 所以子进程刚刚继承时,父子进程的代码和数据…

5G网络下客户端数据业务掉线频繁

上层应用的日志和界面在待机状态下(即没有做通话等业务操作),会频繁提示“离线”。 主要先看有没有丢网,UL BLER有没有问题。确认没有问题。看到业务信道释放后也可以成功重新建链。所以以为这个只是终端业务进入dormant态的提示…

【Docker项目实战】使用Docker部署Gitblit服务器

【Docker项目实战】使用Docker部署Gitblit服务器 一、Gitblit介绍1.1 Gitblit 介绍1.2 主要特点 二、本次实践规划2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四、下载Gitblit镜像五、部署Gitbli…

Vitis: 使用自定义IP时 Makefile错误 导致编译报错

参考文章: 【小梅哥FPGA】 Vitis开发中自定义IP的Makefile路径问题解决方案 Vitis IDE自定义IP Makefile错误(arm-xilinx-eabi-gcc.exe: error: *.c: Invalid argument)解决方法 Vitis 使用自定义IP时: Makefile 文件里的语句是需要修改的,…

helm的go模板语法学习

1、helm chart 1.0、什么是helm? 介绍:就是个包管理器。理解为java的maven、linux的yum就好。 安装方法也可参见官网: https://helm.sh/docs/intro/install 通过前面的演示我们知道,有了helm之后应用的安装、升级、查看、停止都…

AI 语音公司 ElevenLabs 进军亚太市场设立东京子公司;EverTutor Live :语音交互 AI 教育平台丨日报

开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 技术 」、「有亮点的 产品 」、「有思考的 文章 」、「有态度的 观…