主要记录了SVM思想的理解,关键环节的推导过程,主要是作为准备面试的需要.

1.准备知识-点到直线距离

点\(x_0\)到超平面(直线)\(w^Tx+b=0\)的距离,可通过如下公式计算:
\[ d = \frac{w^Tx_0+b}{||w||}\]
因为公式分子部分没有带绝对值,因此计算得到的d有正负之分.因为超\(w^Tx+b=0\)将空间分为两部分(以2维为例,直线\(w_1x+w_2y+b=0\),将二维空间划分为上下两部分),其中一部分d大于0,另一部分d小于0.

上面距离公式的简单推导过程如下:

  1. 超平面\(w^Tx+b=0\)的一个法向量为\(w\):
    因为对于超平面上任意不同的两点\(x_0,x_1\),他们所构成的向量\((x_1-x_0)\),与\(w\)的内积为:
    \[\begin{align}
    w^T(x_1-x_0) &= w^Tx_1-w^Tx_0\\
    &= -b-(-b)\\
    &= 0
    \end{align}\]
    即,\(w\)与超平面上任意向量(直线)正交,即\(w\)为超平面的法向量,\(\frac{w}{||w||}\)为超平面的单位法向量.
  2. 点\(x_0\)到超平面\(w^Tx+b=0\)的距离等于,平面上任意一点\(x_1\)与点\(x_0\)构成的向量在单位法向量上的投影,即:
    \[\begin{align}
    d &= \frac{w^T(x_0-x_1)}{||w||}\\
    &= \frac{w^Tx_0-w^Tx_1}{||w||}\\
    &= \frac{w^Tx_0-(-b)}{||w||}\\
    &= \frac{w^Tx_0+b}{||w||}\\
    \end{align}\]

2. 支持向量机的数学表示

SVM的图示如下,主要思想是寻找使得margin最大的超平面,该超平面为两条平行的边界超平面的中心.

  • 假设分类的超平面为\(w^Tx+b=0\),两个平行的边界超平面分别为
    \[\begin{cases}
    w^Tx+b=l\\
    w^Tx+b=-l\\
    \end{cases}\]
    因为\(\frac{w}{l}^Tx+\frac{b}{l}=0\)与\(w^Tx+b=0\)是同一个超平面,所以等式两边同除以\(l\),并进行变量替换后,边界超平面可以定义为如下形式:
    \[\begin{cases}
    w^Tx+b=1\\
    w^Tx+b=-1\\
    \end{cases}\]

  • 样本被两个边界超平面分隔开,假设对于标签\(y_i=1\)的样本,\(w^Tx_i+b\ge 1\).则对于标签\(y_i=-1\)的样本,\(w^Tx_i+b\le -1\).两种情况可以统一为下式:\[y_i(w^Tx_i+b)\ge 1\]

  • 边界平面\(w^Tx+b=1\)上任意一点到分类超平面\(w^Tx+b=0\)的距离为:\(d =\frac{1}{||w||}\),margin为其二倍,等于\(\frac{2}{||w||}\).则SVM求解的过程就是求解\(max_w\frac{2}{||w||}\)的过程,该过程等同于\(min_w\frac{1}{2}||w||^2\).

  • 至此,我们将SVM转换为带有条件约束的最优化问题:
    \[\begin{cases}
    min_w\frac{1}{2}||w||^2\\
    y_i(w^Tx_i+b)\ge 1\\
    \end{cases}\]

3.SVM的求解思路

对于上面带有约束条件的凸优化问题,构造如下拉格朗日函数:
\[L(w,b,\alpha)=\frac{1}{2}||w||^2+\sum_{i}\alpha_i(1-y_i(w^Tx_i+b))\]
则原带有约束条件的问题可以等价为\(min_{w,b}max_{\alpha}L(w,b,\alpha)\),将min和max互换顺序,得到原问题的对偶问题,\(max_{\alpha}min_{w,b}L(w,b,\alpha)\),令\(\theta(\alpha) = min_{w,b}L(w,b,\alpha)\),则对偶问题可以表示为\(max_{\alpha}\theta(\alpha)\)

因为SVM原问题为凸优化问题,在slater条件满足是,原问题与对偶问题等价,可以通过求解对偶问题得到原问题的最优解(因为KKT条件为强对偶的必要条件,则此时KKT条件必然也是满足的).

