什么是Hard-Margin SVM?指的是这个向量机只适用于“数据完全可分(seperately)”的情况。

(一)什么是支持向量机?

上述三条直线,选择哪一条比较好?直觉上来说,最右面的那条直线最好。因为它的Margin比较胖,对数据点中混杂的噪声容忍度更高,更加robust。所以以后我们在计算w的时候,加上一个限制条件:寻找Margin最胖的w。

w能将所有的点分开,等价于:对于所有的点,有ynwTxn > 0.

首先需要解决一个问题:如何衡量distance?

为了更好的表达这个问题,我们先明确一下符号的含义:

把w拆成两部分。

现在我们已经知道了distance如何衡量,我们的问题转化成

这个问题是什么呢?以二维直线为例:对于一堆可以把所有数据点正确分类的直线,选择margin(b,w)最大的直线。

现在来想:这些直线都是可以scaling的,假设我scaling所有的w,使得:

再次转化问题:

现证明最终形式等价于上一个形式:

对于所有n条件下,寻找最小的|w|。假设找到一组(b,w)。且对于所有的n,有(a>1)。必然存在一组(b/a, w/a),满足条件,且具有更小的|w|。存在矛盾,所以必然有a=1.那么问题就等于于:。证明完毕。

上述形式即为支持向量机

我们可以看出,对于支持向量机,相当于在线性模型上加了一个限制条件,使得VC dimension减小。

具体的有:

这里的ρ代表的就是margin的大小。

支持向量机的好处是:

(二)如何计算SVM(1)

对于SVM这种形式呢,我们可以用一个叫做“二次规划”的工具来求解。

“二次规划”是一个工具程序,我们只要把SVM的输入输出改写成符合“二次规划”要求的输入输出,利用现有的工具计算即可。

(三)如何计算SVM(2)

对于non-linear SVM,数据点的维度非常大

现在的问题是:对于nonlinear SVM,如何实现下述目标?

这需要非常多的数学知识,下面只讲概况。

1)首先使用Lagrange Multipliers

SVM问题转化为:

2)对偶问题

其对偶问题只不过是将max与min位置互换。

补充说明:只有满足KKT condition的情况下,原问题(primal)与对偶问题(dual)的最优解相同。

(第四个条件:primal-inner optimal,可以通过Lagrange Multipliers那一张PPT解释)

继续求解:

再根据KKT condition,我们可以利用α的值,表达出optimal (b,w)

PS:

1)根据,当αn大于0时,必然有,也即:第n个数据点在margin上;

2)同时,在计算w和b的时候,只有大于0的αn起作用。

所以对于αn> 0的数据点(zn, yn)称之为支持向量

这个支持向量不同于之前我们定义的支持向量,因为两个都为0的情况没有考虑。

问题真的解决了么?没有。两个问题:

1)如果N很大的话,例如N=30000,那么单单存储Q矩阵(N*N)就需要>3G RAM。所以我们需要特殊的、为SVM定制的QP程序;

2)我们并没有实现目标,只是把计算复杂度给隐藏了。

(四)真正解决SVM:核函数

举一个例子:

这样的话:

OK,现在SVM问题解决了!

补充一点关于核函数的知识:

1)对于Polynomial 核函数,我们最常用的形式是:如下第三种形式

2)最好先从Q=1开始(先从线性模型开始做)

3)高斯核函数

因为高斯核函数很难从物理角度解释,所以使用的使用必须慎重的选择参数:

3)三种核函数比较:

