首页 > 其他分享 >【笔记】机器学习基础 - Ch5. Support Vector Machines

【笔记】机器学习基础 - Ch5. Support Vector Machines

时间:2023-08-22 19:11:05浏览次数:42  
标签:bf frac Vert cdot Support Vector Ch5 cal alpha

5.1 Linear classification

考虑如下问题:\(\mathbb{R} ^N\) 上的 \(\cal X\) 服从某个未知分布 \(\cal D\),并由目标函数 \(f:\cal X\to Y\) 映射到 \(\{-1, +1\}\)。根据采样 \(S=(({\bf x} _1, y _1),\dotsb, ({\bf x} _m, y _m))\) 确定一个二分类器 \(h\in \cal H\),使得其泛化误差 \(R _{\cal D}(h)=\Pr _{{\bf x}\sim \cal D}[h({\bf x})\ne f({\bf x})]\) 尽量小
选择线性分类器 linear classifier 使得复杂度比较小,即:

\[{\cal H}=\{{\bf x}\mapsto \text{sign}({\bf w\cdot x}+b):{\bf w}\in \mathbb{R} ^N-\{{\bf 0}\}, b\in \mathbb{R}\} \]

也就是通过超平面 hyperplane 二分类。另外 \({\bf w\cdot x}+b\) 和 \({\bf -w\cdot x}-b\) 代表同一个超平面但是标签取反,可以把 \(\bf 0\) 代入判断一下正例位置。

5.2 Separable case

本节假设样本 \(S\) 线性可分,也就是样本的标签是某个待学习的超平面 \(({\bf w},b)\) 对样本进行映射得到的:\(\forall i\in[m],y _i({\bf w \cdot x _{\it i}}+b)\ge 0\)
SVM 考虑几何间隔 geometric margin

定义 Geometric margin
点 \(\bf x\) 和超平面 \(h:({\bf w},b)\) 的几何间隔,定义为两者的欧几里得距离 \(\rho _h({\bf x})\):

\[\rho _h({\bf x})=\frac{|{\bf w\cdot x}+b|}{\Vert {\bf w}\Vert _2} \]

