支撑向量机 SVM(一)

本文总结支撑向量机的基础知识,加入一点个人的直观理解。个人比较不太喜欢照搬书里的东西,而是喜欢自己推导然后时不时闭上研究回忆,想方设法用自己的方式简单理解。

1. 分类支撑向量机

        1.1 可分SVM与间隔最大化:

                 

对于二分类SVM,一种直观的理解就是要寻找一条有宽度的带子来分开两类数据,而不是一条线。为何要这样呢? 如果仅仅是一条线的话,那么例如上图中,这条边界并不唯一,那么模型的鲁棒性成问题。但是如果是找一条边界带,那么可能可以找到一条宽度最宽的边界带,并且至少在某些情况,这条带子是唯一的,用来间隔开两类数据,如上图所示。而如果数据是“可分的”,也就是说这样的带子存在,那么带子的最大宽度称为“间隔最大化”(maximizing the margin),直观上,最宽的那个带子好像是一种最公平的方式分离开两类数据。

我们尝试用数学语言描述这件事情。设$D=\lbrace (x_{1},y_{1}),...,(x_{N},y_{N}), x_{i}\in\mathbb{R}^{P},y_{i}\in \lbrace-1,+1\rbrace \rbrace$ 是我们的预训练数据集。对于每一条带子,也就是$\mathbb{R}^{P}$中两个平行的超平面,总可以表示为:$w\cdot x+b=+1$与$w\cdot x+b=-1$,其中$(w,b)\in \mathbb{R}^{P}\times\mathbb{R}^{P}$而$(x,y)$表示$\mathbb{R}^{P}\times\mathbb{R}$中的点。我们希望的是$y_{i}=1$的点尽量落在这个带子(或者说是一条河更好)的"正岸", 也就是集合: \lbrace x\in\mathbb{R}^{P}\mid w\cdot x+b\geq 1\rbrace, 而$y_{i}=1$的点尽量落在这个带子(或者说是一条河更好)的"正岸", 也就是集合: \lbrace x\in\mathbb{R}^{P}\mid w\cdot x+b\leq -1\rbrace,综合起来就是我们希望数据都是满足:$$y_{i}(w\cdot x_{i}+b)\geq 1$$的。

现在对于训练集中任意点$(x_{i},y_{i})$如果$y_{i}(w\cdot x_{i}+1)\geq 1$, 也就是说该点完全在自己该落在的那一边上,或者叫自己这一类的“地盘”上,那么这时是很让人满意的,如果每一个点都满足上述不等式,则两个类被这条河完全阻隔开。注意这条河的宽度其实是$\frac{2}{\Vert w\Vert}$, 所以找这条河就是说求下列的优化问题:

\begin{equation}\begin{split}\text{max}\ \ &\frac{2}{\Vert w\Vert}\newline \text{subject to}\ \ & y_{i}(w\cdot x_{i}+b)\geq 1\end{split}\end{equation}

很自然的,其实上述问题等价于下面的凸优化问题:

\begin{equation}\begin{split}\text{min}\ \ &\frac{1}{2}\Vert w\Vert^{2}\newline \text{subject to}\ \ & y_{i}(w\cdot x_{i}+b)\geq 1\end{split}\end{equation}

          1.2 不可分向量机和软间隔最大化:

现实中没那么好的事情,能够找一条河将两个类完全隔开,而往往是每条河都会有些点跑到河面上或者干脆跑到不属于自己领土的河对岸。我们用数学语言描述一下这件事:

对于任意点$(x_{i},y_{i})\in D$:

如果$y_{i}(w\cdot x_{i}+b)\geq 1$, 我们很满意,他在自己这边的岸上;

如果$y_{i}(w\cdot x_{i}+b)\leq 1$, 我们有点捉鸡,因为它跑到河面上去了或者直接在对方的岸上,这个时候我们希望他离自己这边的河岸尽量近,也就是$1-y_{i}(w\cdot x_{i}+b)$尽量大。

综上这个时候不妨引入$d_{i}(w,b)=[1-y_{i}(w\cdot x_{i}+b)]_{+}$, 他只在第二种坏情况的时候非0,给我们的模型蒙羞。我们要想办法使得$\sum_{i=1}^{N}d_{i}$小的同时$\Vert w\Vert$尽量大,因此我们可以考虑如下的最优问题来平衡这两个目标:

