考虑一个分类问题,用\(1\)表示正类标签,用\(-1\)表示负类标签,引入假设函数\(h\):
\[
\begin{align*}
g(z) &= \begin{cases}
1 & \text{if}\ z \ge 0\\
-1 & \text{otherwise}\\
\end{cases}\\
h_{w,b}(x) &= g(w^Tx + b)
\end{align*}
\]
其中\(w \in \mathbb{R}^{n}, b \in \mathbb{R}\)是模型参数,\((w,b)\)与此前的\(\theta\)并没有本质区别,\(b\)相当于\(\theta_0\),\(w\)相当于\([\theta_{1}, \theta_{2},\dots,\theta_{n}]^T\),\(w\)和\(b\)构成\(n+1\)维的系数向量。给定\(w\)和\(b\),我们得到一个分类面:
\[
w^Tx+b=0
\]

最优间隔分类器

函数间隔与几何间隔

考虑一个样本\((x^{(i)}, y^{(i)})\),我们可以定义该样本在给定模型\((w,b)\)下的函数间距(functional margin):
\[
\hat\gamma^{(i)} = y^{(i)}(w^{T}x^{(i)}+b)
\]
定义整个样本集合的函数间距:
\[
\hat\gamma = \min_{i} \hat\gamma^{(i)}
\]
定义函数间距基于这样一种直觉:当\(y^{(i)} = 1\)时,\(w^{T}x^{(i)} + b\)越大,分类越准确;当\(y^{(i)} = -1\)时,\(w^{T}x^{(i)} + b\)越小,分类越准确。所以我们可以认为,\(\hat\gamma\)越大,分类结果越准确。

但是通过观察,我们发现,令\(w\)和\(b\)增大同样的倍数,分类面不会改变,但样本的函数间距会增大同样的倍数,所以引入几何间距(geometric margin),几何间距表示样本点到分类面的距离,这个距离带符号,分类正确时,距离为正,分类错误时,距离为负,通过计算可以得到样本\((x^{(i)},y^{(i)})\)到分类面的距离:
\[
\gamma^{(i)} = y^{(i)}\left(\left(\frac{w}{\|w\|}\right)^Tx + \frac{b}{\|w\|}\right)
\]
同样的,可以定义整个样本集合的几何间距:
\[
\gamma = \min_{i} \gamma^{(i)}
\]

最优间隔分类器

给定样本集合\((x^{(i)}, y^{(i)})_{i=1}^{m}\),如何选择\(w\)和\(b\)?

先考虑样本集合线性可分的情况,也就是存在一组\((w,b)\)使得集合的几何间距为正。

我们希望所有样本到分类面的距离的最小值最大,也就是样本集合的几何间距\(\gamma\)最大,我们称这样得到的分类器为最优间隔分类器,给出优化问题:
\[
\begin{align*}
\max_{w, b, \gamma}\quad&\gamma\\
s.t.\quad& y^{(i)}\left(\left(\frac{w}{\|w\|}\right)^Tx^{(i)} + \frac{b}{\|w\|}\right) \ge \gamma,\ i=1, \dots, m
\end{align*}
\]
在约束条件的两端同时乘以\(\|w\|\),用\(\hat \gamma\)表示\(\|w\| \cdot \gamma\),得到另一个等价的问题:
\[
\begin{align*}
\max_{w, b, \hat\gamma}\quad&\frac{\hat\gamma}{\|w\|}\\
s.t.\quad& y^{(i)}\left(w^Tx^{(i)} + b\right) \ge \hat\gamma,\ i=1, \dots, m
\end{align*}
\]
这个问题仍然难以解决,因为目标函数是非凸的。通过观察,我们发现\(\hat\gamma\)实际上是样本集合的函数间距,通过缩放\(w\)和\(b\)来改变\(\hat\gamma\)并不会产生什么实质影响,所以我们可以令\(\hat\gamma=1\),从而得到等价的优化问题:
\[
\begin{align*}
\min_{w, b}\quad&\frac{1}{2}w^Tw\\
s.t.\quad& y^{(i)}\left(w^Tx^{(i)} + b\right) \ge 1,\ i=1, \dots, m
\end{align*}
\]
这个优化问题的约束条件是线性的,目标函数是凸函数,已经很容易解决了。目前我们得到的是一个线性分类器,而接下来我们引入拉格朗日对偶,可以将结果推广到非线性的情况。

