SVM是机器学习中神一般的存在,虽然自深度学习以来有被拉下神坛的趋势,但不得不说SVM在这个领域有着举足轻重的地位。本文从Hard SVM 到 Dual Hard SVM再引进Kernel Trick,然后推广到常用的Soft Kernel SVM。

  一、Hard SVM

  SVM本身是从感知机算法演变而来,感知机算法是在一个线性可分的数据集中找到一个分类超平面,尽可能的将数据集划分开,理论上这样的超平面有无数多个,但是从直觉上,我们知道离两侧数据都比较远的超平面更适合用于分类,于是我们选择了一个比较“胖”的边界的超平面作为分类界,这就是SVM。

  我们知道一个超平面wx+b=0w是这个超平面的法向量,则平面外一点到这个平面的距离为:d=1/||W||*|WTx+b|(解析几何的知识)。绝对值符号会导致函数不平滑,又因为数据集是线性可分的,所以我们可以把距离公式改写为:d=1/||W||*yi·(WTxi+b)(具体可以参考感知机)。那么我们就有了最基本的优化对象:

                              maxw,b  margin(b,w)

                        subject to:for every n yi·(WTxi+b)>0

                            margin(b,w) = minw,b d

  我们知道同时放缩一个超平面的系数并不会改变这个超平面,such as 3wx+3b=0=wx+b,所以我们可以假设离我们超平面最近的那个向量到平面的距离为1,即让yi·(WTxi+b)=1,那么原来的优化问题就变为了:

                                   maxw,b  1/||W||

                        subject to:for every n yi·(WTxi+b)>0 (已经满足)

                               mini yi·(WTxi+b)≥1

  最大化问题不是很好解决,我们可以转换为我们熟悉最小化问题:

                                    minw,b  0.5*WT*W

                               subject to:mini   yi·(WTxi+b)≥1

  很明显这是一个二次规划问题,我们有成熟的算法如SMO,来解决这样的问题。

  二、Dual SVM    

  对于一个已经解决的问题,为什么我们还要考虑它的对偶问题?这是因为化作对偶问题后会更容易求解,同样也方便引入Kernel Trick。

  考虑原始SVM问题:      

                                   minw,b  0.5*WT*W

                             subject to:all i   yi·(WTxi+b)≥1

  我们改变其形式,转化为:

                          minw,b(maxall α>0  0.5*WT*W+∑α(1-yi·(WTxi+b)))

  我们发现如果满足了条件α的值会变成0,如果不满足就会变成+∞,以此来约束我们的条件。然后我们从极小极大的问题转换为极大极小的问题。  

     minw,b(maxall α>0  0.5*WT*W+∑α(1-yi·(WTxi+b))) ≥ minw,b(0.5*WT*W+∑α(1-yi·(WTxi+b))

    minw,b(0.5*WT*W+∑α(1-yi·(WTxi+b))≥maxall α>0(minw,b  0.5*WT*W+∑α(1-yi·(WTxi+b)))

  maxall α>0(minw,b  0.5*WT*W+∑α(1-yi·(WTxi+b)))就是我们的Lagrange Dual Problem。这是我们原问题的一个下界,那么什么时候能够取得等号呢?根据拉格朗日对偶问题,当优化函数和条件是凸函数时,对偶问题是原问题的解的充要条件即为KKT 条件。然后我们求解对偶问题的极小问题,对w,b求偏导,令其等于0,得到结果为

                              L(w,b,α)=-0.5*||∑αyx||2+∑α

  我们就可以来解决极大问题了,原始优化问题就可以转化为:

                             maxall α>0 ∑yα = 0 w=∑αyx   -0.5*||∑αyx||2+∑α

  这显然又是一个二次规划问题!所以就可以求解了,然后用KKT条件来求解w,b。这就是对偶问题的求解方案。

  三、Kernel Trick

  当数据不是线性可分的,那么SVM就失去了作用,但是我们可以寻找一种函数将数据映射到更高维的空间中,以此把问题变成一个线性可分的问题,但是这会带来维度的急剧上升,使得模型求解效率大大下降,而Kernel Trick就是为了解决这样的问题而出现的!(下回补完!)

  四、Soft SVM

[机器学习]SVM原理的更多相关文章

  1. 机器学习之支持向量机—SVM原理代码实现

    支持向量机—SVM原理代码实现 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/9596898.html 1. 解决 ...

  2. 文本分类学习 (五) 机器学习SVM的前奏-特征提取(卡方检验续集)

    前言: 上一篇比较详细的介绍了卡方检验和卡方分布.这篇我们就实际操刀,找到一些训练集,正所谓纸上得来终觉浅,绝知此事要躬行.然而我在躬行的时候,发现了卡方检验对于文本分类来说应该把公式再变形一般,那样 ...

  3. Support Vector Machine (1) : 简单SVM原理

    目录 Support Vector Machine (1) : 简单SVM原理 Support Vector Machine (2) : Sequential Minimal Optimization ...

  4. 机器学习 | 深入SVM原理及模型推导(一)

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第32篇文章,我们来聊聊SVM. SVM模型大家可能非常熟悉,可能都知道它是面试的常客,经常被问到.它最早诞生于上世纪六 ...

  5. SVM原理与实践

    SVM迅速发展和完善,在解决小样本.非线性及高维模式识别问题中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中.从此迅速的发展起来,已经在许多领域(生物信息学,文本和手写识别等)都取 ...

  6. (一)SVM原理

    前言 本文开始主要介绍一下SVM的分类原理以及SVM的数学导出和SVM在Python上的实现.借鉴了许多文章,会在后面一一指出,如果有什么不对的希望能指正. 一. SVM简介 首先看到SVM是在斯坦福 ...

  7. 机器学习——SVM详解(标准形式,对偶形式,Kernel及Soft Margin)

    (写在前面:机器学习入行快2年了,多多少少用过一些算法,但由于敲公式太过浪费时间,所以一直搁置了开一个机器学习系列的博客.但是现在毕竟是电子化的时代,也不可能每时每刻都带着自己的记事本.如果可以掏出手 ...

  8. SVM原理简介

    本文只是简单介绍一下SVM的理论框架,想要详细了解当中细节问题处理可以参看后续章节或者网上各种详细资料.推荐Andrew Ng的斯坦福大学机器学习课程. 年代中期发展起来的基于统计学习理论的一种机器学 ...

  9. SVM原理(1)

    SVM即支持向量机,是一种机器学习内的二类分类方法,是有监督学习方法. 首先我们需要建立一个分类任务: 首先考虑线性可分的情况:(所谓线性可分就是在N维空间上的两类点,可以用N-1个未知数的函数(超平 ...

随机推荐

  1. CSS布局--左侧自适应母元素高度

    平常项目中经常会遇到有左侧导航菜单的高度不固定,需要与母元素或右侧元素等高的情况,以前就自以为是的使用js来设置,不仅不方便还会出现各种bug,后来就突然想到了一个好方法.有可能这方法已经被其他人用烂 ...

  2. java-工具代码

    格式化输出 //d:是输出整数 //10;表示输出10位整数 //0:表示如果不够10位的话,用0来占位,也可以用写成空格,用空格来占位 String a = String.format(" ...

  3. 将字符串转换成xml并取得对应的值

    如数据库中有一个字段保存了xml格式的一串字符串: <?xml version="1.0" encoding="utf-16"?><Array ...

  4. jQuery分离构造器

    http://www.imooc.com/code/3401 通过new操作符构建一个对象,一般经过四步: A.创建一个新对象   B.将构造函数的作用域赋给新对象(所以this就指向了这个新对象) ...

  5. 《用户体验要素》澄清了 UI 原型设计中看不见确感受得到的那一层

    <用户体验要素>澄清了看不见确感受得到的那一层 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致&quo ...

  6. 卷积神经网络(CNN)的理解与总结

    卷积神经网络模型的历史演化: 0. 核心思想 two main ideas: use only local features 在不同位置上使用同样的特征: 池化层的涵义在于,更高的层次能捕捉图像中更大 ...

  7. phpstorm 删除空行

    思路: 用正则把所有空行找到,然后一键全部替换. 步骤:首先把 Regex 打上勾ctrl+f 搜索框就填写正则规则:^\nctrl+r 匹配到所有空行之后,点击[Replace all]即可

  8. NLP(paper + code)

    0. 开源的库 genism keras wrapper of theano/TensorFlow 1. CNN for NLP Convolutional Neural Networks for S ...

  9. 零元学Expression Design 4 - Chapter 7 使用内建功能「Clone」来达成Path的影分身之术

    原文:零元学Expression Design 4 - Chapter 7 使用内建功能「Clone」来达成Path的影分身之术 本章所介绍的是便利且快速的内建工具Clone ? 本章所介绍的是便利且 ...

  10. 峰识别 峰面积计算 peak detection peak area 源代码 下载

    原文:峰识别 峰面积计算 peak detection peak area 源代码 下载 Comparative  analysis  of  peak-detection  techniques   ...