版权声明:本文为博主原创文章,未经博主允许不得转载。
对于高维空间的两类问题,最直接的方法是找到一个最佳的分类超平面,使得并且
,对于所有的正负训练样本
和
. 因此,以上问题可以表达为:
%% training...%Linear programmingfor i=1:n A(i,:) = [-x(:,i)',-1];endfor i=1:m A(i+n,:) = [y(:,i)',1];endc = ones(n+m,1)*(-1);w = linprog(zeros(d+1,1),A,c);hold on;%% visualize the classification areax1 = -shift-2:0.1:shift+2*sigma;y1 = (-w(3)-w(1)*x1)/w(2);plot(x1,y1,'-','LineWidth',2);legend('Positive samples','Negative samples','Linear programming');
由于采用线性规化来解线性可分问题存在无数多个解,那么哪个一解是最优的呢? 我们希望找到一个超平面,使得该平面前后平移d的距离后分类碰到正负样本并且使d最大化。2*d 即为以下两个平面之间的距离:
从上图可见,线性SVM分类的效果要好于线性分类器。
PS: 本文所有代码可在http://download.csdn.net/detail/ranchlai/6009209下载。
新闻热点
疑难解答