1. 了解SVM

1. Logistic regression回顾

Logistic regression目的是从特征中学习出一个0/1二分类模型,而这个模型是将特性的线性组合作为自变量,由于自变量的取值范围是负无穷到正无穷。因此,使用logistic function(或称作sigmoid function)将自变量映射到(0,1)上,映射后的值被认为是属于y=1的概率。

假设函数

 其中$x$是$n$维特征向量,函数$g$就是logistic function。
    而的图像是
 

可以看到,将输出从无穷映射到了(0,1)。

而假设函数就是特征属于y=1的概率。

 
 
 

从而,当我们要判别一个新来的特征属于哪个类时,只需求 $h_θ(x)$ 即可,若$h_θ(x)$大于0.5就是y=1的类,反之属于y=0类。

此外,$h_θ(x)$ 只和$θ^Tx$有关,$θ^Tx > 0$,那么$h_θ(x) > 0.5$,而$g(z)$只是用来映射,真实的类别决定权还是在于$θ^Tx$。

再者,当$θ^Tx \gg 0$时,$h_θ(x)=1$,反之$h_θ(x)=0$。如果我们只从$θ^Tx$出发,希望模型达到的目标就是让训练数据中y=1的特征$θ^Tx \gg 0$,而是y=0的特征$θ^Tx \ll 0$。Logistic回归就是要学习得到$θ$,使得正例的特征远大于0,负例的特征远小于0,而且要在全部训练实例上达到这个目标。

接下来,尝试把logistic regression做个变形。首先,将使用的结果标签$y = 0$和$y = 1$替换为$y = -1,y = 1$,然后将 $θ^Tx=θ_0+θ_1x_1+...+θ_nx_n,(x_0=1)$ 中的 $θ_0$替换为$b$,最后将后面的$θ_1x_1+θ_2x_2+...+θ_nx_n$替换$W^Tx$。如此,则有了$θ^Tx=W^Tx+b$。

也就是说除了y由y=0变为y=-1外,线性分类函数跟logistic regression 的形式化表示$h_θ(x)=g(θ^Tx)=g(W^Tx+b)$没区别。

2. 间隔与支持向量

给定训练样本集$D={(x_1,y_1), (x_2, y_2),...,(x_m, y_m)}$, $y_i\in{-1, +1}$, 分类学习最基本的想法就是基于训练集$D$在样本空间中找到一个划分超平面,将不同类别的样本分开,但能将训练样本分开的划分超平面可能有很多,如下图:

直观上来看,应该去找位于两类训练样本“正中间”的划分超平面,即上图中最粗的那条,因为该划分超平面对训练样本局部扰动的“容忍”性最好。例如,由于训练集的局限性或噪声的因素,训练集外的样本可能比上图中训练样本更接近两个类的分个界,这将使许多划分超平面出现错误,而中间最粗的超平面受影响最小。换言之,这个划分超平面所产生的分类结果是最鲁棒的,对未见示例的范化能力最强。

在样本空间中,划分超平面可通过如下线性方程来描述:

$W^Tx+b = 0$

其中$W=(w_1;w_2;...;w_K)$为超平面法向量,决定了超平面的方向;$b$为位移项,决定了超平面与原点之间的距离。在超平面确定的情况下,$\lvert{W^Tx+b}\rvert$能够表示点$x$距离超平面的远近,而通过观察 $W^Tx+b$的符号与类标记$y$的符号是否一致可判断分类是否正确。于是引出了“函数间隔”的概念:

$\hat{\gamma} = \lvert{W^Tx+b}\rvert = y*(W^Tx+b)$

但这样定义间隔有问题,即如果我们成比例改变$(W,b)$,函数间隔值也会改变,所以加上约束条件引入真正的间隔--“几何间隔”

给定一个超平面 $W^Tx+b=0$, 样本空间中任意点$x$到超平面$(W,b)$的距离(几何间隔)为:

$\gamma=\frac{\hat{\gamma}}{\lVert{W}\rVert}=\frac{\lvert{W^Tx+b}\rvert}{\lVert{W}\rVert}=\frac{y*(W^Tx+b)}{\lVert{W}\rVert}$

而超平面(w,b)关于D中所有样本点(xi,yi)的函数间隔最小值(其中,x是特征,y是结果标签,i表示第i个样本),便为超平面(w, b)关于训练数据集D的几何间隔:

$\gamma= \min \gamma_i$

