今天介绍机器学习中的分类,我们知道,在某种意义下,机器学习方法一般被用来做两件事:回归(拟合)和分类,再进一步,可以将分类也归为拟合,只不过拟合的是离散的值(函数值的符号)。
考虑2类别分类问题y∈{+1,-1},这种情况下,分类器的学习问题可以近似地定义为取值为+1、-1的二值函数问题,如下图:
注意:f=0是指实际上不怎么会发生的事件,也就是小概率事件。
像这样,把分类问题看成函数的近似问题,通过在分类器得构造中采用最小二乘法,就可以对前面我们学习到的最小二乘学习法进行拓展并灵活应用了。
所以,我们还是使用和回归一样的学习方法:
学习好参数之后,我们在测试样本取值的时候还要进行一些简单的处理,就是取函数值的符号,我们使用符号函数sign。
最小二乘分类的代码如下:
clear; closeall; clc;
n = 200;
a = linspace(0,4*pi,n/2);
u = [a.*cos(a) (a+pi).*cos(a)]' + rand(n,1);
v = [a.*sin(a) (a+pi).*sin(a)]' + rand(n,1);
x = [u v];
y = [ones(1,n/2) -ones(1,n/2)]';
x2 = sum(x.^2,2);
hh = 2*1^2;
l = 0.01;
k = exp(-(repmat(x2,1,n) + repmat(x2',n,1) - 2*x*x')/hh);
t = (k^2 + l*eye(n))\(k*y);
m = 100;
X = linspace(-15,15,m)';
X2 = X.^2;
U = exp(-(repmat(u.^2,1,m) + repmat(X2',n,1) - 2*u*X')/hh);
V = exp(-(repmat(v.^2,1,m) + repmat(X2',n,1) - 2*v*X')/hh);
holdon
contourf(X,X,sign(V'*(U.*repmat(t,1,m))));
plot(x(y==1,1),x(y==1,2),'bo','MarkerSize',8,'linewidth',2.5);
plot(x(y==-1,1),x(y==-1,2),'rx','MarkerSize',8,'linewidth',2.5);
axis([-15,15,-15,15]);
colormap([1 0.7 1; 0.7 1 1]);
代码运行结果如下:
由结果可知,最小二乘分类的效果非常好。
以上就是今天推送的内容,欢迎讨论。
领取专属 10元无门槛券
私享最新 技术干货