研究生课程:模式识别与机器学习-第2章 统计判别
《模式识别与机器学习》课程笔记:第2章 统计判别
第2章 统计判别
统计学(statistics)是用以收集数据,分析数据和由数据得出结论的一组概念、原则和方法。
作为统计判别问题的模式分类
- 模式识别的目的就是要确定某一个给定的模式样本属于哪一类。
- 可以通过对被识别对象的多次观察和测量,构成特征向量,并将其作为某一个判决规则的输入,按此规则来对样本进行分类。
- 在获取模式的观测值时,有些事物具有确定的因果关系,即在一定的条件下,它必然会发生或必然不发生。
- 例如识别一块模板是不是直角三角形,只要凭“三条直线边闭合连线和一个直角”这个特征,测量它是否有三条直线边的闭合连线并有一个直角,就完全可以确定它是不是直角三角形。这种现象是确定性的现象。
- 但在现实世界中,由许多客观现象的发生,就每一次观察和测量来说,即使在基本条件保持不变的情况下也具有不确定性。
- 只有在大量重复的观察下,其结果才能呈现出某种规律性,即对它们观察到的特征具有统计特性。
- 特征值不再是一个确定的向量,而是一个随机向量。
- 此时,只能利用模式集的统计特性来分类,以使分类器发生错误的概率最小。
给定观测值,判断其属于类还是类,作出某次判断时的错误率是:
最小化误差概率条件下,若,则;若,则,
贝叶斯判别原则
两类模式集的分类:
目的:要确定是属于类还是类,要看是来自于类的概率大还是来自类的概率大。
根据概率判别规则,若,则;若,则,
由贝叶斯定理,后验概率可由类别的先验概率和的条件概率密度来计算,即:
,其中也称为似然函数。
与概率判别规则结合,则若,则;若,则,
不等式转换一下:
若,则;
若,则;
其中,称为似然比,称为似然比的判决阈值
此判别称为贝叶斯判别。
贝叶斯判别的推广:
- 允许使用多于一个特征:标量、向量、多种特征向量
- 允许多于两种类别状态的情形
- 允许有其他行为而不仅仅是判定类别:如后验概率接近的情况下,如果拒绝判断的代价不大,可以拒绝判断。
可以通过引入一个更一般的损失函数来替代误差概率
朴素贝叶斯
特征是多维向量时,假设各个特征之间相互独立
贝叶斯最小风险判别
当考虑到对于某一类的错误判决要比对另一类的判决更为关键时,就需要把最小错误概率的贝叶斯判别做一些修正,提出条件平均风险
对类问题,如果观察样本被判定属于类,则条件平均风险
为将本应属于类的模式判别成属于类的是非代价。
若,即判别正确,得分,可以取负值或零,表示不失分。
若,即判别错误,失分,应取正值。
意义:
- 对于自然属性是属于类的模式来说,它来自类的概率应为
- 如果分类器判别是属于类,但它实际上来自类,也就是说分类器失败,这时为失分,对应的条件风险为后验概率进行的加权运算。
- 由于模式的自然属性可能来自类中的任一类,因此可将观察样本指定为类的条件平均风险用的公式运算。
分类器对每一个模式有种可能的类别可供选择,若对每一个计算出全部类别的平均风险值,并且将指定为是具有最小风险值的那一类,则这种分类器称为最小平均条件风险分类器。
按贝叶斯公式,最小平均条件风险可写成:
可以舍去公共项,则可以简化为:
也是贝叶斯分类器,只是它的判别方法不是按错误概率最小作为标准,而是按平均条件风险作为标准。
举例若:
当分类器将判别为时:
当分类器将判别为时:
若,则被判定为属于 ,
此时:
即:
通常,因此
当时,
左边为似然比:,右边为阈值
因此两类模式的贝叶斯判别条件为:
- 若,则;
- 若,则;
- 若,则可以做任意判别。
通常,当判别正确时,不失分,可选常数
判别错误时,可选常数
此时:
对于类情况来说,若仍按判对失分为0,判错失分为1记,则
贝叶斯最小错误判别是计算得到某个类别的概率,而最小风险判别是计算得到某个类别后存在风险的概率。两者正好相反。
正态分布模式的贝叶斯分类器
出发点:当已知或者有理由设想类概率密度函数是多变量的正态分布时,贝叶斯分类器可以导出一些简单的判别函数。由于正态密度函数易于分析,且对许多重要的实际应用又是一种合适的模型,因此受到很大的重视。
种模式类别的多变量正态类密度函数:(参考数学推导)
其中,每一类模式的分布密度都完全被其均值向量和协方差矩阵所规定
当协方差矩阵的全部非对角线上的元素都为零时,多变量正态类密度函数可简化为个单变量正态类密度函数的乘积,即个单变量为互相独立的。
已知类别的判别函数可写成如下形式:
可以取自然对数的形式以方便计算:
代入正态类密度函数,可以得到:
去掉与无关的项,最终可以得到:
即为正态分布模式的贝叶斯判别函数。
因此判别函数是一个超二次曲面,对于正态分布模式的贝叶斯分类器,两个模式类别之间用一个二次判别界面分开,就可以求得最优的分类效果。
当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)))
均值向量和协方差矩阵的参数估计
在贝叶斯分类器中,构造分类器需要知道类概率密度函数,如果按先验知识已知其分布,则只需知道分布的参数即可。(例如:类概率密度是正态分布,它完全由其均值向量和协方差矩阵所确定)。
对均值向量和协方差矩阵的估计即为贝叶斯分类器中的一种参数估计问题。
参数估计的两种方式:
- 将参数作为非随机变量来处理,例如矩估计就是一种非随机参数的估计。
- 随机参数的估计,即把这些参数看成是随机变量,例如贝叶斯参数估计。
均值和协方差矩阵的非随机参数的估计
均值和协方差矩阵的估计量定义
设模式的类概率密度函数为,则其均值向量定义为:
,其中
若以样本的平均值作为均值向量的近似值,则均值估计量为
,其中为样本的数目
协方差矩阵,
其中的每个元素
其中,和分别为和的第和个分量。
协方差矩阵写成向量形式为:,(后面这样算更简单一点)
协方差矩阵的估计量(当时)为:
均值和协方差矩阵估计量的迭代运算形式
假设已经计算了个样本的均值估计量,若再加上一个样本,其新的估计量为:
其中为从个样本计算得到的估计量。迭代的第一步应取
协方差矩阵估计量的迭代运算与上述相似:
均值向量和协方差矩阵的贝叶斯学习
将概率密度函数的参数估计量看成是随机变量,它可以是纯量、向量或矩阵。按这些估计量统计特性的先验知识,可以先粗略地预选出它们的密度函数。通过训练模式样本集,利用贝叶斯公式设计一个迭代运算过程求出参数的后验概率密度。当后验概率密度函数中的随机变量的确定性提高时,可获得较准确的估计量。