机器学习中的朴素贝叶斯(Naive Bayes)模型

1. 用实例来理解朴素贝叶斯

下面用具体的数据来演示垃圾邮件 vs 正常邮件的概率计算


假设我们有一个小型邮件数据集

邮件内容类别(垃圾/正常)
“免费 赢取 大奖”垃圾
“免费 参加会议”正常
“中奖 点击 链接”垃圾
“明天 开会”正常
“赢取 免费 礼品”垃圾

Step 1: 统计基础概率

  • 总邮件数:5 封
    • 垃圾邮件:3 封 → P(垃圾) = 3/5 = 0.6
    • 正常邮件:2 封 → P(正常) = 2/5 = 0.4

Step 2: 统计每个词的条件概率

计算每个词在垃圾邮件正常邮件中出现的概率:
(例如:P("免费"|垃圾) = 垃圾邮件中出现“免费”的概率)

单词在垃圾邮件中出现的次数P(单词|垃圾)在正常邮件中出现的次数P(单词|正常)
免费3 封(所有垃圾邮件)3/3 = ​1.01 封(“免费 参加会议”)1/2 = ​0.5
中奖1 封1/3 ≈ ​0.330 封0/2 = ​0.0
赢取2 封2/3 ≈ ​0.670 封0/2 = ​0.0
会议0 封0/3 = ​0.01 封1/2 = ​0.5
明天0 封0/3 = ​0.01 封1/2 = ​0.5

:如果某个词在某一类中未出现(概率=0),会导致整个乘积为0。实际中会使用拉普拉斯平滑(+1)避免此问题,这里暂不展开。


Step 3: 对新邮件进行分类

假设新邮件内容是:“免费 中奖”,判断它是垃圾还是正常邮件。

计算垃圾邮件概率

P(垃圾∣"免费 中奖")∝P(垃圾)×P("免费"∣垃圾)×P("中奖"∣垃圾)=0.6×1.0×0.33≈0.198 P(垃圾|\text{"免费 中奖"}) \propto P(垃圾) \times P(\text{"免费"}|垃圾) \times P(\text{"中奖"}|垃圾) \\ = 0.6 \times 1.0 \times 0.33 \approx \mathbf{0.198} P(垃圾"免费 中奖")P(垃圾)×P("免费"垃圾)×P("中奖"垃圾)=0.6×1.0×0.330.198

计算正常邮件概率

P(正常∣"免费 中奖")∝P(正常)×P("免费"∣正常)×P("中奖"∣正常)=0.4×0.5×0.0=0.0 P(正常|\text{"免费 中奖"}) \propto P(正常) \times P(\text{"免费"}|正常) \times P(\text{"中奖"}|正常) \\ = 0.4 \times 0.5 \times 0.0 = \mathbf{0.0} P(正常"免费 中奖")P(正常)×P("免费"正常)×P("中奖"正常)=0.4×0.5×0.0=0.0

问题:正常邮件概率=0,因为“中奖”从未在正常邮件中出现过。实际中会调整概率(见后文修正)。

结论
  • 垃圾邮件概率:0.198
  • 正常邮件概率:0.0
    → 判定为垃圾邮件

修正:拉普拉斯平滑(避免概率=0)