拉格朗日对偶

考虑一个优化问题:
\[
\begin{align*} \tag{1}
\min_{w}\quad &f(w)\\
s.t.\quad &g_i(w) \le 0, \ i = 1, \dots,k\\
&h_i(w) = 0, \ i = 1, \dots, l
\end{align*}
\]
定义拉格朗日函数
\[
L(w,\alpha,\beta) = f(w) + \sum_{i=1}^{k}\alpha_ig_i(w) + \sum_{i=1}^{l}\beta_ih_i(w)
\]
考虑函数:
\[
\theta_{P}(w) = \max_{\alpha,\beta,\alpha_i \ge 0} L(w,\alpha,\beta)
\]
\(\theta_{P}\)是关于\(w\)的函数,不难得到:
\[
\theta_{P}(w)= \begin{cases}
f(w) &w\text{满足问题1的约束时}\\
\infty &w\text{不满足问题1的约束时}
\end{cases}
\]
考虑以下的优化问题:
\[
\min_{w} \theta_{P}(w) = \min_{w}\max_{\alpha,\beta,\alpha_i \ge 0} L(w,\alpha,\beta)\tag{2}
\]
这一问题的答案显然就是原问题的答案

现在考虑另一个函数
\[
\theta_{D}(\alpha,\beta) = \min_{w}L(w,\alpha,\beta)
\]
以及优化问题:
\[
\max_{\alpha,\beta,\alpha_i \ge 0} \theta_{D}(\alpha,\beta) =
\max_{\alpha,\beta,\alpha_i \ge 0} \min_{w} L(w,\alpha,\beta) \tag{3}
\]
问题2和问题3的唯一区别就是\(\min\)和\(\max\)的顺序不同,我们称问题2为原问题(primal problem),称问题3为对偶问题(dual problem),有一个结论是:
\[
p^{*} =
\min_{w}\max_{\alpha,\beta,\alpha_i \ge 0} L(w,\alpha,\beta)
\le
\max_{\alpha,\beta,\alpha_i \ge 0} \min_{w} L(w,\alpha,\beta)
= d^{*}
\]
假设\(f\)和\(g_i\)是凸的,\(h_i\)是仿射函数(即\(h_i(w) = a_i^Tw + b_i\)),\(g_i\)是严格可行的(即存在\(w\),对所有的\(1 \le i \le k\),有\(g_i(w) \le 0\)),则存在\(w^{*}, \alpha^{*}, \beta^{*}\),\(w^{*}\)是原问题的解,\(\alpha^{*}, \beta^{*}\)是对偶问题的解,满足\(p^{*} = d^{*} = L(w^{*}, \alpha^{*}, \beta^{*})\),且\(w^{*}, \alpha^{*}, \beta^{*}\)满足KKT(Karush-Kuhn-Tucker conditions)条件:
\[
\begin{align*}
\frac{\partial}{\partial w_i}L(w^{*}, \alpha^{*}, \beta^{*}) &= 0,\quad i=1,\dots,n\tag{4}\\
\frac{\partial}{\partial \beta_i}L(w^{*}, \alpha^{*}, \beta^{*}) &= 0,\quad i=1,\dots,l\tag{5}\\
\alpha_{i}^{*}g_{i}(w^{*}) &= 0,\quad i=1,\dots,k\tag{6}\\
g_{i}(w^{*}) &\le 0,\quad i=1,\dots,k\tag{7}\\
\alpha_i^* &\ge 0,\quad i=1,\dots,k\tag{8}\\
\end{align*}
\]
式6表明,若\(g_{i}(w^*) < 0\),则\(\alpha_i^* = 0\),通常情况下,我们有\(\alpha_i^* = 0 \Leftrightarrow g_{i}(w^*) \neq 0\),这一条件也被称为KKT互补条件,在最优间隔分类器中,我们把满足$ g_{i}(w^*) = 0\(的向量\)x^{(i)}$成为支持向量

最优间隔分类器中的对偶问题

