终于拖到最后一天交机器学习作业,选择了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算法及例子(代码)相关推荐

  1. 支持向量机 SVM 算法推导优缺点 代码实现 in Python

    1.基本思想 前面讲到的Logistic Regression在拟合过程,实际上关注所有样本点的贡献,即寻找这么一个超平面,使得正例的特征远大于0,负例的特征远小于0,强调在全部训练数据上达到这一目标 ...

  2. 机器学习笔记——支持向量机SMO算法完整版代码分析

    机器学习笔记--支持向量机SMO算法完整版代码分析 代码大体分析 外循环 参数类 内循环 KKT条件判断 eCache参数 完整SMO代码 添加核函数代码 代码参考书籍:<机器学习实战> ...

  3. 机器学习算法 08 —— 支持向量机SVM算法(核函数、手写数字识别案例)

    文章目录 系列文章 支持向量机SVM算法 1 SVM算法简介 1.1 引入 1.2 算法定义 2 SVM算法原理 2.1 线性可分支持向量机 2.2 SVM计算过程与算法步骤(有点难,我也没理解透,建 ...

  4. 支持向量机SVM算法原理及应用(R)

    支持向量机SVM算法原理及应用(R) 2016年08月17日 16:37:25 阅读数:22292更多 个人分类: 数据挖掘实战应用 版权声明:本文为博主原创文章,转载请注明来源. https://b ...

  5. 一文读懂支持向量机SVM(附实现代码、公式)

    来源:机器学习算法与Python学习 本文约11000字,建议阅读10+分钟. 本文以简单实例化形式记录学习SVM的过程,力图帮助新手级学习者少走弯路. 支持向量机(SVM),一个神秘而众知的名字,在 ...

  6. 机器学习-支持向量机SVM算法

    文章目录 简介 原理 硬间隔 支持向量 对偶问题 软间隔 核函数 SMO算法 小结 多分类问题 回归问题 应用示例 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点 ...

  7. 支持向量机SVM算法原理笔记2

    上篇博客介绍了当样本集是线性可分情况下的SVM算法原理.接下来介绍不存在一个划分超平面可以正确分类的问题,比如说"异或问题". 对于此类问题,可以将样本空间映射到更高维度空间,这样 ...

  8. 支持向量机SVM算法

    支持向量机SVM 目录 支持向量机SVM 1.支持向量机原理 2.如何找出边际最大的决策边界 3.拉格朗日乘数 4.非线性SVM与核函数 5.示例 支持向量机(SVM,也称支持向量网络),是机器学习中 ...

  9. 优雅的读懂支持向量机 SVM 算法

    转自:JerryLead http://www.cnblogs.com/jerrylead/archive/2011/03/13/1982639.html 简介 支持向量机基本上是最好的有监督学习算法 ...

最新文章

  1. 最新android webview,Android 关于WebView全方面的使用(项目应用篇)
  2. 云端卫士架构师讲DDoS攻击的智能防御之道
  3. 如何解决线程安全的问题
  4. arping 帮助——翻译
  5. zookeeper单机安装
  6. matlab练习程序(三阶张量T-QR分解)
  7. SpringBoot2.6.1 elasticsearch7.1.5 Vue
  8. html 调用tcpdump,Linux tcpdump命令的用法详解(内容较多)
  9. 【搜索】P1032 字串变换
  10. V20西门子变频器怎么选型
  11. 【场景方案】捋一捋Vben Admin之登陆方案(学习记录)
  12. 【NVMe2.0b 8】NVMe 队列仲裁机制
  13. 微信叫车系统|顺风车小程序|在线选座拼车订票APP【开发实战】
  14. rn 滑动验证_rn-fetch-blob
  15. 支付宝支付之“单笔转账到支付宝账户接口”的调用(生成签名、上传应用公钥、下载SDK、接口调用、报错自动排查、查看错误码)
  16. 使用scp命令传文件
  17. ssoj1338蜘蛛侠 trampolin
  18. 41、【斯纳克图书馆管理系统】编目流程 [ 准备工作]
  19. 操作系统、输入法和编码的理解
  20. LSSVM,python代码实例

热门文章

  1. An unexpected error has been detected by Java Runtime Environment
  2. MYSQL下载安装:
  3. 异常处理——栈解旋(unwinding)
  4. matlab 立体双目,correl sp matlab 实现双目视觉的三维重建 利用两张图片 信息 276万源代码下载- www.pudn.com...
  5. ORACLE 启动报错 ORA-00600: internal error code, arguments
  6. UI 真正的含义是什么?
  7. 2020-11-10
  8. 【Jmeter】jmeter的安装与启动(win10)
  9. 可变步长最小均方 (VSS-LMS) 算法附matlab代码
  10. 用BibTeX 写 Reference