Maximal Margin Classifier

Logistic Regression 与 SVM 思路的不同点:logistic regression强调所有点尽可能远离中间的那条分割线,而SVM则强调最靠近分割线的点于分割线的距离仅可能的远。

定义间隔函数:$\hat{r}^{(i)}=y^{(i)}(w^\prime x^{(i)}+b)$。当$y^{(i)}=1$时,$w^\prime x^{(i)}+b>0$;当$y^{(i)}=-1$时,$w^\prime x^{(i)}+b<0$;所以间隔函数总是大于零:$\hat{r}^{(i)}=y^{(i)}(w^\prime x^{(i)}+b)>0$。

注意,同时扩大$w,b$,那么所有点的间隔都会扩大相同倍数,这并不影响问题的求解。

定义样本的间隔函数为样本中间隔最小的那个,即$\hat{r}=\mathop{\min}_{i}\hat{r}^{(i)}$

定义几何间隔:如下图所示,B为A在分隔面$w^\prime x +b = 0$上的投影点,设A到分隔面的距离为$r^{(i)}$。根据几何知识可求得B点的$x$坐标为:

$x=x^{(i)}-r^{(i)}\frac{w}{\|w\|}$,代入$w^\prime x + b=0$得到:

$$r^{(i)}=\frac{w^\prime x^{(i)}+b}{\|w\|}=(\frac{w}{\|w\|})^\prime x^{(i)}+\frac{b}{\|w\|}$$

由于$w^\prime x^{(i)}+b$有可能是负数,故令$r^{(i)}=y^{(i)}((\frac{w}{\|w\|})^\prime x^{(i)}+\frac{b}{\|w\|})>0$为几何距离,将参数$w$归一化后$\|w\|=1$,$r^{(i)}$即为间隔函数。

样本的几何间隔为:$r=\mathop{\min}_{i}r^{(i)}$。故最大间隔分类器可定义为:

\begin{eqnarray} & \mathop{\max}_{r,w,b}\quad r=\frac{\hat{r}}{\|w\|}\nonumber\\&\mathop{s.t.}\quad y^{(i)}(w^\prime x^{(i)} + b)\geq\hat{r},i=1,2,...,N \label{equ:MMClassifierOriginal}\end{eqnarray}

对$w,b$进行缩放,使$\hat{r}=1$,即样本间隔函数为1,离超平面最近的点距离定义为1,上述模型\ref{equ:MMClassifierOriginal}转化为:

\begin{eqnarray}&\mathop{\min}_{w,b}\quad \frac{1}{2}\|w\|^2\nonumber\\&\mathop{s.t.}\quad y^{(i)}(w^\prime x^{(i)}+b)\geq 1,i=1,2,...,N\label{equ:MMClassifier}\end{eqnarray}

其中加上$\frac{1}{2}$是为了计算上的方便。

用Lagrange duality解模型\ref{equ:MMClassifierOriginal}

1) KKT条件

对于最优化模型:

\begin{eqnarray}&\mathop{\min}\quad f(x)\nonumber\\&\mathop{s.t.}\quad h_j(x)=0,j=1,2,...,p\nonumber\\&g_k(x)\leq 0,k=1,2,...,q\label{equ:optimazation}\end{eqnarray}

KKT条件指模型\ref{equ:optimazation}中的最小值点$x^*$必须满足以下的条件:

  1. $h_j(x^*)=0,g_k(x^*)\leq 0$,即$x^*$必须是可行解。
  2. $\nabla f(x^*)+\sum_{j=1}^p\lambda_j \nabla h_j(x^*)+\sum_{k=1}^q\mu_k \nabla g_k(x^*)=0,\lambda_j\neq 0,\mu_k\geq 0,\mu_k g_k(x^*)=0$。

