机器学习——贝叶斯分类器

一、贝叶斯决策论

  贝叶斯决策论是概率框架下实施决策的基本方法。
  假设有 N N N种可能的类别标记,即 Y = { c 1 , c 2 , . . . , c N } Y=\{c_1,c_2,...,c_N \} Y={c1,c2,...,cN} λ i j \lambda_{ij} λij是将一个真实标记为 c j c_j cj的样本误分类为 c i c_i ci所产生的损失。基于后验概率 P ( c i ∣ x ) P(c_i|\bm x) P(cix)可获得将样本 x \bm x x分类为 c i c_i ci所产生的期望损失,即在样本 x \bm x x上的“条件风险”
R ( c i ∣ x ) = ∑ j = 1 N λ i j P ( c j ∣ x ) R(c_i|\bm x)=\sum_{j=1}^N \lambda_{ij} P(c_j|\bm x) R(cix)=j=1NλijP(cjx)

为最小化总体风险,只需要在每个样本上选择能使条件风险 R ( c ∣ x ) R(c|\bm x) R(cx)最小的类别标记。

  即, h ∗ ( x ) = a r g m i n x ∈ Y R ( c ∣ x ) h^*(\bm x)=argmin_{x \in Y} {R(c|\bm x) } h(x)=argminxYR(cx)

h ∗ h^* h被称为贝叶斯最优分类器,与之对应的总体风险被称为贝叶斯风险

  若要使用贝叶斯判定准则来最小化决策风险,首先要获得后验概率 P ( c ∣ x ) P(c|\bm x) P(cx),但是在现实任务中难以直接获得。所以机器学习所要实现的是基于有限的训练样本集尽可能准确地估计出后验概率 P ( c ∣ x ) P(c|\bm x) P(cx)

  解决上述问题有两种策略:

判别式模型生成式模型
思路直接对 P ( c ∣ x ) P(c |\bm x ) P(cx)建模先对联合概率分布 P ( x , c ) P(\bm x,c) P(x,c)建模,再由此获得 P ( c ∣ x ) P(c |\bm x ) P(cx)
代表算法1、决策树 2、BP神经网络 3、SVM贝叶斯分类器

贝叶斯分类器 ≠ \neq =贝叶斯学习

二、极大似然估计

1、贝叶斯主义认为:分布的参数是分布情况;
2、频率主义包括统计学习;
3、极大似然估计是统计学的一大贡献;
4、极大似然估计需要假设某种概率分布形式。

  估计类条件概率的一种常用策略是先假定其具有某种确定的概率分布形式,再基于训练样本对概率分布的参数进行估计。
  假设 P ( x ∣ c ) P(\bm x |c) P(xc)具有确定的形式并且被参数向量 θ c \bm \theta_c θc唯一确定,则需要利用训练集 D D D估计参数 θ c \bm \theta_c θc.
  令 D c D_c Dc表示训练集 D D D中第 c c c类样本组成的集合,假设这些样本是独立同分布的,则参数 θ c \bm \theta_c θc对于数据集 D c D_c Dc的似然是
P ( D c ∣ θ c ) = ∏ x ∈ D c P ( x ∣ θ c ) P(D_c|\bm \theta_c)=\prod_{\bm x \in D_c} P(\bm x|\bm \theta_c) P(Dcθc)=xDcP(xθc)
  对 θ c \bm \theta_c θc进行极大似然估计,最大化似然 P ( D c ∣ θ c ) P(D_c|\bm \theta_c) P(Dcθc)的参数值 θ ^ c \hat {\bm \theta}_c θ^c.极大似然估计是在 θ c \bm \theta_c θc所有可能取值中,找到一个能使数据出现的“可能性”最大的值。
  但是上式中的连乘操作易造成下溢,通常使用对数似然(log-likelihood)
