1
模式识别与智能计算的MATLAB实现
1.4.3.2 2.3.2 近邻法
2.3.2 近邻法

近邻法是一种非参数识别方法,不需要事先给出先验概率和类条件概率密度函数等知识,而是直接对样本进行操作。

假设有M个ω1,ω2,…,ωM类别的模式识别问题,每类有标明类别的样本Ni个(i=1,2,…,M),可以规定ωi类的判别函数为

alt

其中,alt的角标i表示ωi类,k表示ωi类Ni个样本中的第k个。决策规则可以写为

alt

这一决策称为最近邻法,也即对未知样本,只要比较与alt个已知类别的样本间的欧氏距离,并决策与离它最近的样本同类。

上述方法只根据离待识别模式最近的一个样本的类别而决定其类别,通常称为1NN方法。为了克服单个样本类别的偶然性以增加分类的可靠性,可以采用K-近邻法(K-Nearest Neighbors,KNN),即考察待识别模式的K个最近邻样本,这K个最近邻中哪一类的样本最多,就将X判属哪一类。为了避免近邻数相等,一般K采用奇数。另外,最近邻样本对于“选票”所起的作用,可以用相应的距离将之赋权

alt

其中,Vi表示对于两类问题,当其邻属于第一类时,为“+1”,属于第二类时为“-1”;Di为未知样本与第i个近邻的距离;K为最近邻数。若“选票”V>0,则未知样本归入类1;否则未知样本归入类2。

为了测试K个最近邻样本的风险值,可用下式计算:

alt

其中,a为常数;δ(k)为k个未知试样最近邻的已知试样的平均距离;R*为期望Bayes值。

KNN法不要求对不同类的代表点线性可分,只要用每个未知点的近邻类来判别即可,也不需要作训练过程。但它的缺点是没有对训练点作信息压缩,因此每判别一个新的未知点都需要把它和所有已知代表点的距离全部算一遍,因此计算工作量大,对已知代表点太多的情况不太合适。但正是因为没有作信息压缩,而用全体已知点的原始信息作判据,所以有时可得到极好的预报准确率,其效果一般优于或等于其他模式识别方法。

KNN法中对所有的类选取相同的K值,且其选择有一定的经验性。如果能根据每类中样本的数目和分散程度选择K值,并当各类的Ki选定后,用一定的算法对类中样本的概率进行估计,并且根据概率大小对它们进行分类,将会影响K值选择的经验性。ALKNN(Alter-native KNN)正是基于这样的思想。

在AKNN方法中,以xi与类gi的Ki个近邻中最远一个样本的距离r为半径,以xi为中心,计算相应的超球的体积,并且认为超球体积越小,类gi在xi处的概率密度越大。其概率密度可用下式计算

alt

其中,V(xi/gi)为类gi的超球体积,该超球中心为xi,半径为r。为了选择Ki和相应r的计算,可采用欧氏距离,m维超球体积的一般表达式为

V(xi/gi)=(2π)m/2rm[mΓ(m/2)]

其中,Γ为gamma函数。

在实际计算中,上述方程根据m的奇偶性可以写成下列两种形式:

当m为偶数时,有

V(xi/gi)=(2π)m/2rm[m(m-2)(m-4)…]

当m为奇数时,有

V(xi/gi)=2(2π)(m-1)/2rm[m(m-2)(m-4)…]

计算时必须对Ki进行优化,这样才能对各类概率密度的测试相一致。Ki值的优化公式可采用下列公式

alt

对样本的分类采用后验概率,其计算公式为

alt

即样本划归到具有最大后验概率的类中。