【模式识别】最小风险贝叶斯决策

贝叶斯公式

如果每一类在空间中互不相交,有清晰的决策边界,那么就没有必要用贝叶斯方法了。这种叫做确定统计分类。
在这里插入图片描述
如果这些类相互之间有重合,新的样本的特征落到一个重合区域,那么就要判断该样本属于某一类的概率。从而通过最小风险或最小错误率的公式来计算具体属于哪一类。这种叫做不确定统计分类。
在这里插入图片描述
我们的训练数据是样本特征和样本标签。所以我们已知的是属于某一类的样本具有的特征。即知道某一类样本的统计分布特性。
这种分类方法就变成从这些数据中来推测具有某特征的样本属于哪一类。
把每一类样本整体出现的概率记做先验概率
P ( w i ) P(w_i) P(wi)
把某一类中的某样本特征出现的概率记做类条件概率
P ( x ∣ w i ) P(x|w_i) P(xwi)
把我们要计算某一个具体的样本特征值属于哪一类的概率记做后验概率
P ( w i ∣ x ) P(w_i|x) P(wix)
用贝叶斯公式表示:
P ( w i ∣ x ) = P ( x ∣ w i ) P ( w i ) P ( x ) P(w_i|x)=\frac{P(x|w_i)P(w_i )}{P(x)} P(wix)=P(x)P(xwi)P(wi)
首先来看右边,分布是全部样本空间的x,分子是属于某一个类的x的数量,所以两者的比值就是属于 w i w_i wi类的 x x x的数量占总 x x x的数量的大小。(放到这里就是,数量就是可能性的概念,可能性有多少。是所有类别中,x的可能性之和)

贝叶斯分类特点:

  1. 先验概率是计算后验概率的基础,是通过大量统计来得到的,这就是大数定理。而有人有说许多事件的发生不具有可重复性,所以先验概率只能根据对置信度的主管判断。
  2. 那么就以新获得的信息对先验概率进行修正。
  3. 分类决策一定存在错误率,即使错误率很低。

贝叶斯决策

不同的贝叶斯分类器有不同的贝叶斯决策

最小错误率分类器

这种最简单,就是把样本划分到后验概率大的那一类去。
P ( w i ∣ x ) = m a x P ( w j ∣ x ) , j ∈ [ 1 , c ] P(w_i|x)=maxP(w_j|x),j \in [1,c] P(wix)=maxP(wjx)j[1,c]
x ∈ w i x \in w_i xwi
因为对于每一类, P ( x ) P(x) P(x)都相等,所以
P ( x ∣ w i ) P ( w i ) = m a x [ P ( x ∣ w j ) P ( w j ) ] P(x|w_i)P(w_i)=max[P(x|w_j)P(w_j)] P(xwi)P(wi)=max[P(xwj)P(wj)]
x ∈ w i x \in w_i xwi
分析错误率

P ( e ) = ∫ − ∞ + ∞ P ( e r r o r , x ) d x = ∫ − ∞ + ∞ P ( e r r o r ∣ x ) P ( x ) d x P(e)= \int_{-\infty}^{+\infty}P(error,x)dx=\int_{-\infty}^{+\infty}P(error|x)P(x)dx P(e)=+P(error,x)dx=+P(errorx)P(x)dx
x x x取不同值时,错误率的积分
P ( e r r o r ∣ x ) = ∑ j = 1 c P ( w j ∣ x ) − m a x P ( w j ∣ x ) P(error|x)=\sum_{j=1}^cP(w_j|x)-maxP(w_j|x) P(errorx)=j=1cP(wjx)maxP(wjx)
最小错误率和最大后验概率两者等价。
对于最小错误率规则,确定了最小错误率也就确定了决策边界。也就是两个后验概率相等的点。
在这里插入图片描述

g ( x ) = P ( w 1 ∣ x ) − P ( w 2 ∣ x ) g(x)=P(w_1|x)-P(w_2|x) g(x)=P(w1x)P(w2x)
g ( x ) > 0 , x ∈ w 1 g(x)>0,x \in w_1 g(x)>0xw1
g ( x ) < 0 , x ∈ w 2 g(x)<0,x \in w_2 g(x)<0xw2

但是最小错误率贝叶斯决策不一定是线性
在这里插入图片描述

最小风险错误率

在这里插入图片描述
该患者在出现症状后,实为H7N9的概率为(症状已经出现了)
在这里插入图片描述
同理:
在这里插入图片描述
则他出现症状是H7N9的概率为
在这里插入图片描述

但是如果出现误诊后,后果很严重,但是误诊为感冒则问题不大。所以仅仅考虑识别错误率不对,还要考虑后果。这就是最小风险错误率。
条件风险
R ( a i ∣ x ) = ∑ j = 1 c λ i j P ( w j ∣ x ) R(a_i|x)=\sum_{j=1}^c \lambda_{ij}P(w_j|x) R(aix)=j=1cλijP(wjx)
对样本 x x x,采取决策 a j a_j aj的总风险
在这里插入图片描述
接上题,R是损失风险
在这里插入图片描述
最后取风险最小的决策,那就是诊断为H7N9。
在这里插入图片描述

朴素贝叶斯

在是用贝叶斯决策时,有两个条件必须是已知的:

  1. 各种样本出现的整体先验概率
  2. 各类中取得特征空间中某个点的类条件概率

先验概率可以从大量数据统计中得到,类条件概率需要从数据统计中估计,根据某一类的样本在各个维度上的特征值来估计其概率分布情况。这个概率分布,是一个各个特征维度上的联合概率分布,如果各个维度不独立,则估计很困难,如果各个特征相互独立,就叫朴素贝叶斯分类器。
在这里插入图片描述