对未出现的词,给所有计数+1(避免零概率):

  • 修正后 P("中奖"|正常) = (0+1)/(2+总唯一词数)
    (假设总唯一词数=5,则 P("中奖"|正常) = 1/7 ≈ 0.14

修正后的正常邮件概率:
P(正常∣"免费 中奖")∝0.4×0.5×0.14≈0.028P(正常|\text{"免费 中奖"})\propto 0.4 \times 0.5 \times 0.14 \approx \mathbf{0.028}P(正常"免费 中奖")0.4×0.5×0.140.028
此时垃圾邮件概率(0.198)仍大于正常邮件概率(0.028),依然判定为垃圾邮件。


关键点总结

  1. P(类别):类别的初始概率(如垃圾邮件占60%)。
  2. P(单词|类别):某类邮件中某个单词出现的概率。
  3. 连乘:假设所有词独立,概率相乘得到联合概率。
  4. 平滑处理:避免未出现的词导致概率归零。

这样计算后,选择概率更大的类别作为预测结果!

2.用朴素贝叶斯解释下面的问题

假设有一种病叫做“贝叶死”,它的发病率是万分之一,即10000 人中会有1个人得病。现有一种测试可以检验一个人是否得病的准确率是99.9%,误报率(假阳)是0.1% 那么,如果一个人被查出来患有“叶贝死”,实际上患有的可能性有多大?

问题重述(“贝叶死”检测问题)

  • 发病率(先验概率)
    P(病)=110000=0.0001P(\text{病}) = \frac{1}{10000} = 0.0001P()=100001=0.0001
    P(健康)=1−P(病)=0.9999P(\text{健康}) = 1 - P(\text{病}) = 0.9999P(健康)=1P()=0.9999

  • 检测准确率

    • 真阳性(True Positive):已知患病时,检测为阳性的概率:99.9% → P(阳性∣病)=0.999P(\text{阳性}|\text{病}) = 0.999P(阳性)=0.999
    • 假阳性(False Positive):已知健康时,检测为阳性的概率:0.1% → P(阳性∣健康)=0.001P(\text{阳性}|\text{健康}) = 0.001P(阳性健康)=0.001
  • 问题
    如果一个人检测结果为阳性,实际患病的概率是多少?即求 P(病∣阳性)P(\text{病}|\text{阳性})P(阳性)


用朴素贝叶斯推导

根据贝叶斯定理:
P(病∣阳性)=P(阳性∣病)⋅P(病)P(阳性) P(\text{病}|\text{阳性}) = \frac{P(\text{阳性}|\text{病}) \cdot P(\text{病})}{P(\text{阳性})} P(阳性)=P(阳性)P(阳性)P()
其中,P(阳性)P(\text{阳性})P(阳性)是检测为阳性的总概率,包括真阳性假阳性
P(阳性)=P(阳性∣病)⋅P(病)+P(阳性∣健康)⋅P(健康) P(\text{阳性}) = P(\text{阳性}|\text{病}) \cdot P(\text{病}) + P(\text{阳性}|\text{健康}) \cdot P(\text{健康}) P(阳性)=P(阳性)P()+P(阳性健康)P(健康)


具体计算

  1. 计算分子(真阳性部分):
    P(阳性∣病)⋅P(病)=0.999×0.0001=0.0000999 P(\text{阳性}|\text{病}) \cdot P(\text{病}) = 0.999 \times 0.0001 = 0.0000999 P(阳性)P()=0.999×0.0001=0.0000999

  2. 计算分母(所有阳性情况):
    P(阳性)=0.999×0.0001+0.001×0.9999=0.0000999+0.0009999=0.0010998 P(\text{阳性}) = 0.999 \times 0.0001 + 0.001 \times 0.9999 = 0.0000999 + 0.0009999 = 0.0010998 P(阳性)=0.999×0.0001+0.001×0.9999=0.0000999+0.0009999=0.0010998

  3. 最终概率
    P(病∣阳性)=0.00009990.0010998≈0.0908(约9.08%) P(\text{病}|\text{阳性}) = \frac{0.0000999}{0.0010998} \approx 0.0908 \quad \text{(约9.08\%)} P(阳性)=0.00109980.00009990.0908(约9.08%


直观解释

  • 在10000人中

    • 1人患病,且检测为阳性的概率:1×0.999≈11 \times 0.999 \approx 11×0.9991 人(真阳性)。
    • 9999人健康,但检测为阳性的概率:9999×0.001≈109999 \times 0.001 \approx 109999×0.00110 人(假阳性)。
  • 所有阳性结果:共 1+10=111 + 10 = 111+10=11 人。

  • 其中真正患病:仅1人。

因此,检测为阳性时,实际患病的概率是:
111≈9.09%(与公式结果一致) \frac{1}{11} \approx 9.09\% \quad \text{(与公式结果一致)} 1119.09%(与公式结果一致)


结论

即使检测准确率高达99.9%,由于发病率极低(万分之一),假阳性人数远多于真阳性
最终:
P(病∣阳性)≈9.1% P(\text{病}|\text{阳性}) \approx \mathbf{9.1\%} P(阳性)9.1%
这意味着,检测为阳性的人中,超过90%是误诊!


背后的贝叶斯思想

  1. 先验概率很重要:发病率低时,即使检测准确率高,误诊仍可能主导结果。
  2. 不要忽略基础比率(Base Rate Neglect):人们常忽视先验概率,只关注检测的“准确性”。
  3. 实际应用:对罕见病的筛查,需结合多次检测或更高特异性的方法降低误诊率。

这就是贝叶斯定理的经典案例——“阳性结果≠患病”

3.朴素贝叶斯公式总结

1. 公式分解

贝叶斯定理的完整形式是:
P(y∣X)=P(y)∏P(xi∣y)P(X) P(y|X) = \frac{P(y) \prod P(x_i|y)}{P(X)} P(yX)=P(X)P(y)P(xiy)
但 $ P(X) $ 对所有类别 $ y $ 都相同,因此比较时只需计算分子:
P(y∣X)∝P(y)∏P(xi∣y) P(y|X) \propto P(y) \prod P(x_i|y) P(yX)P(y)P(xiy)

  • P(y∣X)P(y|X)P(yX):在已知特征 X=(x1,x2,...,xn)X = (x_1, x_2, ..., x_n)X=(x1,x2,...,xn) 的情况下,样本属于类别 yyy 的概率(后验概率)。
  • P(y)P(y)P(y):类别 yyy先验概率(即数据中类别 yyy 出现的概率)。
  • P(xi∣y)P(x_i|y)P(xiy):在类别 yyy 下,特征 xix_ixi 出现的概率(似然概率)。
  • ∝\propto:表示“正比于”,即我们可以忽略分母 P(X)P(X)P(X)(因为对所有类别 yyy 都一样,不影响比较)。

2. 直观理解

假设我们要判断一封邮件是不是垃圾邮件(y=垃圾邮件y = \text{垃圾邮件}y=垃圾邮件y=正常邮件y = \text{正常邮件}y=正常邮件),邮件的特征 XXX 是其中的单词(如“免费”“中奖”等)。

朴素贝叶斯的计算逻辑是:

  1. 先看数据中垃圾邮件的比例P(y)P(y)P(y))。
  2. 再看垃圾邮件中每个单词出现的概率P(xi∣y)P(x_i|y)P(xiy))。
  3. 假设所有单词相互独立(“朴素”假设),计算它们的联合概率(即乘积)。
  4. 比较不同类别的概率,选择概率最大的作为预测结果。

