本文写作目的在于备考模式识别课程,对关键性知识进行总结,不会包含详细的数学推导过程,仅限于理解、记忆与相关知识的应用。部分知识点分散在几次实践作业中,本文只做拉取,不重复赘述。最后,本文不按教学顺序编排文章结构!本文不按教学顺序编排文章结构!本文不按教学顺序编排文章结构!
模式和模式类的概念:存在于时间和空间中可观察的事物,如果我们可以区别它们是否相同或是否相似,都可以称之为模式。模式所指不是事物本身,而是我们从事物获得的信息,是我们要让机器自动识别的事物。用模式识别的术语来说,所见的具体事物是样本,通过对具体的个别事物进行观测所得到的具有时间和空间分布的信息称为模式,把模式所属的类别或同一类中模式的总体称为模式类(或简称类)。
模式识别的关键,就是找到有效地度量不同类事物的差异的方法。让机器辨别事物的最基本方法是计算,原则上讲是对计算机要分析的事物与作为标准的称之为“模板”的相似程度进行计算。
文章结构按模式识别的典型过程编排,先说监督,后说非监督。监督学习与非监督学习最大的区别就在于训练样本是否有类别标号。
特征选择和特征提取是两种用于提取特征有效信息、压缩特征空间的不同方法,因为后者涉及到新特征的生成。
常见的类别可分离性判据有三种:基于距离、基于概率和基于熵函数。
选择方法大体可以分为 Filter 方法和 Wrapper 方法两类。
常见的特征提取方法有主成分分析(PCA)、K-L变换。K-L变换在某种意义上可以近似看作是PCA的别称,但二者又不完全等同。
PCA的具体情况参见 手写数字识别实践(二):基于线性SVM与PyQt5 的理论基础。
贝叶斯分类器的具体情况参见 手写数字识别实践(一):基于朴素贝叶斯分类器与PyQt5 理论基础与复习阶段追加,最小错误率、最小风险率、朴素贝叶斯和正态分布概率模型贝叶斯都有提及。
在贝叶斯分类器的设计中需要获取类条件概率密度。对此有两种估计方法:参数估计和非参数估计。
极大似然估计的基本假设:
求极大似然函数估计值的一般步骤:
PS:由于基本假设中存在独立同分布假设,因此似然函数会以累乘的形式出现。相乘的项数较多时直接求导会比较麻烦,所以中间插一步取对数,把累乘转换成累加就会好算很多。当然项数少的时候直接求导也是可以的。
贝叶斯估计的基本假设:
求贝叶斯估计值的一般步骤:
PS: θ ^ = ∫ θ θ P ( θ ∣ X i ) d θ \hat{\theta}=\int_\theta{\theta P(\theta|X_i)} \,{\rm d}\theta θ^=∫θθP(θ∣Xi)dθ
适用条件与基本思想:
EM算法是一种从不完全数据或有数据缺失的数据集中求解概率模型参数的极大似然估计法。所谓不完全数据或数据缺失的情况,可描述为缺乏已知训练样本的类标签,不知道混合体中的每一个样本所属的类。此时需要估计的就有两项,一项是训练样本所属的类,另一项则是所有类条件概率密度函数的参数。
由于这两项信息之间是相通的(都可以由此及彼)因此可以先对一项信息作出假设,从而推出另一项信息,然后再从另一项信息反推回第一项信息,再从第一项信息推到另一项信息,就这样循环往复地套娃到收敛(参数不再发生变化)。
算法流程:
PS:EM算法无疑是具备收敛性的,不过只能保证收敛于似然函数的极值点而不能保证收敛于全局最优点。
PS:考虑到样本在实际分布上的随机性,固定小舱宽度的直方图法取得的效果很有限。因此,后续的两种非参数估计方法在不同的角度上对原本的估计方法进行了优化。
和直方图法相比,Parzen窗法不需要分出很多个小舱并把它们局限在特定的位置,而是使用一个滑动的、体积固定的小舱来估计每个点的概率密度,就像做图像的边缘提取时,拿着 s o b e l sobel sobel 算子遍历整张图这样子。
这个小舱也叫窗函数(核函数)。显然,为保证估计出的概率密度函数的函数值非负且积分为1,窗函数不是随便选的,其自身也应满足密度函数的要求。常用的窗函数有方窗、高斯窗(正态窗)以及超球窗。
K N K_N KN近邻估计法简单来说就是固定一个点对应的范围内只要 k N k_N kN 个样本点,然后每个点的小舱根据实际情况调整小舱的体积,使小舱内刚好只有 k N k_N kN 个样本点,那么这个位置的概率密度估计值就是 k N N V \frac{k_N}{NV} NVkN
需要注意的是:以上介绍的所有方法最后都是得到类条件概率密度,应用到实际中要接上贝叶斯决策才能完成分类任务。
从本质上看,贝叶斯分类器设计都是围绕统计概率的方法进行分类决策,因此绕不开贝叶斯公式,之前介绍的所有内容都是围绕求取后验概率及类条件概率密度的求取展开的。而到了线性分类器这里,目标就从求取概率分布转变为求取分类决策面(的方程中的所有参数),这样即便没有掌握全局信息也能顺利做出决策(当然需要用EM算法的那种阴间情况是不算的,EM那是半只脚踩进聚类分析里去了)。
判别函数为下式形式
d ( X ) = W T X = X W d(X)=W^TX=XW d(X)=WTX=XW 然后定义关于 W W W 的准则函数 J ( W ) J(W) J(W)(比如所有的被错分的样本到分界面的距离 W T x i W^Tx_i WTxi 之和),使 W W W 最优时,准则函数取得极小值。这样就可以使用梯度下降法求准则函数的极小值(权矩阵 W W W) 。这里的 W 、 X W、X W、X 都是增广矩阵,也就是把偏置 B B B 给并进去了。
经典数值优化算法(梯度下降和牛顿迭代):参见 手写数字识别实践(三):基于BP神经网络与PyQt5 复习阶段追加部分。
PS:也可以使用固定增量法来逐个考察样本,即对于某一个样本,每次权矩阵都在迭代中增加一个固定数值,直到该样本不再被错分,然后按同样的做法开始处理下一个样本点。
如果样本集线性不可分,那么使用形如感知器的判别函数就无法使样本被全部正确分类。因此在感知器的基础上增加一个裕量 B B B,目的变更为使被错分的样本尽可能少。取均方误差 e e e 的长度的平方作为准则函数
J ( W , X , B ) = 1 2 ∣ W T X − B ∣ 2 = 1 2 ∑ i = 1 N e i 2 J(W,X,B)=\frac{1}{2}|W^TX-B|^2=\frac{1}{2}\sum_{i=1}^Ne_i^2 J(W,X,B)=21∣WTX−B∣2=21i=1∑Nei2 后面就跟感知器的解决方法差不多了。如果还要说有什么地方是不同的话,那应该就是梯度下降法的停止条件不同了吧(参见算法实现步骤)。
当然 LMSE 也是可以和感知器一样使用错分类样本逐个修正方法的。
PS:LMSE 算法的收敛依靠学习率 η k \eta_k ηk 的衰减,一般取 η k = η 1 k \eta_k=\frac{\eta_1}{k} ηk=kη1,这样即便训练样本线性不可分也能收敛于一个均方误差最小解。
找一个合适的直线方向,将样本点投影到这条直线上,在实现降维的同时也使同一类的样本点尽可能地投影到一起,不同类的样本点投影后则被分开,从而方便地实现分类。找到最好的投影方向以及实现这个投影变换就是 Fisher 要干的事。
投影以后,样本就变成了
Y = W T X Y=W^TX Y=WTX 而根据其目的,以二维投影到一维为例,易知投影后的类内离散度 S w ~ 2 \tilde{S_w}^2 Sw~2 (类方差之和)要尽可能小,而类间离散度 S b ~ 2 \tilde{S_b}^2 Sb~2 (类均值的差的平方)要尽可能大,由此构造准则函数
m a x J ( W ) = S b ~ 2 S w ~ 2 = W T S b W W T S w W max\quad J(W)=\frac{\tilde{S_b}^2}{\tilde{S_w}^2}=\frac{W^TS_bW}{W^TS_wW} maxJ(W)=Sw~2Sb~2=WTSwWWTSbW 式中 S b 、 S w S_b、S_w Sb、Sw 为投影前的样本类间离散度矩阵和类内离散度矩阵。使用拉格朗日乘数法解得最优投影方向
W ∗ = S w − 1 ( m 1 − m 2 ) W^*=S_w^{-1}(m_1-m_2) W∗=Sw−1(m1−m2) 式中 m 1 、 m 2 m_1、m_2 m1、m2 为投影前的两个类均值向量。
PS:到这里为止只是用 Fisher 获得了最优的投影方向而已,还没有获得分类超平面。要得到分类面,就需要在投影后的方向上确定一个分类阈值(可以简单地选择所有样本投影后的均值),将一维空间划分为两个部分。
SVM(线性为主)详细内容参见 手写数字识别实践(二):基于线性SVM与PyQt5 理论基础与复习阶段追加部分。
Logistic 回归是一种针对线性回归模型产生的预测值使用 Logistic 函数(BP神经网络部分提到的一种典型的激活函数)进行二分类的分类方法。两个类别很明显对应 Logistic 函数两端的饱和值: 0 和 1。Logistic 函数不像阶跃函数那样存在 0 到 1 的跃变,其单调可微的函数曲线赋予了 Logistic 函数一种能力:将一个具体的线性预测值 z z z 映射到 Logistic 函数上,就能将值转化为概率(0~1之间嘛)。
略去相关的数学推导,可以得到对数几率表达式
l n y 1 − y = w T x ln\frac{y}{1-y}=w^Tx ln1−yy=wTx 式中 y y y 表示样本 x x x 为正例的概率( 1 − y 1-y 1−y 就是反例了)。这样不仅能得到分类结果,还能得到近似概率预测。
Logistics 回归关于参数 w w w 的确定方法也和线性分类器确定 w w w 一样,可以采用梯度下降法进行训练。
PS:在 Logistics 回归这里想了很久,线性分类器从本质上来说就是专门做二分类的啊,所以一直不明白为什么有这么多线性分类器了干啥还要整个与众不同的 Logistics 回归分类方法出来。后来干脆就把 Logistics 回归当成是一种取特殊损失函数(交叉熵)的线性分类器设计过程的一个附加步骤,支持把预测值转换为预测概率后输出,或是应用于对预测结果输出有特殊要求的场合。
K-近邻分类详细内容参见 手写数字识别实践补充:基于KNN与PyQt5 理论基础部分。
决策树详细内容参见 手写数字识别实践补充:基于KNN与PyQt5 复习阶段追加部分。
简单来说就是把几个分类器给整到一起,然后对于一个输入的测试样本,几个分类器“就该样本归属类别的问题提出指导意见并进行投票表决”(还可人为设置每个分类器的权重)。
而对于这些模型的训练方式大体可以分为两类方法:Bagging类和Boostin类。
决策树模型的集成形态。在Bagging类方法的基础上引入了随机特征,进一步提高了不同模型之间的独立性。
在手上只有一个数据集的时候,通常不可能将全部的数据集用于训练,因此需要对数据集进行划分以获取训练集和测试集。常用的数据集划分方法有留出法、交叉验证法和自助法三种。
数据集中每一类的数据单独存放而不是混杂在一起的时候,可以采用留出法,对每一类的样本以分层抽样的方式抽取一定数量(1/5~1/3)的样本,组合成测试集,这样能够确保数据分布比例平衡。
留出法和交叉验证法都是使用分层抽样且不放回的方式进行数据采样与划分。而自助法则是使用有放回重复采样的方式进行数据采样,重复抽取一定次数后得到训练集,然后把没有抽取到过的样本作为测试集。适用于数据集小且难以有效划分训练集和测试集的情况。
ROC与AUC详细内容参见 手写数字识别实践(二):基于线性SVM与PyQt5 复习阶段追加部分。
人工神经网络大致可以分为三种结构:
其中前馈神经网络与反向传播算法为主要学习内容。BP神经网络详细内容参见 手写数字识别实践(三):基于BP神经网络与PyQt5 理论基础部分。
为了完成一个聚类,必须遵循以下步骤:
喵的复习不完了,这几分我不要了QAQ,把前面的东西重新温习一下拿分更稳它不香嘛!