@余凯_西二旗民工 【SVM之菜鸟实现】—5步SVM
2013-09-03 19:19
176 查看
#翻译#了下 余凯老师的 心法
以前的一篇博文:二分类SVM方法Matlab实现
前几日实现了下,虽然说是Linear-SVM,但是只要可以有映射函数也可以做kernel-svm
测试用例:
以前的一篇博文:二分类SVM方法Matlab实现
前几日实现了下,虽然说是Linear-SVM,但是只要可以有映射函数也可以做kernel-svm
function [optW cost]= svm5step(X, y, lambda) %% Linear-SVM Minimize(Cost + lambda*Penalty) % X: N×dim % y: {-1,+1} % lambda: coefficient for Penalty part % By LiFeiteng Email:lifeiteng0422@gmail.com [N dim] = size(X); w = rand(dim+1,1); X = [ones(N,1) X]; % x = [1 x] % minFunc From: http://www.di.ens.fr/~mschmidt/Software/minFunc.html options.Method = 'lbfgs'; options.maxIter = 100; options.display = 'on'; [optW, cost] = minFunc( @(p) svmCost(p, X, y, lambda), w, options); end function [cost grad] = svmCost(w, X, y, lambda) % cost = HingeLoss^2 + lambda*||w||^2 % 1 2 3 4 5 step yp = X*w; idx = find(yp.*y<1); err = yp(idx)-y(idx); cost = err'*err + lambda*w'*w; grad = 2*X(idx,:)'*err + 2*lambda*w; end
测试用例:
clear close all x0 = [1 4]'; x1 = [4 1]'; X0 = []; X1 = []; for i = 1:40 X0 = [X0 normrnd(x0, 1)]; X1 = [X1 normrnd(x1, 1)]; end X = [X0 X1]'; y = [-ones(size(X0,2),1); ones(size(X1,2),1)]; save data X0 X1 X y plot(X0(1,:),X0(2,:), 'ko', 'MarkerFaceColor', 'y', 'MarkerSize', 7); hold on plot(X1(1,:),X1(2,:), 'k+','LineWidth', 2, 'MarkerSize', 7); lambda = 0.01; w = svm5step(X, y, lambda) k = -w(2)/w(3); b = -w(1)/w(3); h = refline(k,b); %已知斜率w 截距b 画直线 set(h, 'Color', 'r') b = -(w(1)+1)/w(3); h = refline(k,b); %已知斜率w 截距b 画直线 b = -(w(1)-1)/w(3); h = refline(k,b); %已知斜率w 截距b 画直线 title(['5 steps Linear-SVM: \lambda = ' num2str(lambda)] )
相关文章推荐
- 【SVM之菜鸟实现】—5步SVM
- ML_SVM的菜鸟实现
- 【SVM之菜鸟实现】 python版
- 【SVM之菜鸟实现】 python版
- (多图慎入)图解菜鸟到大拿实现财务自由走向人生巅峰之路
- 机器学习实战(5)--SVM(Support vector machine)(六)--Python实现
- 和菜鸟一起学ok6410之ffmpeg+ffserver实现流媒体传输
- 机器学习:支持向量机(SVM)与Python实现第(四)篇
- SVM:SVM之Classification根据已有大量数据集案例,输入已有病例的特征向量实现乳腺癌诊断高准确率预测—Jason niu
- python 实现SVM向量机代码
- Java设计模式菜鸟系列(三)装饰者模式建模与实现
- VS+Opencv3.3下用HOG+SVM实现INRIA行人检测
- 和菜鸟一起学ok6410之ffmpeg+ffserver实现流媒体传输
- Java设计模式菜鸟系列(四)工厂方法模式建模与实现
- 菜鸟学SSH(十八)——Hibernate动态模型+JRebel实现动态创建表
- Java实现简单版SVM
- SVM基础及java源码实现
- SVM(1)OpenCV实现
- 用tensorflow实现svm对鸢尾花数据分类
- 菜鸟学Andoid笔记(三十):Response实现重定向和注意事项