欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

模式识别2-线性分类器(最小二乘法)

程序员文章站 2022-05-20 19:37:53
...

2.1:算法原理分析
有两类样本,X1,和X2,如果将这两类数据正确分类,则X1对应的y=1,X2对应的y=-1,但是,往往分类的结果不会都正确,这个时候就有分类错误,将这种错误用就是期望值与真实值的误差,用最小二乘法计算出分类错误:
j(w)=E[|y-xT*w |^2]
w=argmin(j(w))
现在要做的是求出让代价函数j(w)取最小值的时候,w的取值。
要让j(w)最小,需要满足正交条件,也就是这个求导:
(∂j(w))/(∂w )=2E[x*(y-x^T*w)]=0
可以得到 w=R_x^(-1 )*E[xy]
W就是最小二乘法要求的权重矩阵。R为X样本的自相关矩阵,而E[xy]就是x和y的内积。
下面是自相关矩阵:
R_x=E[x*x^T ]=[■(E[x1*x1]&⋯&E[x1*xl]@⋮&⋱&⋮@E[xl*x1]&⋯&E[xl*xl])]
下面是期望输出和输入特征向量的互相关:
E[x,y]=E[[█(aaa@qq.com@aaa@qq.com@xly)]]
下面就画一下最小二乘法实现的流程图:
模式识别2-线性分类器(最小二乘法)

clear all;
close all;

N1=440;
for i=1:N1
    x1(1,i)=-1.7+1.1*randn(1);         % 440 Samples normal distribution
    x1(2,i)= 1.6+0.9*randn(1);
    x1(3,i)= 1;
end;

N2=400;
for i=1:N2
    x2(1,i)= 1.3+1.0*randn(1);         % 400 Samples normal distriburion
    x2(2,i)=-1.5+0.8*randn(1);
    x2(3,i)= 1;
end;

plot(x1(1,:),x1(2,:),'r*',x2(1,:),x2(2,:),'b*');


y1 = -ones(440,1);
y2 =  ones(400,1);

Y = [y1;y2]; 
X = [x1';x2']';



lambda = zeros(840,1);

% display(X);
% display(Y);

R = X*X';%自相关矩阵
E = X*Y;%互相关矩阵的内积
w = inv(R)*E;%计算权重矩阵W

x = linspace(-5,10,5000);
y = (-w(1)/w(2))*x-w(3)/w(2);

plot(x1(1,:),x1(2,:),'r*',x2(1,:),x2(2,:),'b*',x,y, 'r');
% axis([1,12,0,8]);
disp(w);

相关标签: 模式识别