Hard-Margin SVM(支持向量机)的更多相关文章

  1. 机器学习实战 - 读书笔记(06) – SVM支持向量机

    前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习笔记,这次是第6章:SVM 支持向量机. 支持向量机不是很好被理解,主要是因为里面涉及到了许多数学知 ...

  2. Python实现SVM(支持向量机)

    Python实现SVM(支持向量机) 运行环境 Pyhton3 numpy(科学计算包) matplotlib(画图所需,不画图可不必) 计算过程 st=>start: 开始 e=>end ...

  3. Jordan Lecture Note-7: Soft Margin SVM

    Soft Margin SVM  (1)Recall 之前分析到SVM的模型为: \begin{align}\mathop{\min}&\quad \frac{1}{2}w^\prime w\ ...

  4. SVM支持向量机的基本原理

    SVM支持向量机的基本原理 对于很多分类问题,例如最简单的,一个平面上的两类不同的点,如何将它用一条直线分开?在平面上我们可能无法实现,但是如果通过某种映射,将这些点映射到其它空间(比如说球面上等), ...

  5. 机器学习:SVM(目标函数推导:Hard Margin SVM、Soft Margin SVM)

    一.Hard Margin SVM SVM 的思想,最终用数学表达出来,就是在优化一个有条件的目标函数: 此为 Hard Margin SVM,一切的前提都是样本类型线性可分: 1)思想 SVM 算法 ...

  6. 6-11 SVM支持向量机2

    SVM支持向量机的核:线性核.进行预测的时候我们需要把正负样本的数据装载在一起,同时我们label标签也要把正负样本的数据全部打上一个label. 第四步,开始训练和预测.ml(machine lea ...

  7. 6-10 SVM支持向量机1

    都是特征加上分类器.还将为大家介绍如何对这个数据进行训练.如何训练得到这样一组数据. 其实SVM支持向量机,它的本质仍然是一个分类器.既然是一个分类器,它就具有分类的功能.我们可以使用一条直线来完成分 ...

  8. SVM 支持向量机算法-实战篇

    公号:码农充电站pro 主页:https://codeshellme.github.io 上一篇介绍了 SVM 的原理和一些基本概念,本篇来介绍如何用 SVM 处理实际问题. 1,SVM 的实现 SV ...

  9. paper 4:支持向量机系列一: Maximum Margin Classifier —— 支持向量机简介。

    支持向量机即 Support Vector Machine,简称 SVM .我最开始听说这头机器的名号的时候,一种神秘感就油然而生,似乎把 Support 这么一个具体的动作和 Vector 这么一个 ...

  10. SVM 支持向量机

          学习策略:间隔最大化(解凸二次规划的问题) 对于上图,如果采用感知机,可以找到无数条分界线区分正负类,SVM目的就是找到一个margin 最大的 classifier,因此这个分界线(超平 ...

随机推荐

  1. Google不做坏事吗?

    说中国足球为什么冲不出亚洲,那是因为咱中国人太文气,足球是种“斗牛士”式的游戏,得玩的有点儿“野蛮”色彩.记得以前在英国的时候,遇上联赛,晚上大街小巷全民皆兵,曼切斯特队的粉丝在街道一边酒吧里,利物浦 ...

  2. android MD5

    public static String MD5(String str) { MessageDigest md5 = null; try { md5 = MessageDigest.getInstan ...

  3. 企业用户2T(含秒传),普通用户20G

    周鸿祎一定要看的建议(要求置顶):可以解决本次云盘事件的建议!!! 2016-10-23 20:23 | 复制链接 | 淘帖 461334 本帖最后由 cqthxin 于 2016-10-23 20: ...

  4. C++:this指针

    this指针 this关键字:表示本类中的对象成员,可以通过this指针访问当前类的成员//举例 //例 3.18 隐藏this指针的引例 #include<iostream> using ...

  5. redhat6和ubuntu13.10在WMware player 下与Windows共享文件

    Redhat下: 点击VMware的 setting -> vmware tools install mount /dev/cdrom /mnt/cdromcd /mnt/cdrom里面有一个v ...

  6. 车牌识别LPR(七)-- 字符特征

    第七篇:字符特征 选择的字符特征应该满足以下条件: (1)选取的字符特征具有较强的鲁棒性,不受字符变形.弯曲等影响. (2)两个字符的字符特征不能完全相同,但部分相同是允许的,即选择的字符特征是唯一的 ...

  7. 车牌识别LPR(二)-- 车牌特征及难点

    第二篇:车牌的特征及难点 2.1  对我国车牌的认识 我国目前使用的汽车牌号标准是 2007 年开始实施的<中华人民共和国机动车号牌>GA36-2007(2010 年修订).根据 GA36 ...

  8. 开发板挂载nfs服务器错误解析

    输入mount -t nfs 192.168.1.110:/home/work /mnt,这时可能会出现 mount.nfs:access denied by server while mountin ...

  9. Oracle过程包加密

    Oracle加绕功能可以将PL/SQL代码实现部分隐藏,如存储过程.函数.包体等均可使用加绕功能,下面以一个存储过程实现部分加绕来展示Oracle加绕功能的使用.  加绕方法一: 1.编写如下存储过程 ...

  10. ACM刷题常用链接

    武汉科技大学  http://acm.wust.edu.cn/ 华中科技大学 http://acm.hust.edu.cn/vjudge/toIndex.action 杭州电子科技大学  http:/ ...