求解\(\theta(\alpha)\),令\(L(w,b,\alpha)\)对\(w,b\)的偏导数为零:
\[\begin{cases}
\frac{\partial L(w,b,\alpha)}{\partial w} = 0\\
\frac{\partial L(w,b,\alpha)}{\partial b} = 0\\
\end{cases}\]
可以得到(本处省略了具体的求导过程):
\[\begin{cases}
w = \sum_{i}\alpha_iy_ix_i\\
\sum_{i}\alpha_iy_i = 0\\
\end{cases}\]
将\(w,b\)带入\(L(w,b,\alpha)\)可得\(\theta(\alpha)\)如下(省略了具体的带入求解过程):
\[\theta(\alpha) = \sum_{i}\alpha_i - \frac{1}{2}\sum_{i,j}\alpha_i\alpha_jy_iy_jx_i^Tx_j\]
对偶问题最终可以如下表示:
\[\begin{cases}
max_\alpha \sum_{i}\alpha_i - \frac{1}{2}\sum_{i,j}\alpha_i\alpha_jy_iy_jx_i^Tx_j\\
\alpha_i \ge 0\\
\sum_{i}\alpha_iy_i = 0\\
\end{cases}\]
\(\alpha_i \ge 0\)是拉格朗日因子本身需要满足的条件,\(\sum_{i}\alpha_iy_i = 0\)是\(L(w,b,\alpha)\)对\(b\)偏导为0的约束.

求解上式(利用SMO算法,比较复杂本处省略),可以得到最优的一组\(\alpha_i^*\).然后利用\(w^* = \sum_{i}\alpha_i^*y_ix_i\)求解得到最优的\(w^*\).假设\(x_+,x_-\),分别为两个边界超平面上的点,则\(w^*x_++b^*=1\),\(w^*x_-+b^* = -1\),两式相加可得:
\[b^* = -\frac{w^*x_++w^*x_-}{2}\]
根据KKT条件,\(\alpha^*_i(y_i(w^*x_i+b)-1)=0\),则若\(\alpha^*_i>0\),则\(y_i(w^*x_i+b)-1=0\),即\(x_i\)在边界分类超平面上.则求解b过程中的\(x_+,x_-\)可以在\(\alpha^*_i>0\)的\(x_i\)中寻找.

4.soft margin的理解

对于线性不可分的样本(有噪声干扰),可以适当放松边界超平面,以得到更好的鲁棒性能.soft margin形式下的SVM定义如下:
\[\begin{cases}
min_{w,b,\xi}\frac{1}{2}||w||^2+C\sum_{i}\xi_i\\
y_i(w^Tx_i+b)\ge 1-\xi_i\\
\xi_i\ge0
\end{cases}\]
其中,C为\(\xi_i\)的惩罚因子,C越大,对\(\xi\)的惩罚越大,\(\xi\)的可能取值越小,soft margin效果越弱,鲁棒性能越差,反之亦然.

5.核技巧的理解

核函数能够带来非线性能力,通过将特征映射到高维空间,使得在低维空间中非线性可分的样本在高位空间中线性可分.
SVM对样本分类的判别方法为:\(w^Tx+b\ge0\),则\(y=1\),否则\(y=0\)
在本文前面分析过程中可到:\(w^* = \sum_{i}\alpha_i^*y_ix_i\),带入判别式可得:\(\sum_{i}\alpha_i^*y_ix_i^Tx+b\ge0\),即\(\sum_{i}\alpha_i^*y_i<x_i,x>+b\ge0\).
将上面特征向量的内积换成核函数的内积,即可以得到核函数下SVM的判别表达式:\(\sum_{i}\alpha_i^*y_i<K(x_i),K(x)>+b\ge0\),实际上,在使用核函数时我们并不需要先将特征映射到高维,再在高维进行内积运算,我们往往直接在低维计算出高位内积的结果,这样并没有因维度增加而显著增加计算量.即上式一般改写为:\(\sum_{i}\alpha_i^*y_iK(x_i,x)+b\ge0\).