2)拉格朗日乘子求最值

  1. 在无约束的最优化问题中,$x$的变化$dx$可以是任意的,对于$f(x)$的变化$df(x)=f_xdx$,当$f_x$与$dx$的方向夹角小于$\frac{\pi}{2}$时,$f_xdx>0$,则$f(x)$值的增加;当$f_x$与$dx$的方向夹角大于$\frac{\pi}{2}$时,$f_xdx<0$,则$f(x)$的值减小。故当$f_xdx=0$时,找不到一个可移动的方向使得目标函数值增加。
  2. 在有等式约束的最优化问题中,$x$的变化$dx$是有限制的,即$x$只能在约束条件$G(x)=C$下变化。对$G(x)=C$全微分$G_1dx_1+\cdots+G_ndx_n=0$或者$G_x\cdot dx=0$,即在点$x$处$G_x$与$dx$垂直。

由上述分析可知在最优解$x^*$处有$f_xdx=0$,故$G_x$与$f_x$平行,即$f_x=\lambda G_x$。

3) 拉格朗日对偶

对有不等式约束的极值问题:

\begin{eqnarray}&\mathop{\min}_{w} \quad f(w)\nonumber\\&\mathop{s.t.}\quad g_i(w)\leq 0, i=1,2,\cdots,k\nonumber\\&h_i(w)=0,i=1,2,\cdots,l\label{equ:unequationOptimization}\end{eqnarray}

对模型\ref{equ:unequationOptimization}的Lagrange 函数为:

\begin{equation}L(w,\alpha,\beta)=f(w)+\sum_{i=1}^k\alpha_i g_i(w)+\sum_{j=1}^l\beta_jh_j(w)\label{equ:lagrange}\end{equation}

如果直接最小化式子\ref{equ:lagrange}会出现如下问题:当$g_i(x)<0$时,可以通过$\alpha_i$取无穷大使$L( w,\alpha,\beta)$达到无穷小。解决这个问题是引入$\theta_p(w)=\mathop{\max}_{\alpha_i,\beta_j:\alpha_i\geq 0}L(w,\alpha,\beta)$。显然,若$w$满足模型\ref{equ:unequationOptimization}的约束条件,则$\theta_p(w)=f(w)$,否则$\theta_p(w)=\infty$。此时模型\ref{equ:unequationOptimization}可以转化为:

\begin{equation}\mathop{\min}_w\mathop{\max}_{\alpha_i,\beta_j:\alpha_i\geq 0}L(w,\alpha,\beta)\label{equ:minmax}\end{equation}

直接求解式子\ref{equ:minmax}并不容易,故将其转化为对偶问题:

\begin{equation}\mathop{\max}_{\alpha_i,\beta_j:\alpha_i\geq 0}\theta_p(\alpha,\beta)=\mathop{\max}_{\alpha_i,\beta_j:\alpha_i\geq 0}\mathop{\min}_{w}L(w,\alpha,\beta)\label{equ:maxmin}\end{equation}

当最优解$w^*,\alpha^*,\beta^*$满足KKT条件时,原问题与对偶问题的最优值一致,此时称为强对偶。其中KKT条件为:

\begin{align}\frac{\partial}{\partial w_i}L(w^*,\alpha^*,\beta^*) &= 0,i=1,\cdots,n\\\frac{\partial}{\partial \beta_j}L(w^*,\alpha^*,\beta^*) &= 0,j=1,\cdots,l\\ \alpha_i^*g_i(w^*) &= 0,i=1,\cdots,k\label{equ:complementarity}\\g_i(w^*)&\leq 0,i=1,\cdots,k\\\alpha^* &\geq 0\end{align}

其中式子\ref{equ:complementarity}称为KKT双重补足条件(KKT dual complementarity)。KKT的思想是其极值会在可行域的边界上取得,即在将不等式约束为0时取得。

4) 最优分类间隔器

现在我们采用lagrange对偶来解模型\ref{equ:MMClassifier}。从KKT条件可知只有在离超平面最近的点$y^{(i)}(w^\prime x^{(i)}+b)=1$的约束才有可能取得极值。模型\ref{equ:MMClassifier}对应的lagrange函数为:

