机器学习——贝叶斯

🌺历史文章列表🌺

  1. 机器学习——损失函数、代价函数、KL散度
  2. 机器学习——特征工程、正则化、强化学习
  3. 机器学习——常见算法汇总
  4. 机器学习——感知机、MLP、SVM
  5. 机器学习——KNN
  6. 机器学习——贝叶斯
  7. 机器学习——决策树
  8. 机器学习——随机森林、Bagging、Boosting、集成学习
  9. 机器学习——聚类算法(Kmeans、GMM-使用EM优化)
  10. 机器学习——降维

文章目录

    • 贝叶斯定理(Bayes' Theorem)
    • 朴素贝叶斯分类器(Naive Bayes Classifier)
      • 计算步骤
      • 优势
      • 局限性
    • 朴素贝叶斯的三种常见变体
      • 1. 高斯朴素贝叶斯(Gaussian Naive Bayes)
      • 2. 多项式朴素贝叶斯(Multinomial Naive Bayes)
      • 3. 伯努利朴素贝叶斯(Bernoulli Naive Bayes)
      • 总结
    • 零概率问题
      • 总结
      • 拉普拉斯平滑(Laplace Smoothing)
      • 加权平滑(Weighted Smoothing)
      • 狄利克雷平滑(Dirichlet Smoothing)


贝叶斯定理(Bayes’ Theorem)

贝叶斯定理用于描述事件之间的条件概率关系,解决分类和间接解决回归问题。它的
描述了事件 A A A 在事件 B B B 发生后的条件概率

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)

在朴素贝叶斯分类中:

  • A A A 表示数据点属于某个类别(如“垃圾邮件”或“正常邮件”)。
  • B B B 表示数据点的特征(如邮件的词频)。
  • P(A | B) :表示在已知特征 ( B ) 的情况下,属于类别 ( A ) 的概率(后验概率)。
  • P(B | A) :表示在已知类别 ( A ) 的情况下,观察到特征 ( B ) 的概率(条件概率)。
  • P(A) :事件 A 发生的先验概率
  • P(B) :事件 B 发生的先验概率

贝叶斯定理的核心思想是通过已知的先验概率和条件概率,计算某个事件的后验概率

朴素贝叶斯分类器(Naive Bayes Classifier)

朴素贝叶斯分类器是基于贝叶斯定理的一种简单而有效的分类算法。它的核心假设是在给定目标变量的条件下,所有特征之间是相互独立的,即“条件独立性假设”。虽然这个假设在现实中通常不成立但在实际应用中表现得非常好

计算步骤

  1. 计算先验概率:计算每个类别的先验概率 P ( C i ) P(C_i) P(Ci),其中 C i C_i Ci 表示类别。

  2. 计算条件概率/似然概率:对于每个特征,计算在给定类别的条件下特征出现的概率 P ( x j ∣ C i ) P(x_j | C_i) P(xjCi)

  3. 应用贝叶斯定理:计算给定样本属于每个类别的后验概率 P ( C i ∣ x ) P(C_i | x) P(Cix),其中 x x x 是特征向量。

  4. 做出分类决策:选择具有最高后验概率的类别作为分类结果

数学表达式为:

P ( C i ∣ x 1 , x 2 , … , x n ) = P ( C i ) ⋅ P ( x 1 ∣ C i ) ⋅ P ( x 2 ∣ C i ) ⋯ P ( x n ∣ C i ) P ( x 1 , x 2 , … , x n ) P(C_i | x_1, x_2, \dots, x_n) = \frac{P(C_i) \cdot P(x_1 | C_i) \cdot P(x_2 | C_i) \cdots P(x_n | C_i)}{P(x_1, x_2, \dots, x_n)} P(Cix1,x2,,xn)=P(x1,x2,,xn)P(Ci)P(x1Ci)P(x2Ci)P(xnCi)

在实际应用中,由于分母 P ( x 1 , x 2 , … , x n ) P(x_1, x_2, \dots, x_n) P(x1,x2,,xn)对所有类别是相同的,所以只需要比较分子部分:

P ( C i ) ⋅ P ( x 1 ∣ C i ) ⋅ P ( x 2 ∣ C i ) ⋯ P ( x n ∣ C i ) P(C_i) \cdot P(x_1 | C_i) \cdot P(x_2 | C_i) \cdots P(x_n | C_i) P(Ci)P(x1Ci)P(x2Ci)P(xnCi)

优势

  1. 计算简单:因为条件独立假设,计算复杂度低,速度快。
  2. 数据需求少:对小数据集也能表现良好。
  3. 处理多类别问题:适合处理多类别分类问题。