3. 具体例子

数据示例
邮件内容类别(垃圾/正常)
“免费 赢取 大奖”垃圾
“免费 参加会议”正常
“中奖 点击 链接”垃圾
“明天 开会”正常
“赢取 免费 礼品”垃圾
计算概率
  • 先验概率

    • P(垃圾)=35=0.6P(\text{垃圾}) = \frac{3}{5} = 0.6P(垃圾)=53=0.6
    • P(正常)=25=0.4P(\text{正常}) = \frac{2}{5} = 0.4P(正常)=52=0.4
  • 条件概率(单词在垃圾邮件中的概率):

    • P(免费∣垃圾)=33=1.0P(\text{免费}|\text{垃圾}) = \frac{3}{3} = 1.0P(免费垃圾)=33=1.0
    • P(中奖∣垃圾)=13≈0.33P(\text{中奖}|\text{垃圾}) = \frac{1}{3} \approx 0.33P(中奖垃圾)=310.33
    • P(赢取∣垃圾)=23≈0.67P(\text{赢取}|\text{垃圾}) = \frac{2}{3} \approx 0.67P(赢取垃圾)=320.67
预测新邮件

假设新邮件内容是 “免费 中奖”,判断它是垃圾邮件还是正常邮件。

垃圾邮件的概率

P(垃圾∣免费, 中奖)∝P(垃圾)×P(免费∣垃圾)×P(中奖∣垃圾)=0.6×1.0×0.33≈0.198 P(\text{垃圾}|\text{免费, 中奖}) \propto P(\text{垃圾}) \times P(\text{免费}|\text{垃圾}) \times P(\text{中奖}|\text{垃圾}) \\ = 0.6 \times 1.0 \times 0.33 \approx 0.198 P(垃圾免费中奖)P(垃圾)×P(免费垃圾)×P(中奖垃圾)=0.6×1.0×0.330.198

正常邮件的概率

P(正常∣免费, 中奖)∝P(正常)×P(免费∣正常)×P(中奖∣正常)=0.4×0.5×0.0=0.0(需拉普拉斯平滑调整) P(\text{正常}|\text{免费, 中奖}) \propto P(\text{正常}) \times P(\text{免费}|\text{正常}) \times P(\text{中奖}|\text{正常}) \\ = 0.4 \times 0.5 \times 0.0 = 0.0 \quad \text{(需拉普拉斯平滑调整)} P(正常免费中奖)P(正常)×P(免费正常)×P(中奖正常)=0.4×0.5×0.0=0.0(需拉普拉斯平滑调整)

结论