假设超平面$(W,b)$能将训练样本正确分类,即对于$(x_i, y_i)\in{D}$, 若 $y_i= +1$ 则有 $W^Tx_i+b>0$;若 $y_i= -1$ 则有 $W^Tx_i+b<0$. 我们令:

$W^Tx_i+b \ge +1, y_i = +1;$
$W^Tx_i+b \le -1, y_i = -1.$

这里也就是令这个超平面关于训练集的函数间隔为

如下图所示,距离超平面最近的这几个训练样本使得上式的等号成立,他们被称为“支持向量”,两个异类支持向量到超平面的距离之和为

$\gamma = \frac{2}{\lVert{W}\rVert}$

它被称为“间隔”。

而对于一个数据集进行分类,当超平面离数据集的“间隔”越大,分类确信度也越大。所有,为例获得分类的确信度尽量高,需要让所选择的超平面能够最大化这个“间隔”值,即

$\max \limits_{W,b}\frac{2}{\lVert{W}\rVert}$

s.t. $y_i(W^Tx_i+b) \ge 1, i=1,2,...m.$

显然,为了最大化间隔,仅需最大化 ${\lVert{W}\rVert}^{-1}$. 这等价于最小化 ${\lVert{W}\rVert}^{2}$, 于是,上式可重写为:

 

$\min \limits_{W,b}\frac{1}{2}{\lVert{W}\rVert}^{2}$

s.t. $y_i(W^Tx_i+b) \ge 1, i=1,2,...m.$

这里的意思就是找到合适的$W$和$b$,使得每个样本都能正确分类且每个样本到这个超平面的“函数间隔”都大于1的前提下,能最小化${\lVert{W}\rVert}^{2}$。到这里为止,这就是支持向量机(Support Vector Machine)的基本型。

2. 对偶问题

我们希望求解 1 式来得到最大间隔划分超平面所对应的模型:

  $f(x) = W^Tx + b$

对 1 式使用拉格朗日乘子法可得到其“对偶问题”,具体来说,对 1 式的每个约束添加拉格朗日乘子 $\alpha_i \ge 0$,则该问题的拉格朗日函数可写成:

  $L(W,b,\alpha) = \frac{1}{2}{\lVert{W}\rVert}^{2} + \sum_{i=1}^{m}\alpha_i(1-y_i(W^Tx_i + b))$ 3

其中$\alpha=(\alpha_1;\alpha_2;...;\alpha_m)$。令$L(W,b,\alpha)$对$W$和$b$的偏导为零可得:

  $W$=\sum_{i=1}^{m}\alpha_iy_ix_i \  ,$
  $0=\sum_{i=1}^{m}\alpha_iy_i \ .$

带入公式 2 ,得到公式 1 的对偶问题:

 

$\max \limits_{\alpha}\sum_{i=1}^{m}\alpha_i - \frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i\alpha_jy_iy_jx_i^Tx_j$

s.t. $\sum_{i=1}^{m}\alpha_iy_i =0, \alpha_i \ge 0, i=1,2,...m.$

解出$\alpha$后,求出$W$和$b$即可得到模型:

$f(x)=W^Tx+b$

$=\sum_{i=1}^{m}\alpha_iy_ix_i^Tx+b$

7

如何确定偏移项$b$呢,注意到对任意支持向量$(x_s,y_s)都有$y_sf(x_s)=1$,即:

  $y_s(\sum_{i\in S}\alpha_iy_ix_i^Tx+b)=1$ 8

其中$S=\{i|\alpha > 0, i=1,2,...,m\}$为所以支持向量的下标集。实际中使用所有支持向量求解的平均值求$b$:

  $b = \frac{1}{\lvert{S}\rvert}\sum_{s\in S}(y_s-\sum_{i\in S}\alpha_iy_ix_i^Tx)$ 9

2. 核函数

前面的讨论中,我们假设训练样本是线性可分的,即存在一个划分超平面能将训练样本正确分类。 然而在实际任务中,原始样本空间也许并不存在一个能正确划分两类样本的超平面。

对这样的问题,我们可以将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内变得线性可分。幸运的是,如果原始空间是有限维,即特征数有限,那么一定存在一个高维特征空间使得样本可分。

令$Φ(x)$表示将$x$映射后的特征向量,于是,在特征空间中划分超平面所对应的模型可表示为:

  $f(x) = W^T\phi(x)+b$ 10

设想存在这样一个函数:

  $k(x_i,x_j)\ =\ <\phi(x_i),\phi(x_j)> \ =\ \phi(x_i)^T\phi(x_j)$ 11

求解后得到:

 