\begin{equation}\begin{split}\text{min}\ \ &\frac{1}{2}\Vert w\Vert^{2}+Cd_{i}(w,b)\end{split}\end{equation}

其中C>0是某个预先选定的数。

上面的式子还是看着不够漂亮,我们应该整理一下。考虑到$d_{i}(w,b)$其实是当$w,b$固定时满足:

$$\xi_{i}\geq 0, 1-y_{i}(w\cdot x_{i}+b)\leq \xi_{i}$$的$\xi_{i}$的最小值,所以我们可以将(3)改写为:

\begin{equation}\begin{split}\text{min}\ \ &\frac{1}{2}\Vert w\Vert^{2}+C\sum_{i=1}^{N}\xi_{i}\newline \text{subject to:}\ \ \ \ \ & y_{i}(w\cdot x_{i}+b)\geq 1-\xi_{i}\newline \ \ \ \ \ \          &\xi_{i}\geq 0\end{split}\end{equation}

2. 支撑向量机回归

我们考虑一下回归问题,这个时候我们需要玩一点不同的套路。这时候设$D=\lbrace (x_{1},y_{1}),...,(x_{N},y_{N}), x_{i}\in\mathbb{R}^{P},y_{i}\in \mathbb{R}\rbrace \rbrace$是训练集,注意到$y_{i}$是连续变量,不再是-1,+1.

这个时候恰恰相反,我们需要寻找一条带子,使得数据点尽量集中在带内。和通常的线性回归不同的是,对于落在带子内部的数据,我们不计较其损失,我们只计算落在带子外的数据,也就是我们给定一个带宽$\epsilon>0$, 希望找到$f(x)=w\cdot x+b$使得:

$$\sum_{i=1}^{N}(\vert y_{i}-f(x_{i})\vert-\epsilon)_{+}$$

尽量小,而同时我们考虑到可以添加$w$的正则项,于是我们可以得到如下的优化问题:

\begin{equation}\min_{(w,b)\in \mathbb{R}^{P}\times\mathbb{R}}  \ \ \ \ \ \ \frac{1}{2}\Vert w\Vert^{2}+C\sum_{i=1}^{N}(\vert y_{i}-w\cdot x_{i}-b\vert-\epsilon)_{+},\end{equation}

其中$C>0$是预先选定的系数。

我们容易观察到,对于任意的$x\in\mathbb{R}$:$$[\vert x\vert-\epsilon]_{+}=\min\lbrace \hat{\xi}+\check{\xi}\mid -\check{\xi}-\epsilon\leq x\leq\hat{\xi}+\epsilon,\hat{\xi},\check{\xi}\geq 0\rbrace,$$

于是优化问题(4)等价于凸优化问题:

\begin{equation}\begin{split}\min \ \ \ \ \  \frac{1}{2}\Vert w\Vert^{2}+C\sum_{i=1}^{N}(\hat{\xi}_{i}+\check{\xi}_{i})&\newline \text{subject to:}\ \ \ \ \ -\check{\xi_{i}}-\epsilon\leq w\cdot x_{i}+b\leq \hat{\xi_{i}}+\epsilon &\newline \hat{\xi}_{i},\check{\xi}_{i}\geq 0 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ & \end{split}\end{equation}

3.对偶问题

         3.1 分类SVM的对偶问题:

我们这里看看(5)的Lagrange对偶问题。这时候Lagrange函数为:

$$L: \mathbb{R}^{P}\times\mathbb{R}\times\mathbb{R}^{N}\times\mathbb{R}^{N}\times\mathbb{R}^{N}:\longrightarrow \mathbb{R}$$

$$L(w,b,\xi,\alpha,\nu)=\frac{1}{2}\Vert w\Vert^{2}+C\sum_{i=1}^{N}\xi_{i}-\sum_{i=1}^{N}\alpha_{i}(y_{i}(w\cdot x_{i}+b)-1+\xi_{i})-\sum_{i=1}^{N}\nu_{i}\xi_{i}$$

本人在之前的随笔 https://www.cnblogs.com/szqfreiburger/p/11573939.html 中介绍了Lagrange函数和Slater条件,我们很容易看出这个问题是满足Slater条件的,于是该问题和对偶问题是强对偶的,我们研究一下其对偶问题。