垃圾邮件的概率(0.198) > 正常邮件的概率(0.0),因此判定为垃圾邮件


4. 关键点总结

  1. 朴素贝叶斯假设:所有特征 xix_ixi 相互独立(“朴素”)。
  2. 计算方式
    • 先计算类别的先验概率 P(y)P(y)P(y)
    • 再计算每个特征在类别下的条件概率 P(xi∣y)P(x_i|y)P(xiy)
    • 联合概率 = 先验概率 × 所有特征的条件概率。
  3. 预测:选择使 P(y∣X)P(y|X)P(yX) 最大的类别 yyy

5. 应用场景

  • 文本分类(垃圾邮件、情感分析)
  • 医学诊断(疾病预测)
  • 推荐系统(用户兴趣分类)

这个公式虽然简单,但在实际应用中非常强大! 🚀

4.朴素贝叶斯分类器

  • 常用于文本分类,文本过滤、情感预测、推荐系统等,尤其是对于英文等语言来说,分类效果很好

  • 准备阶段,需要确定特征属性,属性值以及label => 训练集

  • 训练阶段,输入是特征属性和训练样本,输出是分类器,主要工作是计算每个类别在训练样本中的出现频率及每个特征属性划分对每个类别的条件概率

  • 应用阶段,使用分类器对新数据进行分类

在这里插入图片描述

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

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

相关文章

document.documentElement详解

核心概念定义 它始终指向当前文档的根元素&#xff0c;在 HTML 文档中对应 <html> 标签。与 document.body&#xff08;对应 <body>&#xff09;和 document.head&#xff08;对应 <head>&#xff09;形成层级关系。与 document.body 的区别 <html> &l…

c#进阶之数据结构(动态数组篇)----Queue

1、简介这个是c#封装的队列类型&#xff0c;同栈相反&#xff0c;这个是先进先出&#xff0c;一般用于事件注册&#xff0c;或者数据的按顺序处理&#xff0c;理解为需要排队处理的可以用队列来处理。注意&#xff0c;队列一定是有顺序的&#xff0c;先进确实是会先出&#xff…

使用 keytool 在服务器上导入证书操作指南(SSL 证书验证错误处理)

使用 keytool 在服务器上导入证书操作指南(SSL 证书验证错误处理) 一、概述 本文档用于指导如何在运行 Java 应用程序的服务器上,通过keytool工具将证书导入 Java 信任库,解决因证书未被信任导致的 SSL/TLS 通信问题(如PKIX path building failed错误)。 二、操作步骤…

VUE export import

目录 命名导出 导出变量 导出函数 总结 默认导出 导出变量 导出函数 总结 因为总是搞不懂export和Import什么时候需要加{}&#xff0c;什么时候不用&#xff0c;所以自己测试了一下&#xff0c;以下是总结。 需不需要加{}取决于命名导出还是默认导出&#xff0c;命名导…

端侧宠物识别+拍摄控制智能化:解决设备识别频次识别率双低问题

随着宠物成为家庭重要成员&#xff0c;宠物影像创作需求激增&#xff0c;传统相机系统 “人脸优先” 的调度逻辑已难以应对宠物拍摄的复杂场景。毛发边缘模糊、动态姿态多变、光照反差剧烈等问题&#xff0c;推动着智能拍摄技术向 “宠物优先” 范式转型。本文基于端侧 AI 部署…

Popover API 实战指南:前端弹层体验的原生重构

&#x1fa84; Popover API 实战指南&#xff1a;前端弹层体验的原生重构 还在用 position: absolute JS 定位做 tooltip&#xff1f;还在引入大型 UI 库只为做个浮层&#xff1f;现在浏览器已经支持了真正原生的「弹出层 API」&#xff0c;一行 HTMLCSS 就能构建可交互、无障…

CCS-MSPM0G3507-6-模块篇-OLED的移植

前言基础篇结束&#xff0c;接下来我们来开始进行模块驱动如果懂把江科大的OLED移植成HAL库&#xff0c;那其实也没什么难首先配置OLED的引脚这里我配置PA16和17为推挽输出&#xff0c;PA0和1不要用&#xff0c;因为只有那两个引脚能使用MPU6050 根据配置出来的引脚&#xff0c…

意识边界的算法战争—脑机接口技术重构人类认知的颠覆性挑战

一、神经解码的技术奇点当瘫痪患者通过脑电波操控机械臂饮水&#xff0c;当失语者借由皮层电极合成语音&#xff0c;脑机接口&#xff08;BCI&#xff09;正从医疗辅助工具演变为认知增强的潘多拉魔盒。这场革命的核心突破在于神经信号解析精度的指数跃迁&#xff1a;传统脑电图…

