研究生课程:模式识别与机器学习-第2章 统计判别
《模式识别与机器学习》课程笔记:第2章 统计判别
第2章 统计判别
统计学(statistics)是用以收集数据,分析数据和由数据得出结论的一组概念、原则和方法。
作为统计判别问题的模式分类
- 模式识别的目的就是要确定某一个给定的模式样本属于哪一类。
- 可以通过对被识别对象的多次观察和测量,构成特征向量,并将其作为某一个判决规则的输入,按此规则来对样本进行分类。
- 在获取模式的观测值时,有些事物具有确定的因果关系,即在一定的条件下,它必然会发生或必然不发生。
- 例如识别一块模板是不是直角三角形,只要凭“三条直线边闭合连线和一个直角”这个特征,测量它是否有三条直线边的闭合连线并有一个直角,就完全可以确定它是不是直角三角形。这种现象是确定性的现象。
- 但在现实世界中,由许多客观现象的发生,就每一次观察和测量来说,即使在基本条件保持不变的情况下也具有不确定性。
- 只有在大量重复的观察下,其结果才能呈现出某种规律性,即对它们观察到的特征具有统计特性。
- 特征值不再是一个确定的向量,而是一个随机向量。
- 此时,只能利用模式集的统计特性来分类,以使分类器发生错误的概率最小。
给定观测值


最小化误差概率条件下,若



贝叶斯判别原则
两类模式集的分类:
目的:要确定





根据概率判别规则,若



由贝叶斯定理,后验概率






与概率判别规则结合,则若



不等式转换一下:
若

若

其中,

此判别称为贝叶斯判别。
贝叶斯判别的推广:
- 允许使用多于一个特征:标量、向量、多种特征向量
- 允许多于两种类别状态的情形
- 允许有其他行为而不仅仅是判定类别:如后验概率接近的情况下,如果拒绝判断的代价不大,可以拒绝判断。
可以通过引入一个更一般的损失函数来替代误差概率
朴素贝叶斯
特征
贝叶斯最小风险判别
当考虑到对于某一类的错误判决要比对另一类的判决更为关键时,就需要把最小错误概率的贝叶斯判别做一些修正,提出条件平均风险
对




若

若

意义:
- 对于自然属性是属于
类的模式
来说,它来自
类的概率应为
- 如果分类器判别
是属于
类,但它实际上来自
类,也就是说分类器失败,这时
为失分,对应的条件风险为后验概率进行
的加权运算。
- 由于模式
的自然属性可能来自
类中的任一类,因此可将观察样本指定为
类的条件平均风险用
的公式运算。
分类器对每一个模式




按贝叶斯公式,最小平均条件风险可写成:
可以舍去公共项,则可以简化为:
也是贝叶斯分类器,只是它的判别方法不是按错误概率最小作为标准,而是按平均条件风险作为标准。
举例若
当分类器将

当分类器将

若


此时:
即:
通常
当
左边为似然比:
因此两类模式的贝叶斯判别条件为:
- 若
,则
;
- 若
,则
;
- 若
,则可以做任意判别。
通常,当判别正确时,不失分,可选常数
判别错误时,可选常数
此时:
对于
贝叶斯最小错误判别是计算得到某个类别的概率,而最小风险判别是计算得到某个类别后存在风险的概率。两者正好相反。
正态分布模式的贝叶斯分类器
出发点:当已知或者有理由设想类概率密度函数

其中,每一类模式的分布密度都完全被其均值向量

当协方差矩阵的全部非对角线上的元素都为零时,多变量正态类密度函数可简化为

已知类别
可以取自然对数的形式以方便计算:
代入正态类密度函数,可以得到:
去掉与
即为正态分布模式的贝叶斯判别函数。
因此判别函数是一个超二次曲面,对于正态分布模式的贝叶斯分类器,两个模式类别之间用一个二次判别界面分开,就可以求得最优的分类效果。
当M=2且类模式都是正态分布的情况
- 当
时:
两类模式的正态分布:





判别界面



当
- 当
时:

因

由此可导出类别

判别界面为
当
决策边界的特征:
- 如果两种分布的协方差矩阵相等并且与单位阵成比例,且先验概率相等。则决策边界垂直于两个中心的连线。
- 协方差矩阵相等,判决边界同样是超平面。随着先验概率的改变,判决边界也随之改变;对于差别较大的离散先验概率而言,判决边界不会落于中心点之间。
贝叶斯分类规则是基于统计概念的。如果只有少数模式样本,一般较难获得最优的结果。
实际代码编写
defBayesian(data,label,P):
if data.shape[0] != label.shape[0]: # 如果数据和标签的数量不相同
print('Error!')
sys.exit()
M = data[0].shape[0] # 获取数据的维度
data_list = [[],[]] # 将不同类别的数据分开存储
data_list[0] = np.array([data[i] for i inrange(len(label)) if label[i] ==0])
data_list[1] = np.array([data[i] for i inrange(len(label)) if label[i] ==1])
# 计算均值向量
m0 = np.sum(data_list[0],axis=0) / data_list[0].shape[0]
m1 = np.sum(data_list[1],axis=0) / data_list[1].shape[0]
# 计算协方差矩阵
C0 = np.sum(np.array([np.dot((data_list[0][i] - m0).reshape(-1,1), \
(data_list[0][i] - m0).reshape(1,-1)) for i inrange(data_list[0].shape[0])]),axis=0) / data_list[0].shape[0]
C1 = np.sum(np.array([np.dot((data_list[1][i] - m1).reshape(-1,1),\
(data_list[1][i] - m1).reshape(1,-1)) for i inrange(data_list[1].shape[0])]),axis=0) / data_list[1].shape[0]
return np.dot(m0-m1,np.linalg.inv(C0)),np.log(P[0]) - np.log(P[1]) +0.5* (np.dot(np.dot(m1.reshape(1,-1),\
np.linalg.inv(C0)),m1.reshape(-1,1)) - np.dot(np.dot(m0.reshape(1,-1),np.linalg.inv(C0)),m0.reshape(-1,1)))均值向量和协方差矩阵的参数估计
在贝叶斯分类器中,构造分类器需要知道类概率密度函数
对均值向量和协方差矩阵的估计即为贝叶斯分类器中的一种参数估计问题。
参数估计的两种方式:
- 将参数作为非随机变量来处理,例如矩估计就是一种非随机参数的估计。
- 随机参数的估计,即把这些参数看成是随机变量,例如贝叶斯参数估计。
均值和协方差矩阵的非随机参数的估计
均值和协方差矩阵的估计量定义
设模式的类概率密度函数为

若以样本的平均值作为均值向量的近似值,则均值估计量


协方差矩阵
其中的每个元素
其中,





协方差矩阵写成向量形式为:
协方差矩阵的估计量(当
均值和协方差矩阵估计量的迭代运算形式
假设已经计算了

其中

协方差矩阵估计量的迭代运算与上述相似:
均值向量和协方差矩阵的贝叶斯学习
将概率密度函数的参数估计量看成是随机变量