我们的优化问题是:
\[
\begin{align*}
\min_{w, b}\quad&\frac{1}{2}w^Tw\\
s.t.\quad& y^{(i)}\left(w^Tx^{(i)} + b\right) \ge 1,\ i=1, \dots, m
\end{align*}
\]
问题中只有不等式约束,即:
\[
g_i(w,b) = 1 - y^{(i)}\left(w^Tx^{(i)} + b\right) \le 0,\ i = 1,\dots,m
\]
拉格朗日函数为:
\[
L(w,b,\alpha) = \frac{1}{2}w^Tw - \sum_{i=1}^{m}\alpha_i\left(y^{(i)}\left(w^Tx^{(i)} + b\right) - 1\right)
\]
由于:
\[
\theta_{D}(\alpha) = \min_{w,b}L(w,b,\alpha)
\]
我们要令\(L(w,b,\alpha)\)相对于\(w\)和\(b\)取最小值,就需要令:
\[
\begin{align*}
\nabla_{w}L(w,b,\alpha) &= w - \sum_{i=1}^{m}\alpha_iy^{(i)}x^{(i)}\overset{\text{set}}{=}0 \Rightarrow w = \sum_{i=1}^{m}\alpha_iy^{(i)}x^{(i)}\\
\nabla_{b}L(w,b,\alpha) &= -\sum_{i=1}^{m}\alpha_iy^{(i)}\overset{\text{set}}{=}0
\end{align*}
\]
所以拉格朗日函数可以重写为:
\[
L(w,b,\alpha) =
-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i\alpha_jy^{(i)}y^{(j)}\left<x^{(i)},x^{(j)}\right>
+ \sum_{i=1}^{m}\alpha_i
= W(\alpha)
\]
式中的\(\left<x^{(i)},x^{(j)}\right>\)表示\(x^{(i)}\)和\(x^{(j)}\)的内积

对偶问题就是:
\[
\begin{align*}
\max_{\alpha}\quad&W(\alpha) = -\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i\alpha_jy^{(i)}y^{(j)}\left<x^{(i)},x^{(j)}\right>
+ \sum_{i=1}^{m}\alpha_i\\
s.t.\quad& \alpha_i \ge 0,\ i = 1,\dots,m\\
& \sum_{i}^{m} \alpha_i y^{(i)} = 0\\
\end{align*}
\]
我们现在可以通过求解对偶问题来解决原问题,这个对偶问题是凸问题,更重要的是,算法中仅包含\(\left<x^{(i)},x^{(j)}\right>\),这对我们接下来引入核函数很重要。

假设我们得到了对偶问题的最优解\(\alpha^*\),就能得到\(w^*\)和\(b^*\):
\[
\begin{align*}
w^* &= \sum_{i=1}^{m}\alpha_iy^{(i)}x^{(i)}\\
b^* &= \frac{\min_{i:y^{(i)}=1}w^{*T}x^{(i)} + \max_{i:y^{(i)}=-1}w^{*T}x^{(i)}}{2}
\end{align*}
\]

对于一个新的测试数据\(x\),预测结果是:
\[
\begin{align*}
h_{w,b}(x) &= g(w^{T}x + b) \\
&= g(\sum_{i=1}^{m}\alpha_iy^{(i)}\left<x^{(i)},x\right>+b)
\end{align*}
\]
预测的过程同样只用到了向量内积,此外,由KKT互补条件可知,只有支持向量对应的\(\alpha_i\)非零,所以实际上只需要求\(x\)与支持向量的内积即可。

之前我们假设样本是线性可分的,但是有时候并非如此,我们可能需要将原始的特征映射到另一个特征空间才能使数据变得线性可分,通常用\(\phi\)表示特征映射,我们处理的特征就从\(x\)变成了\(\phi(x)\),对于前文的分类器,我们需要将\(\left<x^{(i)}, x^{(j)}\right>\)替换为\(\left<\phi(x^{(i)}), \phi(x^{(j)})\right>\)

\(\phi(x)\)的维度可能非常高,计算\(\phi(x)\)的开销也就会非常大,因此我们希望能构造一种函数\(K\),使得:
\[
K(x^{(i)}, x^{(j)}) = \left<\phi(x^{(i)}), \phi(x^{(j)})\right>
\]