\begin{equation}L(w,b,\alpha)=\frac{1}{2}\|w\|^2-\sum_{i=1}^N\alpha_i[y^{(i)}(w^\prime x^{(i)}+b)-1]\label{equ:MMlagrange}\end{equation}

则原问题为:

\begin{equation}\mathop{\min}_{w,b}\mathop{\max}_{\alpha}L(w,b,\alpha)\end{equation}

对偶问题为:

\begin{equation}\mathop{\max}_{\alpha}\mathop{\min}_{w,b}L(w,b,\alpha)\end{equation}

固定$\alpha$,求$L(w,b,\alpha)$关于$w,b$的导数:

$$\nabla_wL(w,b,\alpha)=w-\sum_{i=1}^N\alpha_i y^{(i)}x^{(i)}=0$$

$\Longrightarrow$

\begin{equation}w=\sum_{i=1}^N\alpha_i y^{(i)}x^{(i)}\label{equ:solutionw}\end{equation}

\begin{equation}\frac{\partial}{\partial b}L(w,b,\alpha)=\sum_{i=1}^N\alpha_i y^{(i)}=0\label{equ:solutionb}\end{equation}

将式子\ref{equ:solutionw}和式子\ref{equ:solutionb}代回式子\ref{equ:MMlagrange}得:

\begin{align}L(w,b,\alpha) &= \frac{1}{2}\|w\|^2-\sum_{i=1}^N\alpha_i[y^{(i)}(w^\prime x^{(i)}+b)-1]\\ &= \frac{1}{2}w^\prime w-\sum_{i=1}^N\alpha_i y^{(i)}w^\prime x^{(i)}-\sum_{i=1}^N\alpha_i y^{(i)}b + \sum_{i=1}^N\alpha_i \\ &= -\frac{1}{2}w^\prime\sum_{i=1}^N\alpha_i y^{(i)}x^{(i)}-b\sum_{i=1}^N\alpha_iy^{(i)}+\sum_{i=1}^N\alpha_i\\ &= \sum_{i=1}^N\alpha_i-\frac{1}{2}\sum_{i=1}^N\alpha_iy^{(i)}(x^{(i)})^\prime\sum_{i=1}^N\alpha_iy^{(i)}x^{(i)}\\ &= \sum_{i=1}^N\alpha_i-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy^{(i)}y^{(j)}[x^{(i)}]^\prime x^{(j)}\end{align}

故模型\ref{equ:MMClassifier}可转化为如下的二次规划问题:

\begin{align*} \mathop{\max}_{\alpha}\quad &\sum_{i=1}^N\alpha_i-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^Ny^{(i)}y^{(j)}\alpha_i\alpha_j[x^{(i)}]^\prime x^{(j)}\\\mathop{s.t.}\quad &\alpha_i \geq 0,i=1,2,\cdots,N\\ &\sum_{i=1}^N \alpha_i y^{(i)}=0\end{align*}

这是一个二次规划问题,我们可以使用工具来解决。但最简单的还是用梯度投影法来解(Lecture 3会介绍这种方法)。采用梯度投影法解出$\alpha$后,根据$w=\sum_{i=1}^N\alpha_iy_ix_i$即可计算出$w$。至于$b$可使用KKT条件来求解。由KKT条件$\alpha_ig(x_i)=0$ $\Longrightarrow$ 当$\alpha_i>0$
时$g(x_i)=0$ $\Longrightarrow$ $1-y_i(w^\prime x_i+b)=0$ $\Longrightarrow$ $b=y_i-w^\prime x_i$。事实上,对任意的$\alpha_i>0$都应该有上述等式关系,当在实际应用中,我们通常取所有$\alpha_i>0$的平均值。

与$\alpha_i>0$对应的$x_i$称为support vector,因为就是这些support vector 决定了超平面的参数。这也是为什么这个分类器叫做support vector machine(SVM)。到目前为止,我们仅讨论线性可分的情况,对于线性不可分的数据,我们可以采用kernel的方法。

Kernel Trick