SVM的推导和理解的更多相关文章

  1. 线性SVM的推导

    线性SVM算法的一般过程 线性SVM的推导 超平面方程 SVM是用来分类的.给定一系列输入数据(n维向量),需要找到一个切分界线(n-1维的超平面),这里假定数据是线性可分的.比如,二维数据的超平面是 ...

  2. SVM支持向量机推导,工具介绍及python实现

    支持向量机整理 参考: Alexandre KOWALCZYK大神的SVM Tutorial http://blog.csdn.net/alvine008/article/details/909711 ...

  3. [ML从入门到入门] 支持向量机:从SVM的推导过程到SMO的收敛性讨论

    前言 支持向量机(Support Vector Machine,SVM)在70年代由苏联人 Vladimir Vapnik 提出,主要用于处理二分类问题,也就是研究如何区分两类事物. 本文主要介绍支持 ...

  4. SVM 简要推导过程

    SVM 是一块很大的内容,网上有写得非常精彩的博客.这篇博客目的不是详细阐述每一个理论和细节,而在于在不丢失重要推导步骤的条件下从宏观上把握 SVM 的思路. 1. 问题由来 SVM (支持向量机) ...

  5. 支持向量机SVM 简要推导过程

    SVM 是一块很大的内容,网上有写得非常精彩的博客.这篇博客目的不是详细阐述每一个理论和细节,而在于在不丢失重要推导步骤的条件下从宏观上把握 SVM 的思路. 1. 问题由来 SVM (支持向量机) ...

  6. SVM之KKT条件理解

    在SVM中,我们的超平面参数最终只与间隔边界上的向量(样本)有关,故称为支持向量机. 求解最优超平面,即求最大化间隔,或最小化间隔的倒数:||w||2/2,约束条件为yi(wTxi+b)>=1 ...

  7. 关于opengl中的矩阵平移,矩阵旋转,推导过程理解 OpenGL计算机图形学的一些必要矩阵运算知识

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/12166896.html 为什么引入齐次坐标的变换矩阵可以表示平移呢? - Yu Mao的回答 ...

  8. Effective Modern C++ ——条款2 条款3 理解auto型别推导与理解decltype

    条款2.理解auto型别推导 对于auto的型别推导而言,其中大部分情况和模板型别推导是一模一样的.只有一种特例情况. 我们先针对auto和模板型别推导一致的情况进行讨论: //某变量采用auto来声 ...

  9. SVM神经网络的术语理解

    SVM(Support Vector Machine)翻译成中文是支持向量机, 这里的“机(machine,机器)”实际上是一个算法.而支持向量则是指那些在间隔区边缘的训练样本点[1]. 当初看到这个 ...

随机推荐

  1. 问题-CHM文件不显示

    原问题:http://bbs.csdn.net/topics/370230310 问题描述: http://download.csdn.net/download/wybneu/3582721 我从这个 ...

  2. SpringMVC优雅的获取HttpSevletRequest及HttpServletResponse简录

    https://cloud.tencent.com/developer/article/1403947 通常情况下,SpringMVC可以通过入参的方式绑定HttpServletRequest和Htt ...

  3. Redis的部署使用文档

    Redis的部署使用文档   简述: redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符 串).list(链表).set( ...

  4. linux负载均衡杂谈

    假如架构中的主机拥有全量数据集,即使其中一台挂了,也不会导致离线,高可用(负载均衡集群) 假如架构中的各主机只拥有sharing,那我们谓之 分布式集群 硬件ctrix F5-BIG-IP(一台动辄2 ...

  5. Jenkins环境搭建遇到的问题

    参考文章 https://www.cnblogs.com/yuanluo9898/p/10724252.html 问题一:tomcat启动乱码,如图所示 解决方案:https://blog.csdn. ...

  6. 21. ClustrixDB 识别平台限制

    本节描述集群性能上潜在的限制平台因素,如何度量集群是否接近或超过这些限制,以及纠正这些条件的可用选项.“平台因素”指的是硬件资源,如CPU.内存.磁盘和网络I/O子系统.有关潜在的软件相关因素,请参见 ...

  7. 多版本python的pip 升级后, pip2 pip3 与python版本失配

    mint19.2   本来pip 和 pip2 对应 python2.7   pip3对应python3.6 用源码安装了python3.7之后. 这样 版本也没问题. 但是,  用pip3.7 安装 ...

  8. Link Script 学习

    最后更新 2019-06-27 概述 当使用 C 或者 C++ 编写代码实现某种功能时,需要将源代码进行编译以及链接.链接是将一系列目标文件(.o)以及归档文件(.a)组合起来,重新定位各个文件数据并 ...

  9. cursor url 自定义鼠标样式

    cursor可以自定义鼠标,写法是cursor:url(“图片路径”),pointer; url:需使用的自定义光标的 URL.图片类型需要是.cur或.ani和jpg,png等格式的(.cur或.a ...

  10. 本机向window服务器传送数据

    我们需要在远程服务器中安装 FileZilla_Server,在本机安装 FileZilla 客户端 FileZilla 服务器下载地址:https://pan.baidu.com/s/1o7Aen2 ...