两种常见的核

多项式核:\(K(x,z) = (x^Tz + c)^d\),假设\(x, y \in \mathbb{R}^n\),则\(K(x,z)\)对应的是两个\(\sum_{i=0}^{d}C_{n+i-1}^{i}=C_ {n+d}^{d}\)维向量的内积,而计算\(K(x,z)\)只需要\(O(n)\)的时间

高斯核:\(K(x,z) = \exp(-\frac{\|x-z\|^2}{2\sigma^2})\),对于高斯核的构建,有一种比较直观的想法是,\(x\)和\(z\)很相近,\(K(x,z)\)的值就大,否则\(K(x,z)\)的值就小。

Mercer定理

给定\(K(x,z)\),\(K\)是一个合法的核(即存在\(\phi\)使得\(K(x,z) = \left<\phi(x), \phi(z)\right>\))当且仅当对于任意的\(\{x^{(1)}, \dots, x^{(m)}\}\)(\(m \lt \infty\)),核矩阵\(K \in \R^{m\times m}\)是半正定的,其中核矩阵\(K\)定义为\(K_{i,j} = K(x^{(i)}, x^{(j)})\)。

核技巧

核并不是只能用于SVM,只要能将一个算法描述成特征向量内积的形式,就可以使用核函数代替映射后的特征的内积

不可分、正则

通过特征映射,原本线性不可分的数据在映射特征空间中可能变得线性可分,但这并不是绝对的,数据不可分的情况还是会出现,此外,有时会训练数据中可能会有一些异常值,这些都会是训练出的分类器性能不佳。

所以我们考虑加正则:
\[
\begin{align*}
\min_{w,b,\xi}\quad&\frac{1}{2}\|w\|^2 + C \sum_{i=1}^m\xi_i\\
s.t.\quad&y^{(i)}(w^{T}x^{(i)}+b) \ge 1 - \xi_i\\
&\xi_i \ge 0
\end{align*}
\]
拉格朗日函数为:
\[
L(w,b,\xi,\alpha,r) = \frac{1}{2}w^Tw + C\sum_{i=1}^{m}\xi_i - \sum_{i=1}^{m}\alpha_i\left[y^{(i)}\left(w^Tx^{(i)} + b\right) - 1 + \xi_i\right] - \sum_{i=1}^{m}r_i\xi_i
\]
求出对偶问题:
\[
\begin{align*}
\max_{\alpha}\quad&W(\alpha) = -\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i\alpha_jy^{(i)}y^{(j)}\left<x^{(i)},x^{(j)}\right>
+ \sum_{i=1}^{m}\alpha_i\\
s.t.\quad& 0 \le \alpha_i \le C,\ i = 1,\dots,m\\
& \sum_{i}^{m} \alpha_i y^{(i)} = 0\\
\end{align*}
\]
与不加正则的情况相比,唯一的区别约束条件从\(\alpha_i \ge 0\)改为了\(0 \le \alpha \le C\),在推导过程中,我们能够得到\(\alpha_i + \xi_i = C\),所以我们有:
\[
\begin{align*}
\alpha_i = 0 &\Rightarrow y^{(i)}(w^{T}x^{(i)}+b) \ge 1\\
\alpha_i = C &\Rightarrow y^{(i)}(w^{T}x^{(i)}+b) \le 1\\
0 \lt \alpha_i \lt C &\Rightarrow y^{(i)}(w^{T}x^{(i)}+b) = 1
\end{align*}
\]

SMO算法

SMO算法用来解决对偶问题,这里不展开了。