L L ( θ c ) = log ⁡ P ( D c ∣ θ c ) = ∑ x ∈ D c log ⁡ P ( x ∣ θ c ) LL(\bm \theta_c)=\log P(D_c|\bm \theta_c)=\sum_{\bm x \in D_c} \log P(\bm x| \bm {\theta_c}) LL(θc)=logP(Dcθc)=xDclogP(xθc)
  此时,参数 θ c \bm \theta_c θc的极大似然估计 θ ^ c \hat {\bm \theta}_c θ^c
θ ^ c = arg ⁡ max ⁡ θ c L L ( θ c ) \hat {\bm \theta}_c=\arg \max_{\bm \theta_c} LL(\bm \theta_c) θ^c=argθcmaxLL(θc)

三、朴素贝叶斯分类器

P ( x ∣ c ) P(\bm x| c) P(xc)的主要障碍:所有属性上的联合概率难以从有限训练样本估计获得;计算上组合爆炸;数据上样本稀疏;属性越多,问题越严重。

  朴素贝叶斯分类器采用了“属性条件独立性假设”:对已知类别,假设所有属性相互独立,即假设每个属性独立地对分类结果发生影响。基于属性条件独立性假设:
P ( c ∣ x ) = P ( c ) P ( x ∣ c ) P ( x ) = P ( c ) P ( x ) ∏ i = 1 d P ( x i ∣ c ) P(c|\bm x)=\frac {P(c) P(\bm x|c)} {P(\bm x)}=\frac {P(c)} {P(\bm x)} \prod_{i=1}^d P(x_i|c) P(cx)=P(x)P(c)P(xc)=P(x)P(c)i=1dP(xic)
  其中 d d d为属性数目, x i x_i xi x \bm x x在第 i i i个属性上的取值。
  由于对于所有类别来说 P ( x ) P(\bm x) P(x)相同,因此贝叶斯判定准则有:
h n b ( x ) = arg ⁡ max ⁡ c ∈ Y P ( x ) ∏ i = 1 d P ( x i ∣ c ) h_{nb}(\bm x)=\arg \max_{c \in Y} P(x) \prod_{i=1}^d P(x_i|c) hnb(x)=argcYmaxP(x)i=1dP(xic)
  这即为朴素贝叶斯分类器的表达式。
  朴素贝叶斯分类器的训练过程就是基于训练集 D D D来估计类先验概率 P ( c ) P(c) P(c),并为每个属性估计条件概率 P ( x i ∣ c ) P(x_i|c) P(xic).
  令 D c D_c Dc表示训练集 D D D中第 c c c类样本组成的集合,若有充足的独立同分布样本,则可容易地估计出类先验概率
P ( c ) = ∣ D c ∣ D P(c)=\frac {|D_c|} {D} P(c)=DDc
  离散属性:令 D c , x i D_{c,x_i} Dc,xi表示 D c D_c Dc中在第 i i i个属性上取值为 x i x_i xi的样本组成的集合,则条件概率 P ( x i ∣ c ) P(x_i|c) P(xic)可估计为
P ( x i ∣ c ) = ∣ D c , x i ∣ D c P(x_i|c)=\frac {|D_{c,x_i}|} {D_c} P(xic)=DcDc,xi
连续属性:可考虑概率密度函数

四、拉普拉斯修正

  为了避免其他属性携带的信息被训练集中未出现的属性值“抹去”,在估计概率值时通常要进行“平滑”,常用“拉普拉斯修正”。
  具体来说,令 N N N表示训练集 D D D中可能得类别数, N i N_i Ni表示第 i i i个属性可能的取值数,则
P ^ ( c ) = ∣ D c ∣ + 1 ∣ D ∣ + N \hat P(c)=\frac {|D_c|+1} {|D|+N} P^(c)=D+NDc+1
P ^ ( x i ∣ c ) = ∣ D c , x i ∣ + 1 ∣ D c ∣ + N i \hat P(x_i|c)=\frac {|D_{c,x_i}|+1} {|D_c|+N_i} P^(xic)=Dc+NiDc,xi+1
  拉普拉斯修正避免了因训练集样本不充分而导致概率估值为零的问题,并且在训练集变大时,修正过程所引入的先验的影响也会逐渐变得可忽略,使得估值逐渐趋向于实际概率值。