局限性

  1. 条件独立性假设不现实:在许多情况下,特征之间并不是独立的,假设不成立时分类器效果可能下降。
  2. 对数据格式敏感:在某些应用场景中,对特征的处理和分布的要求较高。

朴素贝叶斯的三种常见变体

根据数据的不同特性,朴素贝叶斯有三种常见的变体模型:高斯朴素贝叶斯、多项式朴素贝叶斯和伯努利朴素贝叶斯。它们分别适用于不同类型的数据和应用场景。

1. 高斯朴素贝叶斯(Gaussian Naive Bayes)

高斯朴素贝叶斯连续特征数据,假设特征服从高斯分布(正态分布)。如身高、体重。

假设:每个类别 C i C_i Ci 下的特征 x j x_j xj 服从正态分布:
P ( x j ∣ C i ) = 1 2 π σ C i 2 exp ⁡ ( − ( x j − μ C i ) 2 2 σ C i 2 ) P(x_j | C_i) = \frac{1}{\sqrt{2 \pi \sigma_{C_i}^2}} \exp \left( -\frac{(x_j - \mu_{C_i})^2}{2 \sigma_{C_i}^2} \right) P(xjCi)=2πσCi2 1exp(2σCi2(xjμCi)2)
其中, μ C i \mu_{C_i} μCi σ C i \sigma_{C_i} σCi 分别是类别 C i C_i Ci 下特征 x j x_j xj 的均值和标准差。

  • 适用场景
    • 特征为连续值(如身高、体重等)。
    • 特征值近似服从正态分布的场景。
    • 不适合处理离散数据,如文本分类中的词频数据。
  • 示例应用
    • 分类问题中,特征是连续变量的,如预测癌症的肿瘤大小。

2. 多项式朴素贝叶斯(Multinomial Naive Bayes)

多项式朴素贝叶斯适用于离散型数据,假设特征(如词频)符合多项式分布。如词频或 TF-IDF 值。

假设:每个类别 C i C_i Ci 下的特征 x j x_j xj 服从多项式分布:
P ( x ∣ C i ) = ( ∑ j = 1 d x j ) ! x 1 ! x 2 ! ⋯ x d ! ∏ j = 1 d P ( x j ∣ C i ) x j P(x | C_i) = \frac{\left( \sum_{j=1}^d x_j \right)!}{x_1! x_2! \cdots x_d!} \prod_{j=1}^d P(x_j | C_i)^{x_j} P(xCi)=x1!x2!xd!(j=1dxj)!j=1dP(xjCi)xj
其中, d d d 是特征数量, x j x_j xj 是特征 j j j 的出现次数, P ( x j ∣ C i ) P(x_j | C_i) P(xjCi) 是在类别 C i C_i Ci 下特征 j j j 出现的概率。

  • 适用场景
    • 特征值是非负整数(表示频数)。
    • 文本分类,特征为词频或 TF-IDF 值。
  • 示例应用
    • 垃圾邮件分类,根据邮件中不同词的出现频率进行分类。
    • 文档主题分类。

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

伯努利朴素贝叶斯适用于二元特征数据(如 0 和 1),假设特征服从伯努利分布。,常用于特征值表示是否出现某个事件的场景。

假设:每个类别 C i C_i Ci 下的特征 x j x_j xj 服从伯努利分布:
P ( x j ∣ C i ) = P ( x j = 1 ∣ C i ) x j ⋅ ( 1 − P ( x j = 1 ∣ C i ) ) 1 − x j P(x_j | C_i) = P(x_j = 1 | C_i)^{x_j} \cdot (1 - P(x_j = 1 | C_i))^{1 - x_j} P(xjCi)=P(xj=1∣Ci)xj(1P(xj=1∣Ci))1xj
其中, x j x_j xj 为 0 或 1,表示特征 j j j 是否在样本中出现。

  • 适用场景
    • 特征为布尔值(0或1)表示的场景,如文本数据中的词袋模型(词是否出现)。
    • 适用于稀疏数据,尤其是大量特征值为0的情况。
  • 示例应用
    • 文本分类中,每个特征表示某个词是否出现在文档中(即只关心是否出现,不关心出现的次数)。
    • 文本情感分析,特征表示是否出现某些情感词汇。

总结

  • 贝叶斯定理 提供了一种计算条件概率的方法。
  • 朴素贝叶斯分类器 假设特征之间相互独立,尽管这一假设在实际中可能并不成立,但在很多应用中仍然表现良好。
  • 高斯朴素贝叶斯:适合连续值特征假设特征服从正态分布
  • 多项式朴素贝叶斯:适合离散值特征假设特征服从多项式分布。特征表示频数,如词频数据。
  • 伯努利朴素贝叶斯:适合布尔值特征假设特征服从伯努利分布。特征表示某事件是否发生,如词袋模型的文本分类。

