机器学习——最小二乘分类

今天介绍机器学习中的分类,我们知道,在某种意义下,机器学习方法一般被用来做两件事:回归(拟合)和分类,再进一步,可以将分类也归为拟合,只不过拟合的是离散的值(函数值的符号)。

考虑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]);

代码运行结果如下:

由结果可知,最小二乘分类的效果非常好。

以上就是今天推送的内容,欢迎讨论。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180408G1SGAT00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券