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. 2018.10.19 NOIP模拟 比特战争(kruskal)

    传送门 考完发现是sbsbsb题啊. 直接考虑优化状压的转移. 可以证明最优解一定在求最小生成树的时候取得. 因此再最小生成树时维护一下连通块的最值统计答案就行了. 代码

  2. 23. Man and His Natural Habitat 人类及其自然栖息地

    . Man and His Natural Habitat 人类及其自然栖息地 ① Ecology is that branch of science which concerns itself wi ...

  3. 使用bat批处理文件备份mysql数据库

    @echo offset date_string=%date:~0,4%_%date:~5,2%_%date:~8,2%  //日期set time_string=%time:~0,2%_%time: ...

  4. ExtJS+SpringMVC文件上传与下载

    说到文件上传.下载功能,网络上大多介绍的是采用JSP.SpringMVC或者Struts等开源框架的功能,通过配置达到文件上传.下载的目地.可是最近项目要用到文件上传与下载的功能,因为本项目框架采用开 ...

  5. 17)maven-surefire-plugin

    http://maven.apache.org/surefire/maven-surefire-plugin/ Goals Overview The Surefire Plugin has only ...

  6. 从LSM-Tree、COLA-Tree谈到StackOverflow、OSQA

    转自: http://blog.csdn.net/v_july_v/article/details/7526689 从LSM-Tree.COLA-Tree谈到StackOverflow.OSQA 作者 ...

  7. hdu2571 命运 2016-09-11 16:54 53人阅读 评论(0) 收藏

    命运 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  8. Fig 7.2.4 & Fig 7.3.2

    Fig 7.2.4 \documentclass[varwidth=true, border=2pt]{standalone} \usepackage{tkz-euclide} \begin{docu ...

  9. sqlserver 实现数据变动触发信息

    1.建立存储过程,功能是动态写入文件中信息,可以在触发器或存储过程调用. SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO create proc [d ...

  10. mssql内存表

    自MSSQL2014开始引入内存表. 怎样创建内存表: USE testGO ALTER DATABASE testADD FILEGROUP fg_test CONTAINS MEMORY_OPTI ...