选择合适的朴素贝叶斯模型有助于提高分类效果,应根据数据特征和应用场景进行选择。

零概率问题

没有平滑时,这个概率可以表示为:

P ( x i ∣ C ) = count ( x i , C ) count ( C ) P(x_i | C) = \frac{\text{count}(x_i, C)}{\text{count}(C)} P(xiC)=count(C)count(xi,C)

其中:

  • count ( x i , C ) \text{count}(x_i, C) count(xi,C) 表示类别 C C C 下特征 x i x_i xi 出现的次数。
  • count ( C ) \text{count}(C) count(C) 表示类别 C C C 出现的总次数。

朴素贝叶斯中的零概率问题是指在计算后验概率时,如果某个特征值在训练数据中没有出现,则该特征值的概率会被计算为0。由于贝叶斯公式中包含了特征值的概率乘积,只要一个特征值的概率为0,那么整体公式的结果也会为0,导致预测结果不准确

总结

  • 拉普拉斯平滑:一种简单的平滑方法,通过在每个事件的频数上加1来避免零概率问题。适合简单场景,但在数据量较大时可能过于平滑。
  • 加权平滑引入一个超参数控制特征的重要性或频率分布,进行比例调整,适合在特征权重差异较大的情况下使用。
  • Dirichlet平滑:一种基于Dirichlet分布的平滑方法,灵活度更高,通过给每个特征引入超参数对平滑程度进行调节,常用于复杂的文本模型、语言模型或多项式分布估计中。

拉普拉斯平滑(Laplace Smoothing)

拉普拉斯平滑(也称为加一平滑)是一种解决概率估计中零概率问题的简单方法。拉普拉斯平滑通过在每个事件的频数上加一个小的正数(通常为1) 来避免零概率的出现。

公式为:
在这里插入图片描述其中:

  • count ( x i , C ) \text{count}(x_i, C) count(xi,C) 表示类别 C C C 下特征 x i x_i xi 出现的次数。
  • count ( C ) \text{count}(C) count(C) 表示类别 C C C 出现的总次数。
  • | V V V |是特征空间的大小 (即可能出现的所有特征的数量)。
  • 加上1是为了保证所有特征的概率不为零

拉普拉斯平滑适用于解决朴素贝叶斯分类器中的零概率问题,这可能导致对频率较高的事件也进行了不必要的平滑,使得估计结果过于平滑。

加权平滑(Weighted Smoothing)

可以根据特征重要性或频率分布给予不同的权重,从而在估计概率时更加准确。

公式为:
P ( x i ∣ C ) = count ( x i , C ) + α count ( C ) + α ⋅ ∣ V ∣ P(x_i | C) = \frac{\text{count}(x_i, C) + \alpha}{\text{count}(C) + \alpha \cdot |V|} P(xiC)=count(C)+αVcount(xi,C)+α
其中:

  • count ( x i , C ) \text{count}(x_i, C) count(xi,C) 表示类别 C C C 下特征 x i x_i xi 出现的次数。
  • count ( C ) \text{count}(C) count(C) 表示类别 C C C 出现的总次数。
  • | V V V |是特征空间的大小 (即可能出现的所有特征的数量)。
  • α \alpha α加权平滑的平滑参数,用来控制平滑的强度。
    • α = 1 \alpha = 1 α=1 时,公式退化为拉普拉斯平滑。
    • 如果 α > 1 \alpha > 1 α>1,则加大对未见事件的平滑强度。
    • 如果 α < 1 \alpha < 1 α<1,则对未见事件的平滑力度较小。

通过引入特征权重 α ,根据特征的重要性或频率分布进行比例调整。需要在平滑过程中考虑特征间差异的情况,调整 α 。

狄利克雷平滑(Dirichlet Smoothing)

Dirichlet平滑是一种更加灵活的平滑方法,它通过引入超参数对每个特征的平滑程度进行调整。相比拉普拉斯平滑,Dirichlet平滑能够根据数据特点选择不同的平滑强度。