首先对偶函数:$$g(\alpha,\nu)=\begin{cases}-\frac{1}{2}\Vert \sum_{i=1}^{N}\alpha_{i}y_{i}x_{i}\Vert^{2}+\sum_{i}\alpha_{i}, &\alpha_{i}+\nu_{i}= C, \text{ and }\sum_{i=1}^{N}y_{i}\alpha_{i}=0 \cr -\infty, &otherwise\end{cases},$$

于是乎原问题的对偶问题:\begin{split}\text{min }&g(\alpha,\nu)\newline \text{subject to } & \alpha_{i}\geq 0 ,\ i=1,...,N&\newline &\nu_{i}\geq 0, \ i=1,...,N \end{split}

就等价于凸优化问题:\begin{equation}\begin{split}\text{min }&\sum_{i=1}^{N}\sum_{i=1}^{N}\frac{1}{2}\alpha_{i}\alpha_{j}y_{i}y_{j}x_{i}\cdot x_{j}-\sum_{i=1}^{N}\alpha_{i}\newline \text{subject to } & 0 leq\alpha_{i}\geq C ,\ i=1,...,N\end{split}\end{equation}

这时候如果我们求解上述优化问题得到最优解$\alpha^{\ast}$, 则$(\alpha^{\ast}_{1},...,\alpha^{\ast}_{N},C-\alpha^{\ast}_{1},...,C-\alpha^{\ast}_{N})$将会是对偶问题的最优解,如果$(w^{\ast},b^{\ast},\xi^{\ast})$是原问题的最优解,由于原问题和对偶问题是强对偶的,我们自然有 KKT 条件成立:

       (1) 不等式约束条件:

对任意的 i=1,...,N 有:

\begin{equation}y_{i}(w^{\ast}\cdot x_{i}+b^{\ast})\geq 1-\xi_{i}^{\ast}\end{equation}

\begin{equation}\xi_{i}^{\ast}\geq 0,\end{equation}

       (2) slackness 条件:

对任意的 i=1,...,N 有:

\begin{equation}\alpha_{i}^{\ast}(y_{i}(w^{\ast}\cdot x_{i}+b^{\ast})-1+\xi_{i}^{\ast})=0\end{equation}

\begin{equation}(\alpha_{i}^{\ast}-C)\xi_{i}^{\ast}= 0,\end{equation}

       (3)梯度条件:

\begin{equation}\nabla_{w}L(w^{\ast},b^{\ast},\xi^{\ast},\alpha^{\ast},\nu^{\ast})=w^{\ast}-\sum_{i=1}^{N}\alpha^{\ast}_{i}y_{i}x_{i}=0\end{equation}

\begin{equation}\nabla_{b}L(w^{\ast},b^{\ast},\xi^{\ast},\alpha^{\ast},\nu^{\ast})=-\sum_{i=1}^{N}\alpha_{i}^{\ast}y_{i}=0\end{equation}

\begin{equation}\nabla_{\xi}L(w^{\ast},b^{\ast},\xi^{\ast},\alpha^{\ast},\nu^{\ast})=(C-\alpha_{1}^{\ast}-\nu_{1}^{\ast},...,C-\alpha_{N}^{\ast}-\nu_{N}^{\ast})=0\end{equation}

由第一个梯度条件(12)可知:

\begin{equation}w^{\ast}=\sum_{i=1}^{N}y_{i}x_{i}\alpha_{i}^{\ast},\end{equation}

注意到,如果存在某个$i_{0}$使得$\alpha_{i_{0}}\in (0,C) $,  此时由slackness条件(10),(11)且$\alpha_{i_{0}}\neq 0$我们立即得到$\xi_{i_{0}}^{\ast}=0$, $y_{i_{0}}(w^{\ast}\cdot x_{i_{0}}+b^{\ast})-1+\xi_{i_{0}}^{\ast}=0$, 从而有:

\begin{equation}b^{\ast}=y_{i_{0}}-w^{\ast}\cdot x_{i_{0}}=y_{i_{0}}-\sum_{i=1}^{N}\alpha_{i=1}^{\ast}y_{i}x_{i_{0}}\cdot x_{i}\end{equation}

