- 阅读权限
- 255
- 威望
- 0 级
- 论坛币
- 50288 个
- 通用积分
- 83.6306
- 学术水平
- 253 点
- 热心指数
- 300 点
- 信用等级
- 208 点
- 经验
- 41518 点
- 帖子
- 3256
- 精华
- 14
- 在线时间
- 766 小时
- 注册时间
- 2006-5-4
- 最后登录
- 2022-11-6
|
|
- %%%%%%%%%%%%%%
- %lecture 11 code
- %matlab script - svm exmaple
- %primal form problems
- cd ~/cvx
- cvx_setup
- cd ~/classes/stat640_2015/
- %%%%%%%%%%%
- %separable case - optimal separating hyperplanes
- clf
- var = 1.25;
- n = 100; mu1 = [3; 8]; mu2 = [8; 3];
- x1 = repmat(mu1',n/2,1) + randn(n/2,2)*sqrt(var);
- x2 = repmat(mu2',n/2,1) + randn(n/2,2)*sqrt(var);
- x = [x1; x2];
- Y = [repmat(1,50,1); repmat(-1,50,1)];
- hold on
- scatter(x1(:,1),x1(:,2),'or','filled')
- scatter(x2(:,1),x2(:,2),'ob','filled')
- axis([min(min(x(:,1))) max(max(x(:,1))) min(min(x(:,2))) max(max(x(:,2)))]);
- hold off
- cvx_begin
- cvx_precision('high')
- variable beta0;
- variable beta(2);
- minimize( .5*square_pos(norm(beta)));
- subject to
- Y.*(x*beta + beta0) >= 1;
- cvx_end
- hold on
- scatter(x1(:,1),x1(:,2),'or','filled')
- scatter(x2(:,1),x2(:,2),'ob','filled')
- axis([min(min(x(:,1))) max(max(x(:,1))) min(min(x(:,2))) max(max(x(:,2)))]);
- xs = linspace(min(min(x)),max(max(x)),1000);
- plot(xs,(-beta0 - xs*beta(1))/beta(2),'k')
- M = 1/norm(beta);
- plot(xs,(-beta0 - xs*beta(1)+1)/beta(2) ,'--k')
- plot(xs,(-beta0 - xs*beta(1)-1)/beta(2),'--k')
- hold off
- %%%%%%%%%%%%%%
- %non-seperable case - linear SVMs
- clf
- var = 2.8;
- n = 100; mu1 = [3; 8]; mu2 = [8; 3];
- x1 = repmat(mu1',n/2,1) + randn(n/2,2)*sqrt(var);
- x2 = repmat(mu2',n/2,1) + randn(n/2,2)*sqrt(var);
- x = [x1; x2];
- Y = [repmat(1,50,1); repmat(-1,50,1)];
- hold on
- scatter(x1(:,1),x1(:,2),'or','filled')
- scatter(x2(:,1),x2(:,2),'ob','filled')
- axis([min(min(x(:,1))) max(max(x(:,1))) min(min(x(:,2))) max(max(x(:,2)))]);
- hold off
- gam = 5;
- cvx_begin
- cvx_precision('high')
- variable beta0;
- variable beta(2);
- variable epsilon(n);
- minimize( .5*square_pos(norm(beta)) + gam*sum(epsilon));
- subject to
- for i=1:n
- Y(i)*(x(i,:)*beta + beta0) >= 1 - epsilon(i);
- end
- epsilon >= 0;
- cvx_end
- clf
- hold on
- scatter(x1(:,1),x1(:,2),'or','filled')
- scatter(x2(:,1),x2(:,2),'ob','filled')
- axis([min(min(x(:,1))) max(max(x(:,1))) min(min(x(:,2))) max(max(x(:,2)))]);
- xs = linspace(min(min(x)),max(max(x)),1000);
- plot(xs,(-beta0 - xs*beta(1))/beta(2),'k')
- M = 1/norm(beta);
- plot(xs,(-beta0 - xs*beta(1)+1)/beta(2) ,'--k')
- plot(xs,(-beta0 - xs*beta(1)-1)/beta(2),'--k')
- ind = epsilon>1e-6;
- scatter(x(ind,1),x(ind,2),'+k','SizeData',150)
- ind = abs(x*beta + beta0 + 1)<1e-4;
- scatter(x(ind,1),x(ind,2),'Xk','SizeData',150)
- ind = abs(x*beta + beta0 - 1)<1e-4;
- scatter(x(ind,1),x(ind,2),'Xk','SizeData',150)
- hold off
- %%%%%%%%%%%%%%
- %lecture 11 code
- %matlab script - svm exmaple
- %primal form problems
- cd ~/cvx
- cvx_setup
- cd ~/classes/stat640_2014/
- %%%%%%%%%%%%%%
- %non-seperable case
- clf
- var = 2.8;
- n = 100; mu1 = [3; 8]; mu2 = [8; 3];
- x1 = repmat(mu1',n/2,1) + randn(n/2,2)*sqrt(var);
- x2 = repmat(mu2',n/2,1) + randn(n/2,2)*sqrt(var);
- x = [x1; x2];
- Y = [repmat(1,50,1); repmat(-1,50,1)];
- hold on
- scatter(x1(:,1),x1(:,2),'or','filled')
- scatter(x2(:,1),x2(:,2),'ob','filled')
- axis([min(min(x(:,1))) max(max(x(:,1))) min(min(x(:,2))) max(max(x(:,2)))]);
- hold off
- gam = .1;
- cvx_begin
- cvx_precision('high')
- variable beta0;
- variable beta(2);
- variable epsilon(n);
- minimize( .5*square_pos(norm(beta)) + gam*sum(epsilon));
- subject to
- for i=1:n
- Y(i)*(x(i,:)*beta + beta0) >= 1 - epsilon(i);
- end
- epsilon >= 0;
- cvx_end
- clf
- hold on
- scatter(x1(:,1),x1(:,2),'or','filled')
- scatter(x2(:,1),x2(:,2),'ob','filled')
- axis([min(min(x(:,1))) max(max(x(:,1))) min(min(x(:,2))) max(max(x(:,2)))]);
- xs = linspace(min(min(x)),max(max(x)),1000);
- plot(xs,(-beta0 - xs*beta(1))/beta(2),'k')
- M = 1/norm(beta);
- plot(xs,(-beta0 - xs*beta(1)+1)/beta(2) ,'--k')
- plot(xs,(-beta0 - xs*beta(1)-1)/beta(2),'--k')
- ind = epsilon>1e-6;
- scatter(x(ind,1),x(ind,2),'+k','SizeData',150)
- ind = abs(x*beta + beta0 + 1)<1e-4;
- scatter(x(ind,1),x(ind,2),'Xk','SizeData',150)
- ind = abs(x*beta + beta0 - 1)<1e-4;
- scatter(x(ind,1),x(ind,2),'Xk','SizeData',150)
- hold off
- %%%%%%%%%%%%%%%%%%%%%
- %zip code example
- %pair-wise
- zip1 = 3; zip2 = 8;
- trdat = dlmread('zip.train');
- ind = trdat(:,1)==zip1 | trdat(:,1)==zip2;
- X = trdat(ind,2:end);
- Y = trdat(ind,1);
- [n,p] = size(X);
- tsdat = dlmread('zip.test');
- ind = tsdat(:,1)==zip1 | tsdat(:,1)==zip2;
- Xs = tsdat(ind,2:end);
- Ys = tsdat(ind,1);
- C = .01;
- fitsvm = svmtrain(X,Y,'boxconstraint',C);
- class = svmclassify(fitsvm,X);
- trerr = sum(class~=Y)/length(Y);
- class = svmclassify(fitsvm,Xs);
- tserr = sum(class~=Ys)/length(Ys);
- [trerr tserr]
- fitsvm
- colormap(gray)
- for i=1:9
- subplot(3,3,i)
- imagesc(flipud(rot90(reshape(fitsvm.SupportVectors(i,:),16,16))))
- axis off
- end
- [classNB,errNB] = classify(Xs,X,Y,'diaglinear');
- [classLDA,errLDA] = classify(Xs,X,Y,'linear');
- [errNB errLDA tserr]
复制代码
|
|