机器学习算法系列(六)-- 朴素贝叶斯

news2024/12/24 21:40:16

.# 机器学习算法系列之 – 朴素贝叶斯

朴素贝叶斯法是基于概率统计,特征条件独立假设的分类方法,是一种非常常用的机器学习算法;通常用于处理文本分类和情感分析等自然语言处理任务中。相对于其他复杂的模型,朴素贝叶斯算法具有简单、易于实现、高效和良好的准确性等特点。

算法基础

概率论基础

条件概率

事件B已经发生的条件下,事件A发生的概率,称为事件A在给定事件B的条件概率,表示为P(A|B)
P ( A ∣ B ) = P ( A ∣ B ) P ( B ) P(A|B)= \frac{P(A|B)}{P(B)} PAB=P(B)P(AB)
其中,P(A∩B)=P(A|B)P(B)=P(B|A)P(A)

全概率公式

假设:样本空间S是由两个事件A与A’组成的和。如下图中,红色部分是事件A,绿色部分是事件A’,它们共同构成了样本空间S,且无交集
在这里插入图片描述
此时,依据全概率公式,事件B发生的概率P(B):
P ( B ) = P ( A ′ ∩ B ) + P ( A ∩ B ) = P ( B ∣ A ′ ) P ( A ′ ) + P ( B ∣ A ) P ( A ) P(B)=P(A'∩B)+P(A∩B)=P(B|A')P(A')+P(B|A)P(A) P(B)=P(AB)+P(AB)=P(BA)P(A)+P(BA)P(A)

总结 全概率公式: P ( B ) = ∑ i = 1 n P ( B ∣ A i ) P ( A i ) P(B)=\sum_{i=1}^{n}P(B|A_i)P(A_i) P(B)=i=1nP(BAi)P(Ai)

事件独立性

当公式P(A1,A2,…,An)=P(A1)P(A2)…P(An)成立时,则称A1,A2,…,An为相互独立的事件。表示每个事件发生的概率互不影响。

贝叶斯定理

关于概率方面的基础(正概率问题、逆概率问题,先验概率、后验概率)请读者自行了解,贝叶斯属于逆概率问题。我们先来看看贝叶斯公式的表达
P ( A ∣ B ) = P ( A ) P ( B ∣ A ) P ( B ) P(A|B)=P(A)\frac{P(B|A)}{P(B)} P(AB)=P(A)P(B)P(BA)

其中,P(A|B) 是指后验概率,即在给定观测到的 B 事件发生之后,A 事件发生的概率;P(A) 是指先验概率,即在没有任何其他信息的情况下,A 事件发生的概率;P(B|A) 是指似然度或条件概率,即在 A 事件已经发生的情况下,B 事件发生的概率;P(B) 是指证据因子,即 B 事件发生的概率,二者比值构成一个可能性函数。

贝叶斯定理核心思想

基于贝叶斯公式来进行分类。

它假设所有特征之间都是独立同分布的,从而化了模型计算的过程。

在文本分类中,我们可以使用朴素贝叶斯算法来计算一个文档属于某个类别的概率。

具体而言,我们可以首先根据训练数据集,计算每个单词(或者 n-gram 构成的词组)在每个类别中出现的概率,以及每个类别先验概率。然后可以使用贝叶斯公式来计算文档属于每个类别的概率,并选择概率最大的类别作为该文档的分类结果。

  • 也就是,在主观判断的基础上,先估计一个值(先验概率),然后根据观察的新信息不断修正(可能性函数)

也就是:新信息出现后A的概率=A的概率 x 新信息带来的调整

贝叶斯决策论

算法概述

对于给定的训练数据集,首先基于特征条件独立假设学习输入输出的联合概率分布;然后基于此模型,对给定的输入x,利用贝叶斯定理求出后验概率最大的输出y。实现方法简单有效,学习与预测的效率都很高,很常用。

贝叶斯决策论(Bayesian decision theory):概率框架下实施决策
的基本方法。对于分类任务,在所有相关概率已知的情形下,贝叶
斯决策论考虑如何基于概率和误判损失来选择最优的类别标记

  • 期望损失
    N种可能的类别标记 Y = { c 1 , c 2 , c 3 , . . . , c N } , λ i j Y=\{c_1,c_2,c_3,...,c_N\},\lambda_{ij} Y={c1,c2,c3,...,cN},λij表示将一个真实标记为 c j c_j cj的样本误分类为 c i c_i ci产生的损失,也叫“条件风险”:
    在这里插入图片描述
    于是,贝叶斯判定准则:为最小化总体风险,只需要每个样本选择那
    个能使条件风险R(c|x)最小的类别标记,即
    h ∗ ( x ) = a r g m i n c ∈ Y R ( c ∣ x ) h^*(x)=arg min_{c\in Y}R(c|x) h(x)=argmincYR(cx)
    此处h为贝叶斯最优分类器

假设目标是最小化分类错误率,则误判损失 λ i j \lambda_{ij} λij可以写为

在这里插入图片描述
此时条件风险: R ( c ∣ x ) = 1 − P ( c ∣ x ) R(c|x)=1-P(c|x) R(cx)=1P(cx)
于是,最小化分类错误率的贝叶斯分类器为:
h ∗ ( x ) = a r g   m a x c ∈ Y P ( c ∣ x ) h^*(x)=arg\ max_{c\in Y}P(c|x) h(x)=arg maxcYP(cx)
即对每个样本x,选择能使后验概率P(c|x)最大的类别标记

贝叶斯分类模型

朴素贝叶斯分类模型

朴素贝叶斯通过训练数据集学习联合概率分布P(X,Y)。具体要先学习先验概率分布P(Y= c k c_k ck)以及条件概率分布P(X=x|Y= c k c_k ck),进一步学习到联合概率分布。

其中后验概率的计算根据贝叶斯定理进行

朴素贝叶斯法实际上是生成数据的机制,所以属于生成模型。条件独立假设等于是说用于分类的特征,在类确定的条件下都是条件独立的。这一假设使朴素贝叶斯法变得简单,但有时会牺牲一定的分类准确率,在分类对给定的输入x通过学习到的模型计算后验概率分布P(c|x),将后验概率最大的类作为x的类输出。

最后得到 朴素贝叶斯分类器的表达式:
y = a r g   m a x c k P ( Y = c k ) ∏ j P ( X j = x j ∣ Y = c k ) y=arg\ max_{c_k}P(Y=c_k)\prod_jP(X^j=x^j|Y=c_k) y=arg maxckP(Y=ck)jP(Xj=xjY=ck)

后验概率最大化的含义(朴素贝叶斯原理)

等价于期望风险最小化。
首先,假设选择0-1损失函数:
L ( Y , f ( X ) ) = { 1 , Y ≠ f ( X ) 0 , Y = f ( X ) L(Y,f(X))= \begin{cases} 1,Y\neq f(X)\\ 0,Y=f(X) \end{cases} L(Y,f(X))={1Y=f(X)0Y=f(X)
f(X)为分类决策函数。此时期望风险函数为
R e x p ( f ) = E [ L ( Y , f ( X ) ) ] R_{exp}(f)=E[L(Y,f(X))] Rexp(f)=E[L(Y,f(X))],此处期望是对联合分布P(X,Y)取的。再由此取得条件期望
R e x p ( f ) = E X ∑ k = 1 K [ L ( c k , f ( X ) ) ] P ( c k ∣ X ) R_{exp}(f)=E_X\sum^K_{k=1}[L(c_k,f(X))]P(c_k|X) Rexp(f)=EXk=1K[L(ck,f(X))]P(ckX)
可以看出,为了使得期望风险最小化,我们只需要对X=x逐个极小化,由此便可得到:
f ( x ) = a r g   m i n y ∈ Y ∑ k = 1 K L ( c k , y ) P ( c k ∣ X = x ) = a r g   m i n y ∈ Y ∑ k = 1 K P ( y ≠ c k ∣ X = x ) = a r g   m i n y ∈ Y ( 1 − P ( y = c k ∣ X = x ) ) = a r g   m a x y ∈ Y P ( y = c k ∣ X = x ) f(x)=arg\ min_{y\in Y}\sum^K_{k=1}L(c_k,y)P(c_k|X=x)\\ =arg\ min_{y\in Y}\sum^K_{k=1}P(y\neq c_k|X=x)\\ =arg\ min_{y\in Y}(1-P(y=c_k|X=x)) =arg\ max_{y\in Y}P(y=c_k|X=x) f(x)=arg minyYk=1KL(ck,y)P(ckX=x)=arg minyYk=1KP(y=ckX=x)=arg minyY(1P(y=ckX=x))=arg maxyYP(y=ckX=x)
这样一来,根据期望风险最小化准则就得到了后验概率最大化准则:
f ( x ) = a r g   m a x y ∈ Y P ( c k ∣ X = x ) f(x)=arg\ max_{y\in Y}P(c_k|X=x) f(x)=arg maxyYP(ckX=x)
也就是==“朴素贝叶斯法”所采取的原理==

由此,朴素贝叶斯分类器的训练过程,就是基于训练集估计先验概率P©,并为每个属性估计条件概率 P ( x j ∣ c ) P(x^j|c) P(xjc)

  • 估计先验概率:
    令Dc是训练集D中第c类样本组成的集合,若有充足的独立同分
    布样本,则先验概率P© 为
    在这里插入图片描述

  • 估计条件概率
    离散型:令 D c , x i D_{c,x_i} Dc,xi表示 D c D_c Dc在第i个属性上取值为 x i x_i xi的样本组成的集合,则条件概率 P ( x i ∣ c ) P(x_i|c) P(xic)
    在这里插入图片描述
    连续型:对于连续属性考虑概率密度函数,假定
    在这里插入图片描述
    μ c , x i 和 σ c , x i 2 \mu_{c,x_i}和\sigma^2_{c,x_i} μc,xiσc,xi2分别为第c类样本在第i个属性上取值的均值和方差,则
    在这里插入图片描述

算法步骤

综上,我们可以总结出朴素贝叶斯分类模型求解的基本步骤
1、计算先验概率
2、计算条件概率
3、对于给定实例,计算 P ( Y = c k ) ∏ j P ( X j = x j ∣ Y = c k ) , k = 1 , 2 , . . . , K P(Y=c_k)\prod_jP(X^j=x^j|Y=c_k),k=1,2,...,K P(Y=ck)jP(Xj=xjY=ck),k=1,2,...,K
4、确定实例x的类y= a r g   m a x c k P ( Y = c k ) ∏ j P ( X j = x j ∣ Y = c k ) arg\ max_{c_k}P(Y=c_k)\prod_jP(X^j=x^j|Y=c_k) arg maxckP(Y=ck)jP(Xj=xjY=ck)

贝叶斯估计

若当某个属性值在训练样本中从未出现过时,估计条件概率时,连乘结果都会为0,此时会影响到后验概率计算的结果,产生偏差分类。

解决办法:贝叶斯估计。

具体而言,条件概率的贝叶斯估计是:
P λ ( X j = a j l ∣ Y = c k ) = ∑ i = 1 N I ( x i j = a j l , y i = c k ) + λ ∑ i = 1 N I ( y i = c k ) + S j λ P_\lambda(X^j=a_{jl|Y=c_k})=\frac{\sum^N_{i=1}I(x_i^j=a_{jl},y_i=c_k)+\lambda}{\sum^N_{i=1}I(y_i=c_k)+S_j\lambda} Pλ(Xj=ajlY=ck)=i=1NI(yi=ck)+Sjλi=1NI(xij=ajl,yi=ck)+λ
通常取 λ \lambda λ为1,此时称为拉普拉斯平滑。
同样,先验概率的贝叶斯估计是
P λ ( Y = c k ) = ∑ i = 1 N I ( y i = c k ) + λ N + K λ P_\lambda(Y=c_k)=\frac{\sum^N_{i=1}I(y_i=c_k)+\lambda}{N+K\lambda} Pλ(Y=ck)=N+Kλi=1NI(yi=ck)+λ

朴素贝叶斯分类模型的使用

  • 若对预测速度要求高:预计算所有概率估值,使用时“查表”
  • 若数据更替频繁:不进行任何训练,收到预测请求时再估值(懒惰学习 , lazy learning)
  • 若数据不断增加:基于现有估值,对新样本涉及的概率估值进行修正(增量学习 , incremental learning

优缺点

优点
• 朴素贝叶斯模型有稳定的分类效率;
• 对小规模的数据表现很好,能处理多分类任务;
• 对缺失数据不太敏感,算法也比较简单,常用于文本分类。
缺点
• 朴素贝叶斯假定每个变量之间是相互独立的,但是现实中的数据
往往都具有一定的相关性,很少有完全独立的;
• 由于我们是通过先验和数据来决定后验的概率从而决定分类,所
以分类决策存在一定的错误率

算法实战

朴素贝叶斯算法实战可参考该博客:《《机器学习实战》第四章 Python3代码-(亲自修改测试可成功运行)

总结

总结来说,朴素贝叶斯算法是一种简单、高效、易于实现的器学习算法,特别适用于文本分类和情感分析等自然语言处理任务。在实际应用中,我们可以使用不同变体的朴素贝叶斯算法来处理不同类型的数据。

参考

《统计学习方法》,李航, 清华大学出版社,第二版
《机器学习》,周志华,清华大学出版社

以上就是关于决策树的分享,若有不妥之处,欢迎各路大佬不吝赐教~
喜欢的伙伴点个赞,顺便收藏、关注一下吧~

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

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

相关文章

提防利用 zip 域的新型网络钓鱼技术“浏览器中的文件归档器”

“浏览器中的文件存档器”是一种新的网络钓鱼技术,当受害者访问 .ZIP 域时,网络钓鱼者可以利用该技术。当受害者访问 .ZIP 域时,网络钓鱼者可以使用一种称为“浏览器中的文件存档器”的新型网络钓鱼技术在 Web 浏览器中“模拟”文件存档器软件。安全研究员 mr.d0x 详细介绍了…

A-可达鸭数学

题目链接 示例1 输入 9 1 -1 0 6 54 -8 520 1907 -2023输出 w m b wmb wmbbb mbw wmbwwmw wbmbmmbm mbwmbbwm备注: 请注意,在可达鸭数学里是没有负号的。 请注意,不要输出多余的前导b,否则会被判Wrong Answer。(例如&#xff…

英文论文(sci)解读复现【NO.17】旋转至参加:卷积三重注意力模块

此前出了目标检测算法改进专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读发表高水平学术期刊中的 SCI论文&a…

Elasticsearch第一天学习笔记

目录 一、Elasticsearch概述 二、elasticsearch入门 一、Elasticsearch概述 (一)elasticsearch是什么? The Elastic Stack, 包括 Elasticsearch 、 Kibana 、 Beats 和 Logstash (也称为 ELK Stack )。 Elaticsear…

数据库之主键、联合主键

参考文章:数据库之主键、联合主键 一、主键、联合主键简介 数据库主键是用来标记数据记录唯一性的列,不能为空,不能重复。 主键具有的特点:唯一性、非空性。 数据库联合主键:可以将多个列同时作为主键。&#xff0…

SQL语句之DQL语言

说明:DQL(Data Query Language,数据查询语言),用来查询数据库表中的记录。有的书中,会把DQL语言放入到DML(Data Manipulation Language,数据操作语言:数据的增删改&#…

金融数据获取:通过Ajax跳转的网页怎么爬?以东方财富基金净值数据为例

你是否碰到过点击网站上的按钮或链接,网页数据进行了刷新,但浏览器上显示的网址却没有任何变化的情况,这其实就是利用Ajax跳转的网页。本期笔者将以东方财富网为例展示如何获取Ajax跳转的网页内容,本文主要内容如下: 目…

MyBatis(多表查询,动态SQL的使用)

目录 多表查询 查询文章详情 查询一个用户底下的所有文章 动态SQL的使用 if 标签 trim 标签 where 标签 set 标签 foreach 标签 多表查询 现在有俩张表,一张是文章表,一张是用户表.如下: 查询文章详情 我们现在想查询得到一张表,表里面的内容和文章表大多一致,只是要在…

银行从业资格证(初级) 5天零基础拿证攻略【个人经历,亲测】

我的科目:《法律法规》、《个人理财》 方法 直接做真题,做真题错题总结归纳。 教材可买可不买,时间不够可以不看教材。 可以买天一金融的真题汇编,它附赠一个考点整理的小册子。 一定要自己整理知识框架。 看个人习惯选择网上做…

chatgpt赋能python:Python列表中随机抽取6个元素的简单方法

Python列表中随机抽取6个元素的简单方法 在Python编程中,列表是一种常用的数据类型,它允许我们存储和操作一系列数据。有时候,我们需要从列表中随机抽取一些元素,比如从一组名字中随机选择几个人参加抽奖等。本文将介绍如何使用P…

MIT 6.824 lab distributed system 分布式系统

https://youtu.be/cQP8WApzIQQ 概念 为什么需要分布式系统? high performanceparallelism:分布式系统可以实现CPU、内存、硬盘的并行运行fault tolerancephysical:security / isolated 分布式系统的困难 concurrency:各个并行的…

【unity小技巧】使用贝塞尔曲线实现导弹随机攻击敌人,也可以用于拾取物品

文章目录 先看效果代码实现1.导弹代码2.玩家生成导弹代码3.玩家挂载代码4.导弹挂载代码先看效果 代码实现 1.导弹代码 记得配置敌人为enemy标签 using System.Collections; using System.Collections.Generic; using

Nautilus Chain:独特且纯粹的创新型 Layer3

以 Layer3 架构为主要特点的模块化公链 Nautilus Chain 即将在近期上线主网,这也进一步引发了行业关于 Layer3 的讨论。 实际上,在2022年以太坊的创始人 Vitalik 提出了三大目标:Layer2 用于扩展,Layer3 用于定制功能,…

Transformer模型原理—论文精读

文章目录 前言模型架构Encoder和DecoderEncoderDecoder AttentionFFNEmbeddings和Positional EncodingEmbeddingsPositional Encoding 总结 前言 今天来看一下Transformer模型,由Google团队提出,论文名为《Attention Is All You Need》。论文地址。 正如…

Openwrt_XiaoMiR3G路由器_刷入OpenWrt

刷入Openwrt之前请保证小米R3G路由器已经刷入Breed控制台固件。 刷入Breed请参考: Openwrt_XiaoMiR3G路由器_刷入Breed固件 路由器具体配置参考 小米路由器3G参数 - 小米商城 既然要刷入OpwnWrt就需要线编译固件,使用lede的OpenWrt源码编译。 进入 …

K8S集群安装(二)

目录 1 安装说明.... 1 1.1 安装环境.... 1 1.2 生产环境可部署Kubernetes集群的两种方式.... 2 1.3 操作系统初始化配置.... 3 2 安装Docker/kubeadm/kubelet【所有节点】.... 4 2.1 安装Docker. 4 2.2 添加阿里云YUM软件源.... …

《Apollo 智能驾驶进阶课程》

来自 : https://www.bilibili.com/video/BV1G341117NQ/ https://apollo.baidu.com/ 主要学习资源如下: Apollo社区公众号,直接有整个视频教程的微信推文教程:链接一个CSDN博主记录的笔记: https://blog.csdn.net/qq_45…

08 redis经典五种数据类型及底层实现

redis是字典数据库KV键值对是什么 redis 是 key-value 存储系统,其中key类型一般为字符串,value 类型则为redis对象(redisObject)Redis定义了redisObjec结构体来表示string、hash、list、set、zset等数据类型 C语言struct结构体语法简介Redis 中每个对象…

【华为机试】死记硬背没思路?一般人我劝你还是算了吧

大家好,我是哪吒。 五月份之前,如果你参加华为OD机试,收到的应该是2022Q4或2023Q1,这两个都是A卷题。 5月10日之后,很多小伙伴收到的是B卷,那么恭喜你看到本文了,抓紧刷题吧。B卷新题库正在更…

Spring依赖注入解析

目录 依赖注入大致要点 依赖注入大致流程 Bean的预实例化 doGetBean createBean 完备Bean的创建过程 createBeanInstance populateBean 依赖注入大致要点 Spring在Bean实例的创建过程中做了很多精细化控制finishBeanFactoryInitialization方法里面的preInstantiateSing…