支持向量机——SVM算法及例子(代码)
终于拖到最后一天交机器学习作业,选择了SVM算法,之前一直听说过,现在终于有了初步的了解,顺便post到这里分享一下,不足地方请大家指出
本文内容有来自《统计学习算法》(李航 著)第7章——支持向量机
同时也看了Stanford机器学习公开课
概要
支持向量机属于监督学习,是一种二类分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,支持向量机包括核心技巧,这使它成为实质上的非线性分类器。支持向量机的学习策略是间隔最大化,可形式化为一个求解凸二次规划的问题。
支持向量机学习方法包含构建由简至繁的模型:线性可分支持向量机、线性支持向量机及非线性支持向量机。简单模型是复杂模型的基础,也是复杂模型的特殊情况。当训练数据线性可分时,通过硬间隔最大化,学习一个线性的分类器,即线性可分支持向量机,又称为硬间隔支持向量机;当训练数据线性近似可分时,通过软间隔最大化,可学习一个线性的分类器,即线性支持向量机,又称为软间隔支持向量机;当训练数据线性不可分时,通过使用核及软间隔最大化,学习非线性支持向量机。
预备知识
函数间隔和几何间隔
KKT条件
线性可分支持向量机与硬间隔最大化
线性可分支持向量机
间隔最大化
支持向量和间隔边界
学习的对偶算法
线性支持向量机与软间隔最大化
非线性支持向量机与核函数
非线性支持向量机
核函数定义
Mercer定理
常用的核函数
实验
下面使用matlab构造一个线性可分训练数据集,利用线性支持向量机学习算法,通过求解目标函数的对偶问题得到最优解并计算分离超平面。
代码如下:
clear all
%构造两类训练数据集
n = 60;
randn('state',6);
x1 = randn(n,2); %2行N列矩阵
y1 = ones(n,1); %1*N个1
x2 = 5+randn(n,2); %2*N矩阵
y2 = -ones(n,1); %1*N个-1figure;
plot(x1(:,1),x1(:,2),'bx',x2(:,1),x2(:,2),'k.');
hold on;
X = [x1;x2]; % 训练样本
Y = [y1;y2]; % 训练目标,n×1的矩阵,n为样本个数,值为+1或-1tic
%解二次优化方程
n = length(Y);
H = (Y*Y').*(X*X'); % liner kernel
f = -ones(n,1);
A = [];
b = [];
Aeq = Y';
beq = 0;
lb = zeros(n,1);
ub = 100*ones(n,1);
a0 = zeros(n,1);
options = optimset;
options.LargeScale = 'off';
options.Display = 'off';
[a,fval,eXitflag,output,lambda]= quadprog(H,f,A,b,Aeq,beq,lb,ub,a0,options);
eXitflag
time=toc%以下是分类平面:
Y2=a.*Y;W(1)=sum(Y2.*(X(:,1)));W(2)=sum(Y2.*(X(:,2)));aLarge=find(a>0.1);
j=aLarge(1);S(:,1)=Y.*a.*X(:,1);
S(:,2)=Y.*a.*X(:,2);S2=S*(X(j,:)');b=Y(j)-sum(S2);xx1=min(X):0.1:max(X);xx2=-(W(1)*xx1+b)/W(2);plot(xx1,xx2);
实验结果如下图所示:
支持向量机——SVM算法及例子(代码)相关推荐
- 支持向量机 SVM 算法推导优缺点 代码实现 in Python
1.基本思想 前面讲到的Logistic Regression在拟合过程,实际上关注所有样本点的贡献,即寻找这么一个超平面,使得正例的特征远大于0,负例的特征远小于0,强调在全部训练数据上达到这一目标 ...
- 机器学习笔记——支持向量机SMO算法完整版代码分析
机器学习笔记--支持向量机SMO算法完整版代码分析 代码大体分析 外循环 参数类 内循环 KKT条件判断 eCache参数 完整SMO代码 添加核函数代码 代码参考书籍:<机器学习实战> ...
- 机器学习算法 08 —— 支持向量机SVM算法(核函数、手写数字识别案例)
文章目录 系列文章 支持向量机SVM算法 1 SVM算法简介 1.1 引入 1.2 算法定义 2 SVM算法原理 2.1 线性可分支持向量机 2.2 SVM计算过程与算法步骤(有点难,我也没理解透,建 ...
- 支持向量机SVM算法原理及应用(R)
支持向量机SVM算法原理及应用(R) 2016年08月17日 16:37:25 阅读数:22292更多 个人分类: 数据挖掘实战应用 版权声明:本文为博主原创文章,转载请注明来源. https://b ...
- 一文读懂支持向量机SVM(附实现代码、公式)
来源:机器学习算法与Python学习 本文约11000字,建议阅读10+分钟. 本文以简单实例化形式记录学习SVM的过程,力图帮助新手级学习者少走弯路. 支持向量机(SVM),一个神秘而众知的名字,在 ...
- 机器学习-支持向量机SVM算法
文章目录 简介 原理 硬间隔 支持向量 对偶问题 软间隔 核函数 SMO算法 小结 多分类问题 回归问题 应用示例 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点 ...
- 支持向量机SVM算法原理笔记2
上篇博客介绍了当样本集是线性可分情况下的SVM算法原理.接下来介绍不存在一个划分超平面可以正确分类的问题,比如说"异或问题". 对于此类问题,可以将样本空间映射到更高维度空间,这样 ...
- 支持向量机SVM算法
支持向量机SVM 目录 支持向量机SVM 1.支持向量机原理 2.如何找出边际最大的决策边界 3.拉格朗日乘数 4.非线性SVM与核函数 5.示例 支持向量机(SVM,也称支持向量网络),是机器学习中 ...
- 优雅的读懂支持向量机 SVM 算法
转自:JerryLead http://www.cnblogs.com/jerrylead/archive/2011/03/13/1982639.html 简介 支持向量机基本上是最好的有监督学习算法 ...
最新文章
- 最新android webview,Android 关于WebView全方面的使用(项目应用篇)
- 云端卫士架构师讲DDoS攻击的智能防御之道
- 如何解决线程安全的问题
- arping 帮助——翻译
- zookeeper单机安装
- matlab练习程序(三阶张量T-QR分解)
- SpringBoot2.6.1 elasticsearch7.1.5 Vue
- html 调用tcpdump,Linux tcpdump命令的用法详解(内容较多)
- 【搜索】P1032 字串变换
- V20西门子变频器怎么选型
- 【场景方案】捋一捋Vben Admin之登陆方案(学习记录)
- 【NVMe2.0b 8】NVMe 队列仲裁机制
- 微信叫车系统|顺风车小程序|在线选座拼车订票APP【开发实战】
- rn 滑动验证_rn-fetch-blob
- 支付宝支付之“单笔转账到支付宝账户接口”的调用(生成签名、上传应用公钥、下载SDK、接口调用、报错自动排查、查看错误码)
- 使用scp命令传文件
- ssoj1338蜘蛛侠 trampolin
- 41、【斯纳克图书馆管理系统】编目流程 [ 准备工作]
- 操作系统、输入法和编码的理解
- LSSVM,python代码实例
热门文章
- An unexpected error has been detected by Java Runtime Environment
- MYSQL下载安装:
- 异常处理——栈解旋(unwinding)
- matlab 立体双目,correl sp matlab 实现双目视觉的三维重建 利用两张图片 信息 276万源代码下载- www.pudn.com...
- ORACLE 启动报错 ORA-00600: internal error code, arguments
- UI 真正的含义是什么?
- 2020-11-10
- 【Jmeter】jmeter的安装与启动(win10)
- 可变步长最小均方 (VSS-LMS) 算法附matlab代码
- 用BibTeX 写 Reference