公式为:
P ( x i ∣ C ) = count ( x i , C ) + α i count ( C ) + ∑ i = 1 ∣ V ∣ α i P(x_i | C) = \frac{\text{count}(x_i, C) + \alpha_i}{\text{count}(C) + \sum_{i=1}^{|V|} \alpha_i} P(xiC)=count(C)+i=1Vαicount(xi,C)+αi
其中:

  • count ( x i , C ) \text{count}(x_i, C) count(xi,C) 表示类别 C C C 下特征 x i x_i xi 出现的次数。
  • count ( C ) \text{count}(C) count(C) 表示类别 C C C 出现的总次数。
  • | V V V |是特征空间的大小 (即可能出现的所有特征的数量)。
  • α i \alpha_i αi 是每个特征 x i x_i xi 的平滑参数,不同的特征可以有不同的平滑强度。
  • α i \alpha_i αi 相等且为 1 时,Dirichlet 平滑退化为拉普拉斯平滑。

为每个类别分配不同的平滑参数,更加灵活。 计算较复杂,但在处理复杂的数据分布时更具优势。

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

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

相关文章

20241111,LeetCode 每日一题,用 Go 实现旋转链表

题目 给你一个链表的头节点 head &#xff0c;旋转链表&#xff0c;将链表每个节点向右移动 k 个位置。 解题思路 计算链表长度&#xff1a;遍历链表来获取链表的长度 n&#xff0c;因为链表的旋转其实是循环移动&#xff0c;所以将 k 对 n 取模 k k % n&#xff0c;这样可以…

Linux驱动开发(4):Linux的设备模型

在前面写的驱动中&#xff0c;我们发现编写驱动有个固定的模式只有往里面套代码就可以了&#xff0c;它们之间的大致流程可以总结如下&#xff1a; 实现入口函数xxx_init()和卸载函数xxx_exit() 申请设备号 register_chrdev_region() 初始化字符设备&#xff0c;cdev_init函数…

在线项目管理系统有哪些选择?2024年9款推荐

本文提及的2024值得关注的9款在线项目管理系统有: 1.PingCode&#xff1b; 2.Worktile&#xff1b; 3.华炎魔方&#xff1b; 4.企业微信&#xff1b; 5.Tapd&#xff1b; 6.青云客&#xff1b; 7.ClickUp&#xff1b; 8.Wrike&#xff1b; 9.Smartsheet。 许多企业在选择在线项…

pytorch量化训练

训练时量化&#xff08;Quantization-aware Training, QAT&#xff09;是一种在模型训练过程中&#xff0c;通过模拟低精度量化效应来增强模型对量化操作的鲁棒性的技术。与后训练量化不同&#xff0c;QAT 允许模型在训练过程中考虑到量化引入的误差&#xff0c;从而在实际部署…

datastage在升级版本到11.7之后,部分在11.3上正常执行的SP报错SQLSTATE = 22007: 本机错误代码 = -180

在升级版本到11.7之后&#xff0c;部分在11.3上正常执行的SP开始报错&#xff0c;报的SQL错误是时间参数问题&#xff0c;但是一样的SP可以直接call sp执行&#xff0c;也可以手动调用作业执行&#xff0c;只有设置定时调度时作业会报错&#xff0c; CALLXXX.XXX(1,CURRENT TIM…

Windows VSCode .NET CORE WebAPI Debug配置

1.安装C#插件 全名C# for Visual Studio Code&#xff0c;选择微软的 2. 安装C# Dev Kit插件 全名C# Dev Kit for Visual Studio Code&#xff0c;同样是选择微软的 3.安装Debugger for Unity 4.配置launch.json 文件 {"version": "0.2.0","config…

Docker使用docker-compose一键部署nacos、Mysql、redis

下面是一个简单的例子&#xff0c;展示如何通过Docker Compose文件部署Nacos、MySQL和Redis。请确保您的机器上已经安装了Docker和Docker Compose。 1&#xff0c;准备好mysql、redis、nacos镜像 sudo docker pull mysql:8 && sudo docker pull redis:7.2 &&…

【模块一】kubernetes容器编排进阶实战之k8s基础概念

kubernetes 基本介绍 kubernetes 组件简介 - master: 主人&#xff0c;并不部署服务&#xff0c;而是管理salve节点。 后期更名为&#xff1a; controll plane&#xff0c;控制面板。 etcd: 2379&#xff08;客户端通信&#xff09;、2…

【MPC-Simulink】EX04 信号归一化简化权重调节过程与提高数值计算质量

【MPC-Simulink】EX04 信号归一化简化权重调节过程与提高数值计算质量 参考 Matlab 官网提供的 Model Predictive Control Toolbox - Getting Started Guide&#xff0c;在 MPC 控制器中指定缩放因子&#xff0c;可以简化权重调节过程&#xff0c;提高数值计算质量。 当被控对…

Dubbo分布式日志跟踪实现