思想:在分类问题中低维空间线性不可分的数据通过非线性映射到高维特征空间则有可能实现线性可分,但是如果直接在高维空间中对数据进行分类,则存在1)确定这个非线性映射函数的形式和参数;2)确定特征空间维数等问题。而最大的障碍则是在高维空间运算时存在“维数灾难”。于是引入核函数。引入核函数可以使我们不需要事先知道中间的映射过程,而只需要对原数据进行点乘。

如图一所示,在二维空间下该数据并不是线性可分的,但如果我们采用如下的映射$\Phi$,将二维数据映射到三维空间,则数据变的线性可分。 其中$\Phi: \mathbb{R}^2\rightarrow\mathbb{R}^3, \Phi(x_1,x_2)=(z_1,z_2,z_3)=(x_1^2,\sqrt{2}x_1x_2,x_2^2)$。这样我们就可以在三维空间上得到一个线性函数$w_1z_1+w_2z_2+w_3z_3+b=0$,即对应原空间的非线性函数$w_1x_1^2+w_2\sqrt{2}x_1x_2+w_3x_2^2+b=0$。

仔细观察上述的二次规划问题,要求计算出数据点之间的内积,故定义如下Gram Matrix K:

\begin{equation}K=\left[\begin{array}&x_1^\prime x_1&x_1^\prime x_2&\cdots&x_1^\prime x_N \\ x_2^\prime x_1 & x_2^\prime x_2&\cdots&x_2^\prime x_N\\\vdots&\vdots&\cdots&\vdots\\x_N^\prime x_1&x_N^\prime x_2&\cdots&x_N^\prime x_N\end{array}\right]=\mathbf{X}\mathbf{X}^\prime\end{equation}

其中$\mathbf{X}=\left[\begin{array}&x_1^\prime\\x_2^\prime\\\cdots\\x_N^\prime\end{array}\right]$称为design matrix。如果我们引入映射$\Phi$,则Gram matrix变为:

\begin{equation}K=\left[\begin{array}&\Phi(x_1)^\prime\Phi(x_1)^\prime&\Phi(x_1)^\prime\Phi(x_2)&\cdots&\Phi(x_1)^\prime\Phi(x_N)\\ \Phi(x_2)^\prime\Phi(x_1)&\Phi(x_2)^\prime\Phi(x_2)&\cdots&\Phi(x_2)^\prime\Phi(x_N)\\\vdots&\vdots&\cdots&\vdots\\\Phi(x_N)^\prime\Phi(x_1)&\Phi(x_N)^\prime\Phi(x_2)&\cdots&\Phi(x_N)^\prime\Phi(x_N) \end{array}\right]\end{equation}

另外我们可以将上述映射后的三维空间的内积用原空间中数据的内积来表示,设$r,s\in\mathbb{R}^3$为数据$a,b$映射后的函数,则:

\begin{align*}\langle r,s\rangle &= r_1s_1+r_2s_2+r_3s_3\\ &= a_1^2b_1^2+2a_1a_2b_1b_2+a_2^2b_2^2\\ &= \langle a,b\rangle^2\end{align*}

所以对于内积$\langle r,s\rangle$的计算,我们不必通过映射$\Phi$,而只需要原数据空间中的映射即可计算出来,即映射后的空间数据的内积是原空间数据内积的函数,而这个函数称为kernel函数。而上述带有$\Phi$的Gram matrix K称为kernel matrix。 下面我们介绍一个定理,这个定理描述了满足一定条件的kernel函数就一定可以写成某个映射的的内积。

Mercer's Theorem:一个对称函数$K(x,y)$能够表示成某个映射$\Phi$的内积$K(x,y)=\langle\Phi(x),\Phi(y)\rangle$当且仅当函数$K(x,y)$为半正定,即对$\forall g,\int K(x,y)g(x)g(y)dxdy\geq 0$,或者矩阵$\left[\begin{array}&K(x_1,x_1)&K(x_1,x_2)&\cdots&K(x_1,x_N)\\K(x_2,x_1)&K(x_2,x_2)&\cdots&K(x_2,x_N)\\\vdots&\vdots&\cdots&\vdots\\K(x_N,x_1)&K(x_N,x_2)&\cdots&K(x_N.x_N)\end{array}\right]$是半正定的。

