SVM现在主流的有两个方法。一个是传统的推导,计算支持向量求解的方法,一个是近几年兴起的梯度下降的方法。 梯度下降方法的核心是使用了hinge loss作为损失函数,所以最近也有人提出的深度SVM其实就是使用hinge loss的神经网络。

本文的目的是讲解传统的推导。

SVM的超平面

SVM模型的基本原理,就是寻找一个合适的超平面,把两类的样本正确分开。单个SVM只能处理二分类,多分类需要多个SVM。

【什么是超平面?】

超平面就是n维度空间的n-1维度的子空间。换成人话就是2维空间中的1维度的线,三维立体空间的二维平面。



图中总共有5个超平面,那么哪一个是最好的呢?我们认为中间的那个是最好的。因为他对两侧的间隔较大。

SVM基本型

超平面我们可以用这个方程来表示:

\(\bm{w^Tx}+b=0\)

空间中任意一个点x到这个超平面的垂直距离为:

\(d = \frac{|\bm{w^Tx}+b|}{||\bm{w}||}\)

这里不得不提到一下逻辑回归,对于逻辑回归来说:



就是在超平面一侧的样本,逻辑回归给出的预测类别是1,另外一侧就是0.

但是SVM觉得这样有一些过于绝对了,所以:



不仅仅要一个样本在平面的一侧,还要在平面的这一侧足够远的地方,才能算作某一类的样本。



从图中可以看到,两条虚线之外的点,才是SVM能确定是正样本还是负样本的点。

【什么是支持向量?】

图中距离超平面最近的几个训练样本,并且这几个训练样本可以让上式的等号成立。这个点就是支持向量。

【什么是SVM的间隔】

两个不同类别的支持向量到超平面的最小距离之和。其实也就是\(\frac{2}{||w||}\)


到这里,我们可以隐隐约约的发现,寻找最优的超平面其实等价于寻找一个最大的间隔,或者说让间隔最大化。所以可以得到:

\(\max_{w,b} \frac{2}{||\bm{w}||}\)

这个的约束条件就是:让SVM给正样本的打分大于1,给负样本的打分小于-1,也就是:

简化一下这个约束条件,可以得到:

\(y_i(\bm{w^Tx_i}+b)>=1\)

一般我们都是求取最小化问题,所以把最大化max问题取倒数,变成最小化问题:

\(\min_{w,b} \frac{||\bm{w}||}{2}\)

这里为了后续的计算方便,最小化\(||w||\)等价于最小化\(||w||^2\),所以得到:

\(\min_{w,b} \frac{||\bm{w}||^2}{2}\)

总之SVM的基本型就是:

SVM求解

现在求得了基本型。现在可以来进一步优化这个最小化问题。但是首当其冲的问题便是,如何处理这个约束条件。这里用到的方法是拉格朗日乘子法。将约束条件以\(\alpha_i\)的权重加入到优化问题中,所以可以得到:

\(Loss(\bm{w},b,\bm{\alpha})=\frac{1}{2}||w||^2+\sum^m_{i=1}\alpha_i(1-y_i(w^Tx_i+b))\)

  • 这里的loss就是我们要最小化的对象;
  • 这里的m就是支持向量的数量。

为了最小化这个问题,对w和b求偏导数,可以得到:

\(w = \sum^m_{i=1}{\alpha_iy_ix_i}\)

\(0 = \sum^m_{i=1}{\alpha_iy_i}\)

然后把这两个公式代入到:

\(Loss(\bm{w},b,\bm{\alpha})=\frac{1}{2}||w||^2+\sum^m_{i=1}\alpha_i(1-y_i(w^Tx_i+b))\)

可以消掉w和b,得到:



约束条件为:



从而根据这个计算出\(\alpha_i\)的取值,然后得到w和b的取值。

【到底如何求解\(\alpha\)?】

上面说的最后一部求解alpha,都是理论可以求解,但是实际中如何做到呢?其实这里如何求解\(\alpha\)要用到另外一个条件。

就是上述过程要满足一个叫做KKT的条件(KKT具体是什么有点复杂,就不多说了):

  • 想要第三个公式成立,要么\(\alpha_i\)等于0,要么\(y_if(x_i)-1=0\).如果alpha=0,那么意味着这个样本不是支持向量,不应该对SVM超平面起到任何影响,所以是不可能的。所以只有\(y_if(x_i)-1=0\)。

加上了这个条件,我们可以求解出来\(\alpha_i\)的具体数值,然后求解w和b的数值。

假设有3个支持向量,那么就会有三个\(\alpha_1, \alpha_2, \alpha_3\) ,然后根据\(y_if(x_i)-1=0\)可以列出3个关于\(\alpha_1,\alpha_2,\alpha_3\)的三元一次方程组,然后得到唯一解。