CS229笔记:支持向量机的更多相关文章

  1. CS229 笔记06

    CS229 笔记06 朴素贝叶斯 事件模型 事件模型与普通的朴素贝叶斯算法不同的是,在事件模型中,假设文本词典一共有 \(k\) 个词,训练集一共有 \(m\) 封邮件,第 \(i\) 封邮件的词的个 ...

  2. CS229 笔记08

    CS229 笔记08 Kernel 回顾之前的优化问题 原始问题为: \[ \min_{w,b} \frac{1}{2}||w||^2\\[1.5em] {\text{s.t.}}y^{(i)}\le ...

  3. CS229 笔记07

    CS229 笔记07 Optimal Margin Classifier 回顾SVM \[ \begin{eqnarray*} h_{w,b}&=&g(w^{\rm T}x+b)\\[ ...

  4. CS229 笔记05

    CS229 笔记05 生成学习方法 判别学习方法的主要思想是假设属于不同target的样本,服从不同的分布. 例如 \(P(x|y=0) \sim {\scr N}(\mu_1,\sigma_1^2) ...

  5. CS229 笔记04

    CS229 笔记04 Logistic Regression Newton's Method 根据之前的讨论,在Logistic Regression中的一些符号有: \[ \begin{eqnarr ...

  6. CS229 笔记03

    CS229 笔记03 局部加权线性回归 Non-Parametric Learning Algorithm (非参数学习方法) Number of parameters grows with the ...

  7. CS229 笔记02

    CS229 笔记02 公式推导 $ {\text {For simplicity, Let }} A, B, C \in {\Bbb {R}}^{n \times n}. $ ​ $ {\bf {\t ...

  8. Andrew Ng机器学习公开课笔记 -- 支持向量机

    网易公开课,第6,7,8课 notes,http://cs229.stanford.edu/notes/cs229-notes3.pdf SVM-支持向量机算法概述, 这篇讲的挺好,可以参考   先继 ...

  9. 机器学习笔记——支持向量机 (SVM)

    声明: 机器学习系列主要记录自己学习机器学习算法过程中的一些参考和总结,其中有部分内容是借鉴参考书籍和参考博客的. 目录: 什么支持向量机(SVM) SVM中必须知道的概念 SVM实现过程 SVM核心 ...

随机推荐

  1. Django 自定义表

    1.Django自带的用户表 create table auth_user ( id int auto_increment primary key, password varchar(128) not ...

  2. 风险指针(Hazard Pointer) 内存空间共享模型

    WiredTiger是一种高性能的开源存储引擎,现已在MongoDB中作为内模式应用.WiredTiger支持行存储.列存储两种存储模式,采用LSM Tree方式进行索引记录 WiredTiger支持 ...

  3. Oracle 当数据库的表没有drop操作就可以通过如下方式恢复表数据

    --执行下列语句可查询出相关时间点 select * from sys.smon_scn_time order by time_dp desc; --执行下列语句可将某个时间点的数据恢复 insert ...

  4. How to Be Assertive Asking for What You Want Firmly and Fairly

    What Is Assertiveness? It's not always easy to identify truly assertive behavior. This is because th ...

  5. windows系统利用任务管理器-资源监视器了解程序的磁盘读写量

    场景摘要:   1.刚部署上线一个新功能,增加了日志输出模块 2.本身服务器资源已经紧张了,在增加日志输出,就想了解磁盘读写量 3.从中突然发现oracle的磁盘读写量比较大 4.在展开明细发现是or ...

  6. AWS服务学习

    什么是云计算? 云计算是用户通过Internet云服务平台按需提供计算能力.数据库存储.应用程序和其他IT资源,采用按需支付定价模式 无论您是在运行拥有数百万移动用户的照片共享应用程序,还是要为您的业 ...

  7. cJSON 使用详解

    由于c语言中,没有直接的字典,字符串数组等数据结构,所以要借助结构体定义,处理json.如果有对应的数据结构就方便一些, 如python中用json.loads(json)就把json字符串转变为内建 ...

  8. Lombok快速上手(安装、使用与注解参数)

    目录 Lombok插件安装与使用说明 常见参数 lombok的依赖于安装 依赖管理 IDEA插件的安装 @Data小例子 扩展@ToString 构造器注解扩展 @Log及其他日志注解 资料链接 Lo ...

  9. Ecstore Nginx Rewrite(去掉链接中的index.php) ECSTORE 伪静态

    一.修改 nginx.conf文件,添加如下代码: if ($request_uri ~ (.+?\.php)(|/.+)$ ){ break; } if (!-e $request_filename ...

  10. Vuex状态管理详解

    什么是Vuex 专门为vue应用程序开发的状态管理模式,采用集中式存储管理应用的所有组件的状态(数据),以相应的规则保证状态以一种可预测的方式发生改变 Vuex的作用(什么样的情况下使用Vuex) 多 ...