【SVM之菜鸟实现】—5步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);endfunction [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:40X0 = [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 yplot(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相关推荐
- svm c++实现_机器学习笔记——SVM向量机
SVM支持向量机 此教程分为两个部分: 第一个部分旨在使用可视化的方式让同学们理解SVM的工作原理, SVM分割线, SVM的支持向量. 并且使用实例证明SVM的分割线只由支持向量唯一缺点, 与线性回 ...
- SVM为什么采用间隔最大化?SVM为什么将原始问题转换为其对偶问题?
SVM为什么采用间隔最大化?SVM为什么将原始问题转换为其对偶问题? SVM为什么采用间隔最大化? SVM的基本思想就是求解能够正确划分训练数据集并且几何间隔最大的分离超平面,这里的间隔最大化又叫做硬 ...
- SVM学习(一):SVM概念
SVM算法学习之旅,首先介绍一下SVM概念. 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本.非线性及高维模式识别中表现出 ...
- ML之SVM:基于Js代码利用SVM算法的实现根据Kaggle数据集预测泰坦尼克号生存人员
ML之SVM:基于Js代码利用SVM算法的实现根据Kaggle数据集预测泰坦尼克号生存人员 目录 实验数据 设计思路 实现代码(部分代码) 实验数据 设计思路 实现代码(部分代码) /**js代码实 ...
- ML之SVM:利用Js语言设计SVM算法(SMO算法+线性核/高斯核)
ML之SVM:利用Js语言设计SVM算法(SMO算法+线性核/高斯核) 目录 输出结果 设计思路 设计代码(部分代码) 输出结果 设计思路 设计代码(部分代码) var doTest = functi ...
- 解密SVM系列(二):SVM的理论基础(转载)
解密SVM系列(二):SVM的理论基础 原文博主讲解地太好了 收藏下 解密SVM系列(三):SMO算法原理与实战求解 支持向量机通俗导论(理解SVM的三层境界) 上节我们探讨了关于拉格朗日乘 ...
- 机器学习05:SVM支持向量机的学习和应用SVM解决猫狗图像分类问题
机器学习05:SVM支持向量机的学习和应用SVM解决猫狗图像分类问题 文章目录 机器学习05:SVM支持向量机的学习和应用SVM解决猫狗图像分类问题 前言 1.从二维线性模型说起 2. 如何求解SVM ...
- python svm核函数_机器学习算法实践-SVM核函数和软间隔
前言 上文中简单总结了对于线性可分数据的SVM的算法原理,本文对于非线性可分以及有噪声存在的时候我们需要对基本SVM算法的改进进行下总结其中包括: 核函数在SVM算法中的使用 引入松弛变量和惩罚函数的 ...
- svm理论与实验之11:svm开发工具包LibSVM
徐海蛟博士 Teaching. 光说不练,很难真正理解svm的妙处,也难以真正实用.所以,有必要跟着徐海蛟老师一起练习svm.svm理论和工具已经很成熟了.童鞋们并不需要手写每一行代码.一个非常好用的 ...
最新文章
- 浅析网站页面加载速度如何提升?
- 图像增强算法四种,图示与源码,包括retinex(ssr、msr、msrcr)和一种混合算法
- ubuntu安装node.js
- JavaSE——数组基础(创建格式、下标、获取长度、常见问题、多维数组)
- 如何设计一个安全对外的接口
- python有哪些游戏模块_python游戏模块 Pygame常用方法
- debian之自启动程序
- centos+darwin搭建简单的视频流服务器
- 怎样在安卓中实现在锁屏状态下弹出对话框,并可以震动和铃声,就像闹钟似的?...
- 五笔输入法linux安装包,RedHat enterprise Linux 5 安装五笔输入法
- 两篇文章的相似度比较
- 计算机机箱最新推出的是什么架构,独特三舱位结构:LIANLI 联力 推出 PC-O12 E-ATX 全塔机箱...
- 光明勇士iOS服务器维护,裕际网络科技《光明勇士》3月11日 iOSamp;安卓部分区服数据互通公告 - 热门手游公告-TK游戏...
- 32位与64位CPU字长
- 用计算机弹奏的成都,抖音成都怎么用计算器弹奏_抖音成都计算器乐谱_管理资源吧...
- Ubuntu下mysql-proxy服务器的配置
- Java编程——subString,截取当前字符串的部分内容
- 【华为机试真题 C++】一种字符串压缩表示的解压-100
- 微信小程序 保存base64图片和普通图片
- P1162 填图颜色 洛谷(BFS的简单应用)