详解彩信 SMIL规范

以下内容将系统地讲解彩信 MMS&#xff08;Multimedia Messaging Service&#xff09;中使用的 SMIL&#xff08;Synchronized Multimedia Integration Language&#xff09;规范&#xff0c;涵盖历史、语法结构、在彩信中的裁剪与扩展、常见实现细节以及最佳实践。末尾附示例代…

《红蓝攻防:构建实战化网络安全防御体系》

《红蓝攻防&#xff1a;构建实战化网络安全防御体系》文章目录第一部分&#xff1a;网络安全的攻防全景 1、攻防演练的基础——红队、蓝队、紫队 1.1 红队&#xff08;攻击方&#xff09; 1.2 蓝队&#xff08;防守方&#xff09; 1.3 紫队&#xff08;协调方&#xff09; 2、5…

MFC UI大小改变与自适应

文章目录窗口最大化库EasySize控件自适应大小窗口最大化 资源视图中开放最大化按钮&#xff0c;添加窗口样式WS_MAXIMIZEBOX。发送大小改变消息ON_WM_SIZE()。响应大小改变。 void CDlg::OnSize(UINT nType, int cx, int cy) {CDialog::OnSize(nType, cx, cy);//获取改变后窗…

【Linux网络】:HTTP(应用层协议)

目录 一、HTTP 1、URL 2、协议格式 3、请求方法 4、状态码 5、Header信息 6、会话保持Cookie 7、长连接 8、简易版HTTP服务器代码 一、HTTP 我们在编写网络通信代码时&#xff0c;我们可以自己进行协议的定制&#xff0c;但实际有很多优秀的工程师早就写出了许多非常…

C++-linux 7.文件IO(三)文件元数据与 C 标准库文件操作

文件 IO 进阶&#xff1a;文件元数据与 C 标准库文件操作 在 Linux 系统中&#xff0c;文件操作不仅涉及数据的读写&#xff0c;还包括对文件元数据的管理和高层库函数的使用。本文将从文件系统的底层存储机制&#xff08;inode 与 dentry&#xff09;讲起&#xff0c;详细解析…

WordPress Ads Pro Plugin本地文件包含漏洞(CVE-2025-4380)

免责声明 本文档所述漏洞详情及复现方法仅限用于合法授权的安全研究和学术教育用途。任何个人或组织不得利用本文内容从事未经许可的渗透测试、网络攻击或其他违法行为。 前言:我们建立了一个更多,更全的知识库。每日追踪最新的安全漏洞,追中25HW情报。 更多详情: http…

从爆红到跑路:AI明星Manus为何仅用四个月就“抛弃”了中国?

目录 前言 一、资本的“无形之手”&#xff1a;7500万美元融资背后的“投名状” 二、技术的双重困境&#xff1a;算力封锁与“应用层”的原罪 三、战略的错判&#xff1a;一场与中国市场的“双向奔赴”失败 四、事件的启示&#xff1a;当“出海”变成“出走” &#x1f3a…

CCF-GESP 等级考试 2025年6月认证Python三级真题解析

1 单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09;第1题 2025年4月19日在北京举行了一场颇为瞩目的人形机器人半程马拉松赛。比赛期间&#xff0c;跑动着的机器人会利用 身上安装的多个传感器所反馈的数据来调整姿态、保持平衡等&#xff0c;那么这类传感器类似于…

16.使用ResNet网络进行Fashion-Mnist分类

16.1 ResNet网络结构设计################################################################################################################ #ResNet ################################################################################################################…

C# 结构体 和 类 的区别

✅ 结构体&#xff08;struct&#xff09;是值类型&#xff08;Value Type&#xff09;和类&#xff08;class&#xff09;不同&#xff0c;结构体在赋值和传参时是复制值本身&#xff0c;而不是引用地址。✅ 一、结构体的基本使用示例&#xff1a;using System;struct Point {…

MacBook Air M4 安装 VMware Fusion Pro

VMware Fusion Pro已经对消费者免费了&#xff0c;在Windows系统上的安装和使用教程比较多&#xff0c;Mac上竟然没多少&#xff0c;还充斥着大量的广告以及付费软件&#xff0c;所以趁着今天要安装虚拟机&#xff0c;记录一下完整过程。 1&#xff0c;注册博通账号与登录 首…