当前位置: 首页 > article >正文

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

一、贝叶斯决策论

  贝叶斯决策论是概率框架下实施决策的基本方法。
  假设有 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.kler.cn/a/287988.html

相关文章:

  • C++ | Leetcode C++题解之第560题和为K的子数组
  • 基本数据类型和包装类型的区别、缓存池、自动拆箱装箱(面试题)
  • C++中特殊类设计/单例模式
  • java版嘎嘎快充汽车单车充电系统源码系统jeecgboot
  • SASS 控制指令详解@for、@if、@each、@while
  • 关于在Reverse函数中不能使用L=s而是*L=*s的原因分析
  • 【iOS】属性关键字
  • LivePortraitV3,支持图像驱动和区域控制,更精确的人像控制(WIN,MAC)
  • gitlab 包含模型文件,比较大,怎么上传
  • 单片机-STM32 ADC应用(五)
  • 擅长领域python ,深度强化学习,人工智能,计算机等,可咨询
  • LINUX-ubuntu20.04下安装GUI-Guider出现的依赖问题解决办法
  • JavaEE-servlet
  • 本地大语言模型部署及应用
  • 【大模型实战篇】RoPE旋转位置编码PyTorch代码分析
  • reduce使用场景
  • 【k8s系列】Kubernetes Service 深度解析:从基础到实战
  • 如何使用 TortoiseGit(小乌龟)进行分支创建、切换与合并以及解决冲突
  • SpringMvc详解
  • 进程间通信——IPC机制(二)消息队列
  • 设计模式创建型模式之原型模式
  • Android TV的行添加和行中数据项添加
  • 3. 创建一个新的 Git 仓库
  • MySQL之数据库基础
  • SpringBoot项目集成支付宝
  • 2024.8.28 C++