$f(x) = W^T\phi(x)+b$
$=\sum_{i=1}^{m}\alpha_iy_i\phi(x_i)^T\phi(x)+b$
$=\sum_{i=1}^{m}\alpha_iy_ik(x,x_i)+b$

12

这里的$k(\bullet,\bullet)$就是“核函数”。

常见的核函数有:

高斯核又称为RBF径向基核。

参考:

周志华 机器学习

http://blog.csdn.net/v_july_v/article/details/7624837

5. support vector machine的更多相关文章

  1. 6. support vector machine

    1. 了解SVM 1. Logistic regression 与SVM超平面 给定一些数据点,它们分别属于两个不同的类,现在要找到一个线性分类器把这些数据分成两类.如果用x表示数据点,用y表示类别( ...

  2. 使用Support Vector Machine

    使用svm(Support Vector Machine)中要获得好的分类器,最重要的是要选对kernel. 常见的svm kernel包括linear kernel, Gaussian kernel ...

  3. Support Vector Machine (3) : 再谈泛化误差(Generalization Error)

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

  4. Support Vector Machine (2) : Sequential Minimal Optimization

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

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

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

  6. 支持向量机 support vector machine

    SVM(support Vector machine) (1) SVM(Support Vector Machine)是从瓦普尼克(Vapnik)的统计学习理论发展而来的,主要针对小样本数据进行学习. ...

  7. A glimpse of Support Vector Machine

    支持向量机(support vector machine, 以下简称svm)是机器学习里的重要方法,特别适用于中小型样本.非线性.高维的分类和回归问题.本篇希望在正篇提供一个svm的简明阐述,附录则提 ...

  8. 支持向量机SVM(Support Vector Machine)

    支持向量机(Support Vector Machine)是一种监督式的机器学习方法(supervised machine learning),一般用于二类问题(binary classificati ...

  9. 机器学习技法:01 Linear Support Vector Machine

    Roadmap Course Introduction Large-Margin Separating Hyperplane Standard Large-Margin Problem Support ...

  10. 支持向量机(Support Vector Machine,SVM)—— 线性SVM

      支持向量机(Support Vector Machine,简称 SVM)于 1995 年正式发表,由于其在文本分类任务中的卓越性能,很快就成为机器学习的主流技术.尽管现在 Deep Learnin ...

随机推荐

  1. 8.14 右键自定义菜单 更加iframe 内容高度调整 iframe高度 js定时

    <div class="main_contain" id="z_div" style="position: relative;"> ...

  2. part1:3-VMware及redhat enterprise Linux 6 的安装

    创建虚拟机PC FILE->NEW Virtual machine->custom(自定义,定制)->...->I WILL INSTALL THE OS LATER-> ...

  3. hadoop学习笔记(四):hdfs常用命令

    一.hadoop fs 1.创建目录 [root@master hadoop-]# hadoop fs -mkdir /testdir1 [root@master hadoop-]# hadoop f ...

  4. HDU 2561 第二小整数 (排序)

    题意:中文题. 析:输入后,排一下序就好. 代码如下: #include <iostream> #include <cstdio> #include <algorithm ...

  5. python编码(四)

    一.预备知识 字符集 1, 常用字符集分类 ASCII及其扩展字符集作用:表语英语及西欧语言.位数:ASCII是用7位表示的,能表示128个字符:其扩展使用8位表示,表示256个字符.范围:ASCII ...

  6. Spring 、 CXF 整合 swagger 【试炼】

    官网:http://swagger.io/ http://swagger.io/specification/ 上面就是描述了什么是 SWAGGER OBJECT 2. 如何用jax-rs 注解方式产生 ...

  7. Ubuntu 14.04 LTC 有线网络--网线不识别,灯不亮问题

    sudo ethtool -s eth0 autoneg off speed 100 duplex full

  8. struts2从浅至深(五)上传与下载

    1.编写上传页面 2.编写动作方法 import java.io.File;import java.io.IOException; import javax.servlet.ServletContex ...

  9. 团队项目第六周——Alpha阶段项目复审

    排名 队名 项目名 优点 缺点 1 大猪蹄子队 四六级背单词游戏 功能开发出来了,界面简洁美观. 功能的确开发出来了,但是还未完成整个程序.不过考虑到开发时长问题,可以理解.页面还是比较简洁,但是测试 ...

  10. 开源的前端web框架推荐

    B-JUI前端框架:http://demo.b-jui.com/ gentelella :https://colorlib.com/polygon/gentelella/ admui(收费):http ...