拉普拉斯修正实质上假设了属性值与类别均匀分布,这是在朴素贝叶斯学习过程中额外引入的关于数据的先验。

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

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

相关文章

【网络】网络层协议——IP协议

目录 1.TCP和IP的关系 2.IP协议报文 2.1. 4位首部长度,16位总长度,8位协议 2.2. 8位生存时间 ,32位源IP地址和32位目的IP地址 3.IP地址的划分 3.1.IP地址的表现形式 3.2.旧版IP地址的划分 3.2.1.旧版IP地址的划分思路 3.2.2.分类划…

一文读懂flask

一文读懂flask 在实际工作中遇到了需要在通过gunicorn启动flask应用,并在gunicorn启动的每个woker之前为每个woker初始化ros节点信息,但在改造的过程中遇到通过worker数指定节点名称时多次初始化节点时只有一个woker的节点能够初始化成功,因…

鸿蒙开发 数组改变,ui渲染没有刷新

问题描述: 数组push, 数组长度改变,ui也没有刷新 打印出了数组 console.log(this.toDoData.map(item > ${item.name}).join(, ), this.toDoData.length) 原代码: Text().fontSize(36).margin({ right: 40 }).onClick(() > {TextPicker…

MySQL 数据库深度解析:安装、语法与高级查询实战

一、引言 在现代软件开发和数据管理领域中,MySQL 数据库凭借其高效性、稳定性、开源性以及广泛的适用性,成为了众多开发者和企业的首选。无论是小型项目还是大型企业级应用,MySQL 都能提供可靠的数据存储和管理解决方案。本文将深入探讨 MyS…

uni-app - - - - - 使用uview-plus详细步骤

uni-app - - - - - 使用uview-plus详细步骤 1. 使用HbuilderX创建空白项目2. 安装插件3. uview-plus配置使用3.1 main.js配置3.2 uni.scss配置3.3 App.vue配置3.4 pages.json 4. 重启Hbuilderx 1. 使用HbuilderX创建空白项目 2. 安装插件 工具 > 插件安装 > 前往插件市场…

“精读”怎么翻译?

中文版 “Intensive reading” 是指一种深度阅读的方式,通常用于精读和分析文本的细节。与广泛阅读(extensive reading)不同,广泛阅读的目标是通过阅读大量的内容来提高整体的语言理解能力,而集中的阅读则注重理解单一…

Linux上安装Conda以管理Python环境

在Windows下装了Linux发行版Debian,以后不用来回开启VMware啦!并在Debian中安装了Conda,记录一下所需命令(其他版本如Ubuntu中安装是一样的命令)。 目录 1.WSL 2.安装Conda 3.Python环境配置 1.WSL Install WSL | Microsoft Learn 微软官网 ①以管理…

STM32(F103ZET6)第二十四课:IAP离线固件升级

目录 开发需求IAP介绍内部的内存分区1.内部FLASH划分2.内部数据读取3.数据写入与擦除4.具体升级函数 IAP更新升级步骤1.系统启动流程2.IAP启动流程详解3.整体设计流程4.Boot Loader的代码编写5.APP1代码编写(目前)6.APP2代码编写(待升级&…

WEB开发---使用HTML CSS开发网页实时显示当前日期和时间

自己刚开始学习html css知识&#xff0c;临时做个网页&#xff0c;实时显示当前日期和时间功能。 代码如下&#xff1a; test.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport&q…

python解释器[源代码层面]

1 PyDictObject 在c中STL中的map是基于 RB-tree平衡二元树实现&#xff0c;搜索的时间复杂度为O(log2n) Python中PyDictObject是基于散列表(散列函数)实现&#xff0c;搜索时间最优为O(1) 1.1 散列列表 问题&#xff1a;散列冲突&#xff1a;多个元素计算得到相同的哈希值 …

ARM 寻址方式(18)

立即寻址&#xff1a; 也叫作立即数寻址。 就是 立即数&#xff0c;本身就包含在了 指令当中。 举例&#xff1a; ADD R0, R0,#1 其中&#xff0c;#1 &#xff0c; 就是立即数&#xff0c;对于16进制的立即数&#xff0c; 需要在# 后加上 #0x. 寄存器寻址。 就是数据就在…

219. 存在重复元素 II【 力扣(LeetCode) 】

一、题目描述 给你一个整数数组 nums 和一个整数 k &#xff0c;判断数组中是否存在两个 不同的索引 i 和 j &#xff0c;满足 nums[i] nums[j] 且 abs(i - j) < k 。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 二、测试用例 示例 1&…

多模态论文学习8.28

系列文章目录 文章目录 系列文章目录LAMM: Label Alignment for Multi-Modal Prompt Learning学习1、论文理解1、研究背景2、论文贡献3、方法框架4、研究思路5、实验6、限制 LAMM: Label Alignment for Multi-Modal Prompt Learning学习 1、论文理解 VL模型和下游任务之间的类…

单调栈,LeetCode 2289. 使数组按非递减顺序排列

一、题目 1、题目描述 给你一个下标从 0 开始的整数数组 nums 。在一步操作中&#xff0c;移除所有满足 nums[i - 1] > nums[i] 的 nums[i] &#xff0c;其中 0 < i < nums.length 。 重复执行步骤&#xff0c;直到 nums 变为 非递减 数组&#xff0c;返回所需执行的…

Amos百度云下载与安装 附图文安装教程

如大家所了解的&#xff0c;Amos是一款经常被运用在社会科学研究中的数据分析软件&#xff0c;尤其广泛用于人文社会科学领域的各种研究中。运用Amos&#xff0c;可以帮助研究人员使用结构方程模型 (SEM) 对他们收集到的数据进行分析与解释。 自用Amos 24安装包&#xff0c;可按…

数据结构与算法(循环链表,双向链表)

循环链表 最后一个元素指向首元素 带尾指针的循环链表合并 双向链表 双向链表:在单链表的每个结点里再增加一个指向其直接前驱的指针 域 prior &#xff0c;这样链表中就形成了有两个方向不同的链&#xff0c;故称为双向链表 双向链表插入操作 思路 代码 删除操作 思路 代…

一个很大的文件,文件的每一行是一个很大的数字,如果给你一个单机,内存比较小,存不了这么大的文件,但是硬盘是无限大的,如何对文件做一个排序输出

对于需要排序的大文件,尤其是当文件大小超过了可用内存时,可以采用外部排序算法。这里我描述一种基于归并排序思想的外部排序方法,它将大文件分割成多个小文件,在每个小文件上进行排序,然后再将这些排序好的小文件合并成一个有序的大文件。 以下是具体的步骤: 步骤 1: …

CTFHub SSRF靶场通关攻略(6-11)

FastCGI协议 首先写一个php的一句话木马&#xff0c;并进行base64编码 <?php eval($_POST[cmd]);?> 编码完成后把他写入shell.php文件中 echo "PD9waHAgQGV2YWwoJF9QT1NUW2NtZF0pOz8" | base64 -d > shell.php 使用Gopherus工具生成payload: 执命令 …

【工控】线扫相机小结

背景简介 我目前接触到的线扫相机有两种形式: 无采集卡,数据通过网线传输。 配备采集卡,使用PCIe接口。 第一种形式的数据通过网线传输,速度较慢,因此扫描和生成图像的速度都较慢,参数设置主要集中在相机本身。第二种形式的相机配备采集卡,通常速度更快,但由于相机和…

Clickhouse集群化(三)集群化部署

1. 准备 clickhouse支持副本和分片的能力&#xff0c;但是自身无法实现需要借助zookeeper或者clickhouse-keeper来实现不同节点之间数据同步&#xff0c;同时clickhouse的数据是最终一致性 。 2. Zookeeper 副本的写入流程 没有主从概念 平等地位 互为副本 2.1. 部署zookeep…