1、 模式识别实验报告题目:Parzen 窗估计与 KN 近邻估计 学 院 计算机科学与技术 专 业 xxxxxxxxxxxxxxxx 学 号 xxxxxxxxxxxx 姓 名 xxxx 指导教师 xxxx 20xx 年 xx 月 xx 日装订线Parzen 窗估计与 KN 近邻估计一、实验目的 本实验的目的是学习 Parzen 窗估计和 k 最近邻估计方法。在之前的模式识别研究中,我们假设概率密度函数的参数形式已知,即判别函数 J(.)的参数是已知的。本节使用非参数化的方法来处理任意形式的概率分布而不必事先考虑概率密度的参数形式。在模式识别中有躲在令人感兴趣的非参数化方法,Parzen 窗估计和
2、 k 最近邻估计就是两种经典的估计法。二、实验原理 1.非参数化概率密度的估计对于未知概率密度函数的估计方法,其核心思想是:一个向量 x 落在区域 R 中的概率可表示为:其中,P 是概率密度函数 p(x)的平滑版本,因此可以通过计算 P 来估计概率密度函数p(x),假设 n 个样本 x1,x2,xn,是根据概率密度函数 p(x)独立同分布的抽取得到,这样,有 k 个样本落在区域 R 中的概率服从以下分布:其中 k 的期望值为:k 的分布在均值附近有着非常显著的波峰,因此若样本个数 n 足够大时,使用 k/n 作为概率 P 的一个估计将非常准确。假设 p(x)是连续的,且区域 R 足够小,则有:
3、如下图所示,以上公式产生一个特定值的相对概率,当 n 趋近于无穷大时,曲线的形状逼近一个 函数,该函数即是真实的概率。公式中的 V 是区域 R 所包含的体积。综上所述,可以得到关于概率密度函数 p(x)的估计为:在实际中,为了估计 x 处的概率密度函数,需要构造包含点 x 的区域 R1,R2,Rn。第一个区域使用 1 个样本,第二个区域使用 2 个样本,以此类推。记 Vn 为 Rn 的体积。kn为落在区间 Rn 中的样本个数,而 pn (x)表示为对 p(x)的第 n 次估计:欲满足 pn(x)收敛:pn(x)p(x),需要满足以下三个条件:有两种经常采用的获得这种区域序列的途径,如下图所示。
4、其中“Parzen 窗方法”就是根据某一个确定的体积函数, 比如 Vn=1/n 来逐渐收缩一个给定的初始区间。这就要求随机变量 kn 和 kn/n 能够保证 pn (x)能收敛到 p(x)。第二种“k-近邻法” 则是先确定 kn 为 n的某个函数,如 kn=n。这样,体积需要逐渐生长,直到最后能包含进 x 的 kn 个相邻 点。2.Parzen 窗估计法已知测试样本数据 x1,x2,xn,在不利用有关数据分布的先验知识,对数据分布不附加任何假定的前提下,假设 R 是以 x 为中心的超立方体, h 为这个超立方体的边长,对于二维情况,方形中有面积 V=h2,在三维情况中立方体体积 V=h3,如下
5、图所示。根据以下公式,表示 x 是否落入超立方体区域中:估计它的概率分布:其中 n 为样本数量,h 为选择的窗的长度,(.)为核函数,通常采用矩形窗和高斯窗。3.k 最近邻估计在 Parzen 算法中,窗函数的选择往往是个需要权衡的问题, k-最近邻算法提供了一种解决方法,是一种非常经典的 非参数估计法。基本思路是:已知训练样本数据 x1,x2,xn而估计 p(x),以点 x 为中心,不断扩大体积 Vn,直到区域内包含 k 个样本点为止,其中 k 是关于 n 的某一个特定函数,这些样本被称为点 x 的 k 个最近邻点。当涉及到邻点时,通常需要计算观测点间的距离或其他的相似性度量,这些度量能够根
6、据自变量得出。这里我们选用最常见的距离度量方法:欧几里德距离。最简单的情况是当 k=1 的情况,这时我们发现观测点就是最近的(最近邻) 。一个显著的事实是:这是简单的、直观的、有力的分类方法,尤其当我们的训练集中观测点的数目 n 很大的时候。可以证明,k 最近邻估计的误分概率不高于当知道每个类的精确概率密度函数时误分概率的两倍。三、实验基本步骤第一部分,对表格中的数据,进行 Parzen 窗估计和设计分类器,本实验的窗函数为一个球形的高斯函数,如下:1) 编写程序,使用 Parzen 窗估计方法对一个任意的测试样本点 x 进行分类。对分类器的训练则使用表格 3 中的三维数据。同时,令 h =1
7、,分类样本点为(0.5,1.0,0.0),(0.31,1.51,-0.50),(-0.3,0.44,-0.1)进行实验。2) 可以改变 h 的值,不同的 h 将导致不同的概率密度曲线,如下图所示。h=0.1 时:h=0.5 时:h=1 时:第二部分的实验目的是学习和掌握非参数估计:k-近邻概率密度估计方法。对前面表格中的数据进行 k-近邻概率密度估计方法和设计分类器。编写程序,对表格中的 3 个类别的三维特征,使用 k-近邻概率密度估计方法。并且对下列点处的概率密度进行估计:(-0.41,0.82,0.88) ,(0.14,0.72, 4.1) ,(-0.81,0.61,-0.38)。四、实验
8、代码如下:% Parzen 窗算法% w:c 类训练样本% x:测试样本% h:参数% 输出 p:测试样本 x 落在每个类的概率function p = Parzen(w,x,h)xt,yt,zt = size(w);p = zeros(1,zt);for i = 1:zthn = h;for j = 1:xthn = hn / sqrt(j);p(i) = p(i) + exp(-(x - w(j,:,i)*(x - w(j,:,i)/ (2 * power(hn,2) / (hn * sqrt(2*3.14);endp(i) = p(i) / xt;end% k-最近邻算法% w:c 类训
9、练样本% x:测试样本% k:参数function p = kNearestNeighbor(w,k,x)% w = w(:,:,1);w(:,:,2);w(:,:,3);xt,yt,zt = size(w);wt = ;%zeros(xt*zt, yt);if nargin=2p = zeros(1,zt);for i = 1:xtfor j = 1:xtdist(j,i) = norm(wt(i,:) - wt(j,:);endt(:,i) = sort(dist(:,i);m(:,i) = find(dist(:,i) 0 disp(点:,num2str(x),属于第一类);elseif
10、 (num2 num1) | (num2 num3)plot3(x(1,1),x(1,2),x(1,3), go);disp(点:,num2str(x),属于第二类);elseif (num3 num1) | (num3 num2)plot3(x(1,1),x(1,2),x(1,3), bo);disp(点:,num2str(x),属于第三类);elsedisp(无法分类);endendif yt = 2plot(w(:,1,1),w(:,2,1), r.);hold on;grid on;plot(w(:,1,2),w(:,2,2), g.);plot(w(:,1,3),w(:,2,3),
11、b.);if (num1 num2) | (num1 num3)plot(x(1,1),x(1,2), ro);disp(点:,num2str(x),属于第一类);elseif (num2 num1) | (num2 num3)plot(x(1,1),x(1,2), go);disp(点:,num2str(x),属于第二类);elseif (num3 num1) | (num3 num2)plot(x(1,1),x(1,2), bo);disp(点:,num2str(x),属于第三类);elsedisp(无法分类);endendendtitle(k-最近邻分类器);legend(第一类数据,.
12、第二类数据,.第三类数据,.测试样本点);clear;close all;% Parzen 窗估计和 k 最近邻估计%w1(:,:,1) = 0.28 1.31 -6.2;0.07 0.58 -0.78;1.54 2.01 -1.63;-0.44 1.18 -4.32;-0.81 0.21 5.73;1.52 3.16 2.77;2.20 2.42 -0.19;0.91 1.94 6.21;0.65 1.93 4.38;-0.26 0.82 -0.96;w1(:,:,2) = 0.011 1.03 -0.21;1.27 1.28 0.08;0.13 3.12 0.16;-0.21 1.23 -
13、0.11;-2.18 1.39 -0.19;0.34 1.96 -0.16;-1.38 0.94 0.45;-0.12 0.82 0.17;-1.44 2.31 0.14;0.26 1.94 0.08;w1(:,:,3) = 1.36 2.17 0.14;1.41 1.45 -0.38;1.22 0.99 0.69;2.46 2.19 1.31;0.68 0.79 0.87;2.51 3.22 1.35;0.60 2.44 0.92;0.64 0.13 0.97;0.85 0.58 0.99;0.66 0.51 0.88;x(1,:) = 0.5 1 0;x(2,:) = 0.31 1.51
14、-0.5;x(3,:) = -0.3 0.44 -0.1;% 验证 h 的二维数据w2(:,:,1) = 0.28 1.31 ;0.07 0.58 ;1.54 2.01 ;-0.44 1.18 ;-0.81 0.21 ;1.52 3.16 ;2.20 2.42 ;0.91 1.94 ;0.65 1.93 ;-0.26 0.82 ;w2(:,:,2) = 0.011 1.03 ;1.27 1.28 ;0.13 3.12 ;-0.21 1.23 ;-2.18 1.39 ;0.34 1.96 ;-1.38 0.94 ;-0.12 0.82 ;-1.44 2.31 ;0.26 1.94 ;w2(:,:
15、,3) = 1.36 2.17 ;1.41 1.45 ;1.22 0.99 ;2.46 2.19 ;0.68 0.79 ;2.51 3.22 ;0.60 2.44 ;0.64 0.13 ;0.85 0.58 ;0.66 0.51 ;y(1,:) = 0.5 1;y(2,:) = 0.31 1.51;y(3,:) = -0.3 0.44;h = .1; % 重要参数p = Parzen(w1,x(1,:),h);num = find(p = max(p);disp(点:,num2str(x(1,:),落在三个类别的概率分别为:,num2str(p);disp(点:,num2str(x(1,:),
16、落在第,num2str(num),类);% 给定三类二维样本,画出二维正态概率密度曲面图验证 h 的作用num =1; % 第 num 类的二维正态概率密度曲面图,取值为 1,2,3draw(w2,h,num); str1=当 h=;str2=num2str(h);str3=时的二维正态概率密度曲面;SC = str1,str2,str3;title(SC);% k 近邻算法设计的分类器% x1 和 y1 为测试样本x1 = -0.41,0.82,0.88;x2 = 0.14,0.72, 4.1;x3 = -0.81,0.61,-0.38;y(1,:) = 0.5 1;y(2,:) = 0.31 1.51;y(3,:) = -0.3 0.44;w = w1;%w = w1(:,1,3);k = 5;kNearestNeighbor(w,k,x1);kNearestNeighbor(w,k,x2);kNearestNeighbor(w,k,x3);