前言 随着越来越多的应用逐渐微服务化后&#xff0c;分布式服务之间的RPC调用使得异常排查的难度骤增&#xff0c;最明显的一个问题&#xff0c;就是整个调用链路的日志不在一台机器上&#xff0c;往往定位问题就要花费大量时间。如何在一个分布式网络中把单次请求的整个调用日…

企业网络转型:优势与挑战

◎ 网络研究观 事实上&#xff0c;现代企业网络是一个由相互连接的数据、应用程序和基础设施组成的复杂网络。然而&#xff0c;企业不应让这种复杂性成为服务不可靠、安全漏洞或网络停机的借口。 由于组织和公司面临着从并购到云扩展的诸多挑战&#xff0c;以及网络技术日益复…

【算法一周目】双指针(1)

目录 1.双指针介绍 2.移动零 解题思路 C代码实现 3.复写零 解题思路 C代码实现 4.快乐数 解题思路 C代码实现 5.盛水最多的容器 解题思路 C代码实现 1.双指针介绍 常见的双指针有两种形式&#xff0c;一种是对撞指针&#xff0c;一种是快慢指针。 对撞指针&#x…

6547网:青少年软件编程Python等级考试(六级)真题试卷

2024年9月青少年软件编程Python等级考试&#xff08;六级&#xff09;真题试卷 题目总数&#xff1a;38 总分数&#xff1a;100 选择题 第 1 题 单选题 下面Python代码运行后出现的图像是&#xff1f;&#xff08; &#xff09; import matplotlib.pyplot as plt im…

【5种灵活有效方式】如何从死机手机中恢复内部数据?

本文介绍了5种方法来从死机的Android设备中恢复数据&#xff0c;包括使用U1tData安卓数据恢复软件、SD卡、OTG、Google云端硬盘和SamsungCloud。这些方法覆盖了不同情况下的数据恢复需求。 摘要由CSDN通过智能技术生成 我的手机掉在地上&#xff0c;现在无法开机。我丢失了所…

【安全测试】sqlmap工具(sql注入)学习

前言&#xff1a;sqimap是一个开源的渗透测试工具&#xff0c;它可以自动化检测和利用SQL注入缺陷以及接管数据库服务器的过程。它有一个强大的检测引擎&#xff0c;许多适合于终极渗透测试的小众特性和广泛的开关&#xff0c;从数据库指纹、从数据库获 取数据到访问底层文件系…

行业类别-智慧城市-子类别智能交通-细分类别自动驾驶技术-应用场景城市公共交通优化

1.大纲分析 针对题目“8.0 行业类别-智慧城市-子类别智能交通-细分类别自动驾驶技术-应用场景城市公共交通优化”的大纲分析&#xff0c;可以从以下几个方面进行展开&#xff1a; 一、引言 简述智慧城市的概念及其重要性。强调智能交通在智慧城市中的核心地位。引出自动驾驶…

24.11.11 JavaScript1

JavaScript&#xff08;简称js&#xff09;是⼀种描述语⾔&#xff0c;基于对象和事件驱动的脚本语⾔ JavaScript特点:脚本语⾔&#xff08;⼀种轻量级的编程语⾔&#xff09; ⼀种解释性语⾔&#xff08;⽆需预编译&#xff09; 被设计为向HTML⻚⾯添加交互⾏为 运⾏于客户端&…

PDF24:多功能 PDF 工具使用指南

PDF24&#xff1a;多功能 PDF 工具使用指南 在日常工作和学习中&#xff0c;PDF 是一种常见且重要的文档格式。无论是查看、编辑、合并&#xff0c;还是转换 PDF 文件&#xff0c;能够快速高效地处理 PDF 文档对于提高工作效率至关重要。PDF24 是一款免费、功能全面的 PDF 工具…

计算机的错误计算(一百五十一)

摘要 探讨 MATLAB 中反正弦 asin 与反余弦 acos 函数的计算精度问题。 例1. 已知 计算 及 直接贴图吧&#xff1a; 另外&#xff0c;16位的正确值分别为 0.1570785896071048e1、0.1043072384837152e-4、-0.1570785896071048e1 与 0.3141582222865945e1&#xff08;I…

Lua进阶用法之Lua和C的接口设计

一&#xff1a;lua/c的接口编程 首先skynet、openresty 都是深度使用 lua 语言的典范&#xff1b;学习 lua 不仅仅要学习基本用法&#xff0c;还要学会使用 c 与 lua 交互&#xff0c;这样才学会了 lua 作为胶水语言的精髓&#xff0c;下面看一下他们两个的调用过程。 虚拟栈&a…