从中看出,满足条件的$b^{\ast}$不只一个,其实我们可以将所有的由满足条件的$\alpha_{i}$算出来的$b$取平均得到$b^{\ast}$, 以增强模型的鲁棒性。

综上我们可以总结出分类SVM算法如下:

输入:训练数据集$D=\lbrace (x_{1},y_{1}),...,(x_{N},y_{N})\rbrace$, 其中$x_{i}\in\mathbb{R}^{P}$, $y_{i}\in\lbrace -1,+1\rbrace$, 并且$y_{i}$不恒等于+1 或-1

       输出:分类决策函数

       算法:

                 (1) 选择某个惩罚系数 $C>0$, 并且求解如下的最优化问题:

                                             \begin{equation}\begin{split}\text{min    }\ \ \    &\sum_{i=1}^{N}\sum_{i=1}^{N}\frac{1}{2}\alpha_{i}\alpha_{j}y_{i}y_{j}x_{i}\cdot x_{j}-\sum_{i=1}^{N}\alpha_{i}\newline \text{subject to: }\ \ \ \        & 0\leq\alpha_{i}\leq C ,\ i=1,...,N\end{split}\end{equation}

                      得到最优解$\alpha^{\ast}=(\alpha^{\ast}_{1},...,\alpha^{\ast}_{N})$

                 (2) 计算:$$w^{\ast}=\sum_{i=1}^{N} \alpha_{i} y_{i} x_{i},$$

                      找出一个$i_{0}(1\leq i_{0}\leq N)$, 使得$\alpha_{i_{0}}\in (0, C)$, 计算:$$b^{\ast}=y_{i_{0}}-\sum_{i=1}^{N}\alpha_{i}^{\ast}y_{i}x_{i}\cdot x_{i_{0}}$$

                 (3) 输出分类决策函数:

                                     $$f(x)=\text{sign}(w^{\ast}\cdot x+b^{\ast})$$   

       3.2 回归SVM问题的对偶问题:

凸优化问题(6)的Lagrange函数要稍微复杂一些:

$$L:\mathbb{R}^{P}\times\mathbb{R}\times\mathbb{R}^{N}\times\mathbb{R}^{N}\times\mathbb{R}^{N}\times\mathbb{R}^{N}\times\mathbb{R}^{N}\times\mathbb{R}^{N}\longrightarrow\mathbb{R}$$

\begin{split}L(w,b,\hat{\xi},\check{\xi},\alpha,\beta,\nu,\mu)=&\frac{1}{2}\Vert w\Vert^{2}+C\sum_{i=1}^{N}(\hat{\xi_{i}}+\check{\xi_{i}})+\sum_{i=1}^{N}\alpha_{i}(-\hat{\xi_{i}}-\epsilon-w\cdot x_{i}-b+y_{i})\newline & +\sum_{i=1}^{N}\beta_{i}(-y_{i}+w\cdot x_{i}+b-\check{\xi_{i}}-\epsilon)-\sum_{i=1}^{N}\nu_{i}\hat{\xi_{i}}-\sum_{i=1}^{N}\mu_{i}\check{\xi_{i}}\end{split}

这时候Lagrange对偶函数:

\begin{split}& g(\alpha,\beta,\nu,\mu)\triangleq\min_{w,b,\hat{\xi},\check{\xi}}L(w,b,\hat{\xi},\check{\xi},\alpha,\beta,\nu,\mu)\newline =&\begin{cases}-\frac{1}{2}\sum_{i=1}^{N}\sum_{i=1}^{N}(\alpha_{i}-\beta_{i})(\alpha_{j}-\beta_{j})x_{i}\cdot x_{j}\newline +\sum_{i=1}^{N}(y_{i}-\epsilon)\alpha_{i}-(y_{i}+\epsilon)\beta_{i}, & \beta_{i}+\nu_{i}=C, \beta_{i}+\mu_{i}= C, & \sum_{i=1}^{N}(\alpha_{i}-\beta_{i})=0 \cr -\infty, &\text{otherwise}\end{cases}, \end{split}

因此原问题(6)的对偶问题等价于优化问题:

\begin{equation}\begin{split}\min\ \ \ \ \ \ \  &\frac{1}{2}\sum_{i=1}^{N}\sum_{i=1}^{N}(\alpha_{i}-\beta_{i})(\alpha_{j}-\beta_{j})x_{i}\cdot x_{j}+\sum_{i=1}^{N}(\epsilon-y_{i})\alpha_{i}+(y_{i}+\epsilon)\beta_{i} \newline \text{subject to:}\ \ \ \ \ \ \ \  & 0\leq\alpha_{i}\leq C  \newline & 0\leq\beta_{i}\leq C \newline &\sum_{i=1}^{N}(\alpha_{i}-\beta_{i})=0 \end{split}\end{equation}

同样类似于支撑向量机分类问题,如果上述问题得到最优解$(\alpha^{\ast},\beta^{\ast})=(\alpha^{\ast}_{1},...,\alpha^{\ast}_{N},\beta^{\ast}_{1},...,\beta^{\ast}_{N})$, 我们仍然可以依据KKT条件得到:

\begin{equation}w^{\ast}=\sum_{i=1}^{N}(\alpha_{i}^{\ast}-\beta_{i}^{\ast})x_{i}\end{equation}

\begin{equation}\alpha^{\ast}_{i}+\nu_{i}^{\ast}=C\end{equation}

\begin{equation}\beta^{\ast}_{i}+\mu_{i}^{\ast}=C\end{equation}

\begin{equation}\alpha_{i}^{\ast}(y_{i}-w^{\ast}\cdot x_{i}-b^{\ast}-\hat{\xi_{i}}^{\ast}-\epsilon)=0\end{equation}

\begin{equation}\beta_{i}^{\ast}(-y_{i}+w^{\ast}\cdot x_{i}+b^{\ast}-\check{\xi_{i}}^{\ast}-\epsilon)=0\end{equation}

\begin{equation}\nu_{i}^{\ast}\hat{\xi_{i}}^{\ast}=0\end{equation}

\begin{equation}\mu^{\ast}_{i}\check{\xi_{i}}^{\ast}=0\end{equation}

类似的,如果存在一个$i_{0}$使得$\alpha_{i_{0}}^{\ast}\in (0,C)$(或者$\beta_{i_{0}}^{\ast}\in (0,C)$), 则我们可以得到:

\begin{equation}b^{\ast}=y_{i_{0}}-w^{\ast}\cdot x_{i_{0}}-\epsilon(\text{或:} b^{\ast}=y_{i_{0}}-w^{\ast}\cdot x_{i_{0}}+\epsilon)\end{equation})

4.对偶问题的求解

我们已经看到了,无论是支撑向量分类还是支撑向量回归,关键都在于如何求解对偶问题的最优解, 一般采用序列最小最优化算法(SMO), 下次有机会再总结。

5. 参考文献: 

1. 周志华,《机器学习方法》,清华大学出版社,2016.

2. 李航,《统计学习方法》, 清华大学出版社,2012

原文地址:https://www.cnblogs.com/szqfreiburger/p/11645214.html

时间: 2024-10-11 22:20:22

支撑向量机 SVM(一)的相关文章

走过路过不要错过 包你一文看懂支撑向量机SVM

假设我们要判断一个人是否得癌症,比如下图:红色得癌症,蓝色不得. 看一下上图,要把红色的点和蓝色的点分开,可以画出无数条直线.上图里黄色的分割更好还是绿色的分割更好呢?直觉上一看,就是绿色的线更好.对吧. 为啥呢?考虑下图,新来了一个黑色点,明显靠蓝色点更近,如果用黄线分割,却把它划分到了红色点这个类别里. 现在细想一下为什么绿线比黄线分隔效果更好? 黄色线太贴近蓝色点 绿色线到红色点群和蓝色点群距离大致相等.恰好位于两个点群中间的位置 由此我们就引申出了SVM的理论基础:使得距离决策边界最近的

SVM学习笔记-线性支撑向量机

最大间隔超平面 线性分类器回顾 当数据是线性可分的时候,PLA算法可以帮助我们找到能够正确划分数据的超平面hyperplane,如图所示的那条线. 哪一条线是最好的? 对于PLA算法来说,最终得到哪一条线是不一定的,取决于算法scan数据的过程. 从VC bound的角度来说,上述三条线的复杂度是一样的  Eout(w)≤Ein0+Ω(H)dvc=d+1 直观来看,最右边的线是比较好的hyperplane. 为什么最右边的分隔面最好? 对于测量误差的容忍度是最好的.例如对于每