正态分布下的贝叶斯决策

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

假设类条件概率符合二维正态分布,也就是 P ( x ∣ w i ) P(x|w_i) P(xwi)
在这里插入图片描述

式子中有指数,不方便计算,取对数(指数函数是单调的)
在这里插入图片描述
中间的 − d 2 l n 2 π -\frac{d}{2}ln2 \pi 2dln2π与计算无关

在这里插入图片描述
考虑不同情况:

每类协方差矩阵相等,先验概率相同

如果每一个样本的协方差矩阵都相等,类内各个特征维度间相互独立,且方差相同。
那么
在这里插入图片描述

在这里插入图片描述
因为先验概率都一样,所以可以 进一步简化
在这里插入图片描述
就是这种类型
在这里插入图片描述
这种情况被称为最小距离分类器,就是看x到各个类心的距离。

每类协方差矩阵相等,先验概率不同

每类的协方差矩阵都相等,各个特征维度都相互独立,方差相同,但是各类的先验概率不同,此时含有先验概率的项不能删除,就是只能将决策函数简化到
在这里插入图片描述
其中
在这里插入图片描述
由于 x T x x^Tx xTx与类别无关,可以删去,则决策函数简化为:
在这里插入图片描述
该判别式形式为线性判别形式
在这里插入图片描述
决策边界为
在这里插入图片描述

最后就是一个一大一小的圆
在这里插入图片描述
同一个维度下,各个分量的协方差为0,所以等概率的密度面是一个球面,这种情况下贝叶斯分类器具有线性决策边界。

每类协方差矩阵相等,先验概率相等,各个维度不相互独立

因为协方差矩阵和先验概率均与类别无关,则判别函数可以简化为
在这里插入图片描述
就是不能把协方差矩阵省略,所以就不能算 ( x − u i ) T ( x − u i ) (x-u_i)^T(x-u_i) (xui)T(xui)了。
分类决策边界仍然是超平面,由于先验概率相等,则继续简化为
在这里插入图片描述
这时候这个距离不是欧式距离了,是马氏距离,所以这种情况叫马氏距离最小分类器
在这里插入图片描述
马氏距离考虑了特征之间的相关性,并且是尺度无关的。

协方差矩阵都相等,各个维度不相互独立,先验概率也不同

这时候的决策函数为
在这里插入图片描述
这种情况下,判别函数仍然是线性判别函数。分类决策边界仍然是超平面
在这里插入图片描述
此时的分类器是在马氏距离基础上,由先验概率修正的现行分类器,决策边界不与两个类别均值向量的连线垂直,也不会通过两个均值向量的中点,并且分类决策边界会偏向先验概率小的那一方。

协方差矩阵不相等,各个维度不相互独立,先验概率也不同

在这里插入图片描述

判别函数的二次项是与类别有关的,无法简化掉,所以这不是一个线性问题了。这时候是一个超二次曲面。

总结

只有各个类别样本同分布,贝叶斯分类器才是线性分类器。否则是一个二次项的非线性分类器。

  • 18
    点赞
  • 137
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
贝叶斯决策是一种基于贝叶斯公式的模式识别方法,其核心思想是利用已知类别的样本数据,计算新样本属于各个类别的概率,从而选择概率最大的类别作为分类结果。下面是一个简单的模式识别贝叶斯决策的代码实现。 假设我们有两个类别 A 和 B,每个类别有两个特征 x1 和 x2,我们要根据新样本的特征值来判断该样本属于哪个类别。 首先,定义一个函数来计算概率密度函数: ```python import math def gaussian(x, mean, variance): """ 计算正态分布概率密度函数 :param x: 特征值 :param mean: 均值 :param variance: 方差 :return: 概率密度函数值 """ return math.exp(-(x - mean) ** 2 / (2 * variance)) / math.sqrt(2 * math.pi * variance) ``` 然后,定义一个函数来计算每个类别的先验概率: ```python def prior_prob(label, labels): """ 计算先验概率 :param label: 类别标签 :param labels: 所有类别标签 :return: 先验概率 """ return labels.count(label) / len(labels) ``` 接着,定义一个函数来计算每个类别在给定特征值 x1 和 x2 的条件下的概率: ```python def conditional_prob(x1, x2, label, features, labels): """ 计算条件概率 :param x1: 特征值 x1 :param x2: 特征值 x2 :param label: 类别标签 :param features: 特征矩阵 :param labels: 所有类别标签 :return: 条件概率 """ label_count = labels.count(label) x1_mean = sum([features[i][0] for i in range(len(features)) if labels[i] == label]) / label_count x1_var = sum([(features[i][0] - x1_mean) ** 2 for i in range(len(features)) if labels[i] == label]) / label_count x2_mean = sum([features[i][1] for i in range(len(features)) if labels[i] == label]) / label_count x2_var = sum([(features[i][1] - x2_mean) ** 2 for i in range(len(features)) if labels[i] == label]) / label_count return gaussian(x1, x1_mean, x1_var) * gaussian(x2, x2_mean, x2_var) ``` 最后,定义一个函数来实现贝叶斯决策: ```python def bayesian_decision(x1, x2, features, labels): """ 贝叶斯决策 :param x1: 特征值 x1 :param x2: 特征值 x2 :param features: 特征矩阵 :param labels: 所有类别标签 :return: 预测结果 """ class_labels = list(set(labels)) posterior_probs = [prior_prob(label, labels) * conditional_prob(x1, x2, label, features, labels) for label in class_labels] return class_labels[posterior_probs.index(max(posterior_probs))] ``` 以上就是一个简单的模式识别贝叶斯决策的代码实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值