考虑一个分类问题,用\(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. python 中* 和**的作用

    先举个 ** 使用的例子: data = {"a": 1, "b": 2} def foo(**kwargs): print kwargs foo(a=1, b ...

  2. 重学C语言---05运算符、表达式和语句

    一.循环简介 实例程序 /*shoes1.c--把一双鞋的尺码变为英寸*/#include <stdio.h>#define ADJUST 7.64#define SCALE 0.325 ...

  3. python容错

    #try: except: else: #为什么叫容错呢,先说说错误,这里说的错误并不是因为马虎或者什么原因在脚本中留下的bug,这个不能容掉,所谓容掉就是略过这个错误,要在测试时候发现并修正,需要容 ...

  4. wing ide 6.0 注册

    1.wing ide介绍 wing ide ,用过python的都知道是干嘛用的了吧,官网已经更新到6.0.0-1版本. 链接如下: Wing IDE Professional - Version 6 ...

  5. 深度访谈Amazon员工与HR:华裔因pip跳楼背后(图)

    http://www.wenxuecity.com/news/2016/12/01/5813342.html 首先,让我们来回顾一下这起事件.两天前在某论坛中,有同学发了这么一个帖子,大致意思是说有一 ...

  6. Linux uniq命令详解

    uniq常见命令参数 用法:uniq [选项]... [文件] 从输入文件或者标准输入中筛选相邻的匹配行并写入到输出文件或标准输出. 不附加任何选项时匹配行将在首次出现处被合并. 长选项必须使用的参数 ...

  7. npm安装vue

    目录 npm安装vue Vue.js 是什么 直接用script引入 安装vue 对不同构建版本的解释 安装命令行工具 (CLI) 安装cnpm 安装vue-cli 新建vue项目 运行服务 目录结构 ...

  8. 关于ARMv8指令的几个问题

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/qianlong4526888/article/details/27512629 NOTE:下面内容仅 ...

  9. 晚上打开eclipse时碰到这个问题 :Workspace in use or cannot be created, choose a different one.

    晚上打开eclipse时碰到这个问题 :Workspace in use or cannot be created, choose a different one. 网上看到这方面的解决方式: 原因: ...

  10. 【正则表达式】用js实现千位分隔符,怎么实现?

    (?=pattern)  正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串.这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用.例如,'Windows (?=95|98|NT| ...