支撑向量机SVM-1.原理

支撑向量机的英文名叫: Support Vector Machine,是机器学习领域中的很重要的一种算法.它的思想背后有极强的统计理论的支撑,也是统计学上常用的一种方法.此算法在机器学习中既能解决分类问题,又能解决回归问题.且对真实的数据具有很好的泛化能力. 原理:考虑如下样本数据集,如何分辨此数据集? 之前的逻辑回归算法,确定决策边界的思路是定义了一个概率函数,根据这个概率函数进行建模,形成了损失函数,最小化损失函数来确定决策边界. 支撑向量机和逻辑回归不同,它的实现是找到一条最优的决策边界,

class-支持向量机SVM全析笔记

support vector machines,SVM是二类分类模型.定义在特征空间上间隔最大的线性分类器,由于包括核技巧实质上成为非线性分类器.学习策略是间隔最大化,可形式化为求解凸二次规划问题(convex quadratic programming).求解算法是求解凸二次规划的最优化算法. SVM学习方法分为线性可分支持向量机(linear support vector machine in linearly separable case).线性支持向量机(linear support v

Python-基于向量机SVM的文本分类

项目代码见 Github: 1.算法介绍 2.代码所用数据 详情参见http://qwone.com/~jason/20Newsgroups/ 文件结构 ├─doc_classification.py ├─stopwords.txt ├─vocabulary.txt ├─train.data ├─train.label ├─train.map ├─test.data ├─test.label └─test.map python代码 需要安装的库: pandas, liblinearutil 注:

SVM-支持向量机(一)线性SVM分类

SVM-支持向量机 SVM(Support Vector Machine)-支持向量机,是一个功能非常强大的机器学习模型,可以处理线性与非线性的分类.回归,甚至是异常检测.它也是机器学习中非常热门的算法之一,特别适用于复杂的分类问题,并且数据集为小型.或中型的数据集. 这章我们会解释SVM里的核心概念.原理以及如何使用. 线性SVM分类 我们首先介绍一下SVM里最基本的原理.这里先看一张图: 这个是Iris数据集中的部分数据,可以看到这两个类别可以由一条直线很简单地直接分开(也可以说它们是线性可

SVM-支持向量机原理详解与实践之一

目录(?)[+] 前言 SVM机器学习与深度学习 人工智能领域 机器学习与深度学习 SVM简介 SVM原理分析 快速理解SVM原理 线性可分和线性不可分 函数间隔和几何间隔 超平面分析与几何间隔详解 二次最优化 SVM-支持向量机原理详解与实践 前言 去年由于工作项目的需要实际运用到了SVM和ANN算法,也就是支持向量机和人工神经网络算法,主要是实现项目中的实时采集图片(工业高速摄像头采集)的图像识别的这一部分功能,虽然几经波折,但是还好最终还算顺利完成了项目的任务,忙碌一年,趁着放假有时间好好

SVM-支持向量机算法概述

(一)SVM的背景简单介绍 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本.非线性及高维模式识别中表现出很多特有的优势,并可以推广应用到函数拟合等其它机器学习问题中[10]. 支持向量机方法是建立在统计学习理论的VC 维理论和结构风险最小原理基础上的,依据有限的样本信息在模型的复杂性(即对特定训练样本的学习精度,Accuracy)和学习能力(即无错误地识别随意样本的能力)之间寻求最佳折衷,以期获得最好的推广能力[14]

关于SVM--支持向量机的一个故事

关于SVM(support vector machine)--支持向量机的一个故事 很久很久以前,有个SVM, 然后,……………………被deep learning 杀死了…………………………………… 完结……撒花 故事的起源: 好吧,关于支持向量机有一个故事 ,故事是这样子的: 在很久以前的情人节,大侠要去救他的爱人,但魔鬼和他玩了一个游戏. 魔鬼在桌子上似乎有规律放了两种颜色的球,说:“你用一根棍分开它们?要求:尽量在放更多球之后,仍然适用.” 于是大侠这样放,干的不错? 然后魔鬼,又在桌上放