小证一下:设沿 \(\bf x\) 方向与平面交于 \(\bf x'\),那么距离就是 \(\bf x-x'\) 在 \(\bf w\) 方向的投影长度,即 \(\rho={\bf |(x-x')\cdot\frac{w}{\Vert w\Vert}|}=\frac{\bf |w\cdot x-w\cdot x'|}{\bf \Vert w\Vert}=\frac{|({\bf w\cdot x}+b)-({\bf w\cdot x'}+b)|}{\bf \Vert w\Vert}=\frac{|{\bf w\cdot x}+b|}{\bf \Vert w\Vert}\)
定义线性分类器对样本 \(S\) 的几何距离为 \(\rho _h=\min\rho _h({\bf x} _i)\),而 SVM 应取到最大的几何距离,有:

\[\begin{aligned} {\bf w},b &= \underset{{{\bf w},b\ :\ y _i({\bf w\cdot x} _i+b)\ge 0}}{\text{arg max}}\min _i \frac{|{\bf w\cdot x} _i+b|}{\Vert {\bf w}\Vert} \\ &= \underset{{\bf w},b}{\text{arg max}}\ \min _i \frac{y _i({\bf w\cdot x} _i+b)}{\Vert {\bf w}\Vert} \qquad;\text{假设样本线性可分} \\ &= \underset{{\bf w},b\ :\ \min y _i({\bf w\cdot x} _i+b)=1}{\text{arg max}} \ \frac{1}{\Vert {\bf w}\Vert} \qquad;\text{加条件约束分式上下变动} \\ &= \underset{{\bf w},b\ :\ y _i({\bf w\cdot x} _i+b)\ge 1}{\text{arg max}} \ \frac{1}{\Vert {\bf w}\Vert} = \underset{{\bf w},b\ :\ y _i({\bf w\cdot x} _i+b)\ge 1}{\text{arg min}} \ \frac{1}{2}{\Vert \bf w\Vert} ^2 \end{aligned} \]

从而得到如下对 \(({\bf w}, b)\) 的凸优化问题:

\[\min _{{\bf w}, b} \frac{1}{2}\Vert {\bf w} \Vert ^2 \\ subject\ to: g _i({\bf w},b)=1 - y _i({\bf w\cdot x} _i + b)\le 0,\forall i\in [m] \]

根据以二阶导定义的凸函数,由于 \(F:{\bf w\to \Vert w\Vert} ^2/2\) 的 Hessian \(\nabla ^2 F=\bf I\) 是正定的,故 \(F\) 是严格的凸函数;而约束 \(g _i\) 均为仿射函数,故该优化问题有唯一解。
(这类目标函数为平方次、约束为仿射的问题,属于二次规划问题 quadratic programming (QP),已有大量相关算法;对于 SVM 问题有 block coordinate descent 等算法)
由于约束都是仿射,该问题与对偶问题等价,因此转到对偶问题:

引入 Lagrange 变量 \({\boldsymbol{\alpha}}=(\alpha _1, \dotsb, \alpha _m)'\ge 0\),定义 Lagrangian \({\cal L}({\bf w}, b, {\boldsymbol{\alpha}})\) 并给出最优解的 KKT 条件:

\[{\cal L}({\bf w}, b, {\boldsymbol{\alpha}}) = \frac{1}{2}\Vert {\bf w} \Vert ^2 + \sum _{i=1} ^m \alpha _i [1- y _i({\bf w\cdot x} _i + b)]\\ \begin{aligned} & \nabla _{\bf w}{\cal L}={\bf w}-\sum _{i=1} ^{m}\alpha _i y _i {\bf x} _i = 0 &&\implies {\bf w}=\sum _{i=1} ^{m}\alpha _i y _i {\bf x} _i \\ & \nabla _{b}{\cal L}=-\sum _{i=1} ^{m}\alpha _i y _i = 0 &&\implies \sum _{i=1} ^{m}\alpha _i y _i = 0 \\ & {\boldsymbol{\alpha}}\cdot {\bf g}({\bf w},b)=0 &&\implies \forall i\in [m],\alpha _i =0\vee y _i({\bf w\cdot x} _i + b)=1 \end{aligned} ;\text{KKT} \]

根据条件,\(\bf w\) 为若干 \(\alpha _i\) 不为零的样本 \({\bf x} _i\)(称为支持向量 support vector)的线性组合,且这些向量必定落在 \({\bf w\cdot x} + b=\pm 1\) 的平面上。注意到即使 \(({\bf w},b)\) 有唯一解,\(\boldsymbol{\alpha}\) 却不一定唯一,因为只需要 \(N+1\) 个向量就能定义一个 \(N\) 维平面
利用 KKT 条件消去 \({\bf w}, b\),得到对偶问题:

\[{\boldsymbol{\alpha}} = \underset{\boldsymbol{\alpha}}{\text{arg max}} {\cal L}=\underset{\boldsymbol{\alpha}}{\text{arg max}} \sum _{i=1} ^m \alpha _i - \frac{1}{2}\sum _{i=1} ^m \sum _{j=1} ^m (\alpha _i y _i {\bf x} _i) \cdot (\alpha _j y _j {\bf x} _j) \\ subject\ to: {\boldsymbol{\alpha}}\ge {\bf 0}\wedge \Sigma _{i=1} ^{m}\alpha _i y _i = 0 \]

这个问题同样是凸优化问题(\(\nabla ^2 _{\boldsymbol{\alpha}}{\cal L}\preceq\bf 0\),concave,且为二次项,是 QP 问题,可用 SMO 算法解决)
解出 \({\boldsymbol{\alpha}}\) 后,就能得到对偶原问题的解:

\[{\bf w}=\sum _{i=1} ^{m}\alpha _i y _i {\bf x} _i,\quad b=y _{sv} - {\bf w \cdot x} _{sv}\quad;\text{for any support vector $sv$} \]

从而得到假设平面 \(h(\bf x)\)

\[h({\bf x})=\text{sgn}({\bf w\cdot x} + b)=\text{sgn}\left(\sum _{i=1} ^m \alpha _i y _i({\bf x} _i\cdot {\bf x}) + b\right) \]

注意到假设平面只用到支持向量与输入向量的内积,我们之后在这一点上可以做文章,例如引入核方法
最后,几何间隔 \(\rho ^2=1/{\Vert\bf w \Vert _2 ^2}=1/\sum _{i=1} ^m \alpha _i=1/{\Vert\boldsymbol{\alpha}\Vert _1}\),证明只需上述求 \(b\) 的式子两边同乘 \(\sum \alpha y\) 即可

Leave-one-out analysis
依然认为样本标签为通过某个超平面映射、始终是线性可分的
我们给泛化误差(的期望)一个上界,分析式子:

\[\begin{aligned} \mathbb{E} _{S\sim \cal D ^m}[R(h _S)] &= \mathbb{E} _{S\sim \cal D ^m}\left[\mathbb{E} _{x\sim \cal D}[1 _{h _S(x)\ne y}]\right] \\ &= \mathbb{E} _{S\sim \cal D ^m, x\sim \cal D}\left[1 _{h _S(x)\ne y}\right] \\ &= \mathbb{E} _{S'\sim \cal D ^{m+1}}\left[1 _{h _{S‘/{x _1}}(x _1)\ne y _1}\right]=\mathbb{E} _{S'\sim \cal D ^{m+1}}\left[1 _{h _{S’/{x _2}}(x _2)\ne y _2}\right]=\cdots \\ &= \mathbb{E} _{S'\sim \cal D ^{m+1}}\left[\frac{1}{m+1}\sum _{i=1} ^{m+1} 1 _{h _{S'/\{x _i\}}(x _i)\ne y _i}\right] \end{aligned} \]

期望式内类似对 \(m+1\) 个样本使用留一法,因此定义算法 \(\cal A\) 对样本 \(S'=((x _1,y _1),\dots, (x _{m+1}, y _{m+1}))\) 的 Leave-one-out error \(\widehat{R} _\text{LOO}({\cal A})\),为用剩余样本分类留出样本的平均误差,并对其放缩:

\[\widehat{R} _\text{LOO}({\cal A}) = \frac{1}{m+1}\sum _{i=1} ^{m+1} 1 _{h _{S'/\{x _i\}}(x _i)\ne y _i} \le \frac{N _{SV}(S')}{m+1} \]

其中 \(N _{SV}(S')\) 是用 SVM 分类 \(S'\) 得到的支持向量个数;显然若某个 \(x _i\) 贡献了误差,那么它必定是支持向量之一,否则去掉它不会对分类平面造成影响
结合上述式子,得到:

\[\mathbb{E} _{S\sim \cal D ^m}[R(h _S)]\le \mathbb{E} _{S'\sim \cal D ^{m+1}}[\frac{N _{SV}(S')}{m+1}] \]

这就是我们的上界。一般来说支持向量不会太多,所以右式应该不会很大;但是这个式子只对所有情况的平均值给出上界,并不是之前提到 PAC 形式。后面会给出更强的 high-probability bounds。

5.3 Non-separable case

标签:bf,frac,Vert,cdot,Support,Vector,Ch5,cal,alpha
From: https://www.cnblogs.com/zhyh/p/17649455.html

相关文章

  • 什么是企业管理软件 Customer Support 领域的 ORT
    在企业管理软件的CustomerSupport领域,ORT是OperationalResponseTime的缩写,它指的是从接收到客户问题到解决问题所需要的时间。这个指标对于评估和改进客户服务的效率和效果至关重要。首先,我们要清楚OperationalResponseTime(ORT)是一个衡量客户服务质量和效率的关键......
  • 20230608 java.util.concurrent.locks.LockSupport
    介绍java.util.concurrent.locks.LockSupportpublicclassLockSupportAPIstaticsetCurrentBlockervoidsetCurrentBlocker(Objectblocker)设置当前线程的阻塞对象getBlockerObjectgetBlocker(Threadt)返回提供给最近一次调用尚未解除阻塞的park方法的阻塞......
  • 跨版本迁移数据报错tables declared WITH OIDS are not supported
    瀚高数据库目录环境症状问题原因解决方案环境系统平台:Linuxx86-64RedHatEnterpriseLinux7版本:6.0症状迁移数据还原数据库时报错ERROR:tablesdeclaredWITHOIDSarenotsupported问题原因Postgresql12后取消了OIDS=TRUE的用法。解决方案修改脚本中的语句脚本中出现OIDS=T......
  • C++ Vector数组优化
    Vector数组优化问题这是一段没有优化的代码:#include<iostream>#include<vector>classEntity{public: intx,y;public: Entity(intx,inty) :x(x),y(y){} Entity(constEntity&e) :x(e.x),y(e.y){ std::cout<<"Copied!"<<st......
  • vector类的模拟实现
    一、vector的介绍vector的文档介绍1、vector是表示可变大小数组的序列容器。2、就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。3、本......
  • 一文读懂LockSupport
    阅读本文前,需要储备的知识点如下,点击链接直接跳转。java线程详解Java不能操作内存?Unsafe了解一下LockSupport介绍搞java开发的基本都知道J.U.C并发包(即java.util.concurrent包),所有并发相关的类基本都来自于这个包下,这个包是JDK1.5以后由祖师爷DougLea写的,LockSupport也是在这......
  • 模拟实现vector
    首先要知道vector是什么vector是什么 1.vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。本质......
  • C++ save vector or float to bin
    voidsave_bin(std::vector<float>&data_vector,std::stringname="mnn.bin"){std::ofstreamoutFile(name,std::ios::out|std::ios::binary);......
  • GitHub: remote:Support for password authentication was removed on August 13,2021
    使用gitpushoriginmaster向远程仓库推送时被告知:remote:SupportforpasswordauthenticationwasremovedonAugust13,2021.Pleaseuseapersonalaccesstokeninstead.ush的时候需要输入github的账户名和密码,而这里的大概意思就是密码验证在2021年8月13号被移除了,需要......
  • 忘记LockSupport怎么用了?那我们举个有趣的小例子,永远记住它!
    概述LockSupport是一个非常方便实用的线程阻塞工具,它可以在线程内任意位置让线程阻塞。和Thread.suspend()相比,它弥补了由于resume()在前发生,导致线程无法继续执行的情况。和Object.wait()方法相比,它不需要先获得某个对象的锁,也不会抛出InterruptedException异常。park()可以阻塞......