因此我们可以使用kernel函数来代替二次规划中的内积,从而可以在不必知道映射$\Phi$下对原数据进行非线性映射。

Jordan Lecture Note-2: Maximal Margin Classifier的更多相关文章

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

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

  2. Jordan Lecture Note-1: Introduction

    Jordan Lecture Note-1: Introduction 第一部分要整理的是Jordan的讲义,这份讲义是我刚进实验室时我们老师给我的第一个任务,要求我把讲义上的知识扩充出去,然后每周都 ...

  3. Jordan Lecture Note-3: 梯度投影法

    Jordan Lecture Note-3:梯度投影法 在这一节,我们介绍如何用梯度投影法来解如下的优化问题: \begin{align} \mathop{\min}&\quad f(x)\n ...

  4. Colorful Lecture Note(手工栈)

    题目1 : Colorful Lecture Note 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Little Hi is writing an algorithm ...

  5. HihoCoder - 1103 Colorful Lecture Note

    Little Hi is writing an algorithm lecture note for Little Ho. To make the note more comprehensible, ...

  6. Colorful Lecture Note

    Colorful Lecture Note 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Little Hi is writing an algorithm lectu ...

  7. 支持向量机: Maximum Margin Classifier

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

  8. hihocoder #1103 : Colorful Lecture Note微软苏州校招笔试 1月10日(字符串处理+栈)

    #1103 : Colorful Lecture Note 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Little Hi is writing an algorit ...

  9. Jordan Lecture Note-7: Soft Margin SVM

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

随机推荐

  1. Linux kernel Makefile for ctags

    /********************************************************************** * Linux kernel Makefile for ...

  2. jquery页面无刷新切换皮肤并保存

    效果体验:http://runjs.cn/detail/hijgcghe <!DOCTYPE html> <html> <head> <meta http-e ...

  3. Java这点事

    1--代码片段:  1 2 3 4 5 byte b1=1,b2=2,b3,b6;  final byte b4=4,b5=6;  b6=b4+b5;  b3=(b1+b2);  System.out ...

  4. linux下socket keep alive讲解

    [需求] 不影响服务器处理的前提下,检测客户端程序是否被强制终了.[现状]服务器端和客户端的Socket都设定了keepalive属性.服务器端设定了探测次数等参数,客户端.服务器只是打开了keepa ...

  5. Java序列化 如何把多个对象存储在一个文件中

    /** * 用于保存模板文件,内容包括: * 1,标志位,1 int * 2,版本   1 int * 3,数据头长度 1 int * 4,预留数据头空间  5120 byte * 5,后续数据长度  ...

  6. 与非CCR代码互操作

    导读:CCR可以轻松的承载STA组件或者与它互操作:组件应该创建一个只有一个线程的CCR Dispatcher实例,并且在Dispatcher的构造函数中指定线程套间策略.DispatcherQueu ...

  7. lightoj 1020 (博弈)

    思路:很简单的博弈,找出每个人先拿的必胜态进行状态转移即可. #include<cstdio> #include<string> #include<cstring> ...

  8. 【ruby on rail 项目之 VPS下载机】

    [idea] 感觉互联网上国内难以下载资源的资源,通过VPS下载后再拖回来,想做个集成功能的.这里定个计划.打算开始做,项目会在github上同步更新. [start]

  9. Zabbix探索:纠结的选择

    Zabbix拥有两种分布式部署的架构,分别是: Master-Node-Client: Master-Proxy-Client: 两者的区别什么的官方有介绍,但是太过于笼统,对细节介绍的太少,幸亏之前 ...

  10. 使用 cloc 统计代码行数

    可能大家都知道用 `wc -l` 命令进行代码行数统计,但是它会将代码中的注释.空行所占用的文本行都统计在内.如果想查看一个 tar 包或一个项目目录中“实际”的代码行数并且不愿意自己去写一个脚本来做 ...