AI面试之SVM推导的更多相关文章

  1. AI面试必备/深度学习100问1-50题答案解析

    AI面试必备/深度学习100问1-50题答案解析 2018年09月04日 15:42:07 刀客123 阅读数 2020更多 分类专栏: 机器学习   转载:https://blog.csdn.net ...

  2. ML-线性 SVM 推导

    Max Margin svm 即Suport Vector Machine, 中文意为:支持向量机. 对于二分类问题, 在样本空间中(即便是多维向量, 在空间中可表示为一个点). svm的核心思想就是 ...

  3. 统计学习方法—SVM推导

    目录 SVM 1. 定义 1.1 函数间隔和几何间隔 1.2 间隔最大化 2. 线性可分SVM 2.1 对偶问题 2.2 序列最小最优算法(SMO) 3. 线性不可分SVM 3.1 松弛变量 3.2 ...

  4. AI面试刷题版

    (1)代码题(leetcode类型),主要考察数据结构和基础算法,以及代码基本功 虽然这部分跟机器学习,深度学习关系不大,但也是面试的重中之重.基本每家公司的面试都问了大量的算法题和代码题,即使是商汤 ...

  5. 2019收藏盘点(编程语言/AI/面试/实用工具)

    2020.1.5更新 我看过的后面会加上评价 编程学习 java开源项目汇总: https://github.com/Snailclimb/awesome-java 大数据学习入门: https:// ...

  6. 五、SVM推导过程

    SVM 时间复杂度一般为O(N³) 最重要的是推导过程 NIPS(机器学习顶级会议) 如果给定一个训练集,我们的目标是给定一个边界(一条线),离他最近的训练集样本路越宽越好 下面的几张图反映了SVM的 ...

  7. SVM推导

    标准最大margin问题 假设data是linear seperable的 优化目标 希望 margin(w),i.e, 最小的点到直线的距离 最大 即是要得到最右的线,它对噪声的鲁棒性最好 得到的分 ...

  8. AI面试-算法结构基础

    其实目前国内几乎只要是技术岗,面试中都100%会问算法和数据结构. 这两者能快速体现候选人真实的水平,比如代码量,代码的质量,性能,思维是否有逻辑,是否灵活. 算法结果概述 1.前言 1.应用范围:机 ...

  9. 1.2 linear SVM 推导

    1.将公式中的distance具体化 将$w_0$单独抽出作为$b$,$w=(w_1,...,w_n),x=(x_1,...,x_n)$ 则分割平面为:$w^Tx+b=0$ A.证明w为法向量     ...

随机推荐

  1. ArrayList、Vector、LinkedList 区别及底层实现

    一.ArrayList.Vector.LinkedList 三者区别 1.ArrayList  底层:是数组结构,查询快,增删慢,线程不安全,效率高.2.LinkedList底层:是链表数据结构,查询 ...

  2. springboot @Cacheable 基本使用

    加入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>sp ...

  3. 【原】二进制部署 k8s 1.18.3

    二进制部署 k8s 1.18.3 1.相关前置信息 1.1 版本信息 kube_version: v1.18.3 etcd_version: v3.4.9 flannel: v0.12.0 cored ...

  4. Json序列化帮助类

    public static class Json { public static object ToJson(this string Json) { return Json == null ? nul ...

  5. DOM-BOM-EVENT(6)

    6.BOM 6.1.什么是BOM? BOM(Browse Object Model),浏览器对象模型,没有相关标准,是约定俗成的东西,定义了一些操作浏览器的方法和属性,大部分方法都是通过window对 ...

  6. CentOS/RHEL 6.4/5.9 安装 Adobe Flash Player 11.2

    1.root登录: $ su 2.安装 Adobe YUM Repository RPM package X86_64 ________________________________________ ...

  7. 模拟elementUI或使用自定义属性简单封装对话框

    前言 现在前端框架有许多的UI框架可以选择,但是样式或者功能不一定是我们项目中想要的,因此很多时候需要自己封装.此篇文件简单介绍一下利用自定义标签或者自定义扩展属性来封装UI组件,方便项目的其他地方复 ...

  8. 10 个独特的 CSS 背景视觉效果

    这几年的web设计中,大背景的设计变得越来越流行.特别是在现在大屏大行其道的情况下,设计师在设计中越来越多的使用大分辨率的背景图来填充屏幕,这样更能制造独特的视觉效果,能更好的传达他们想要向用户传达的 ...

  9. P1004 方格取数——奇怪的dp

    P1004 方格取数 题目描述 设有 \(N\times N\) 的方格图 \((N\leq 20)\),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字 \(0\) .如下图所示(见样例) ...

  10. DVWA学习记录 PartⅨ

    XSS(DOM) 1. 题目 XSS,全称Cross Site Scripting,即跨站脚本攻击,某种意义上也是一种注入攻击,是指攻击者在页面中注入恶意的脚本代码,当受害者访问该页面时,恶意代码会在 ...