机器学习 | 深刻SVM原理及模型推导(一)

本文始发于我的公众号:TechFlow,原创不易,求个关注面试


今天是机器学习专题的第32篇文章,咱们来聊聊SVM。算法

SVM模型你们可能很是熟悉,可能都知道它是面试的常客,常常被问到。它最先诞生于上世纪六十年代。那时候虽然没有机器学习的概念,也没有这么强的计算能力,可是相关的模型和理论已经提出了很多,SVM就是其中之一。机器学习

SVM彻底能够说是经过数学推导出来的模型,因为当时尚未计算机,因此模型当中的参数都是数学家们用手来算的。它有一个巨大的应用就是前苏联的计划经济体系,咱们知道在计划经济当中,国家有多少社会资源,每样商品须要生产多少都是国家统筹规划的。函数

可是国家和社会不是一成不变的,去年消耗了多少粮食不意味着今年也会消耗这么多,不少因素会影响。因此当时前苏联的科学家们用当时最早进的方法来计算参数预测各项商品的消耗来完成社会资源的调度,这个最早进的方法就是SVM。学习

废话说了这么多,下面咱们就来看看这个模型实际的原理吧。spa


算法描述


SVM的英文全称是Support Vector Machine,翻译过来的意思是支持向量机。不管是英文仍是中文,咱们直观上有些难以理解。翻译

难以理解没有关系,咱们先把支持向量这个概念放一放,先来介绍一下它总体的原理。3d

SVM最基本的原理就是寻找一个分隔“平面”将样本空间一分为二,完成二分类。进一步咱们能够知道,对于二维的平面,咱们要分隔数据须要一条线。对于三维的空间咱们要分开须要一个面,发散开去对于一个n维的空间,咱们要将它分开须要一个n-1的超平面。blog

SVM寻找的就是这样的超平面,为了方便理解,咱们以最简单的二维场景为例。资源

咱们观察一下上图,很明显图中的数据能够分红两个部分。对于上图的数据而言理论上来讲咱们有无数种划分的方法,咱们既能够像左边这样随意的划分,也能够像右边这样看起来严谨许多的划分,在这么多划分方法当中究竟哪种是最好的呢?咱们怎么来定义划分方法的好和坏呢?

SVM对这个问题的回答很干脆,右图的划分是最好的,缘由是它的间隔最大

从图中咱们能够看到,间隔也就是被划分红两个部分之间最接近的距离,间隔正中的这条红线就是SVM找到的用来划分的超平面。

咱们进一步观察能够发现,对于间隔这个事情来讲,绝大多数样本都不起做用,可以起做用的只有在落在虚线上也就是间隔边缘的样本。是这些样本肯定了间隔,从而间接肯定了分隔平面,支撑起了模型。

因此SVM当中把这些落在边缘上的样本成为支持向量,这也是SVM得名的由来。


模型推导


咱们首先来考虑最简单的状况,即线性可分,也就是说全部样本均可以被正确的划分。这样划分出来获得的间隔是实实在在的,因此咱们把线性可分的状况下的间隔称为硬间隔

首先咱们先写出这个分隔平面的公式:

\[\omega^Tx+b = 0 \]

其中x表示一条n维的样本特征组成的向量,\(\omega\)是平面的n维法向量,决定平面的方向。虽然从公式上来看和线性回归很像,可是它们之间的本质区别是线性回归是用来拟合label的,而SVM的平面方程是用来肯定平面方向的。这里的b就是简单的偏移量,表示平面距离原点的距离。

表示出来分隔平面以后,咱们就能够表示出每个样本距离平面的距离:

\[\gamma = \frac{|\omega^Tx + b|}{||\omega||} \]

这个公式看起来好像不太明白,其实它是由二维的点到平面的距离公式演化获得的:\(d = \frac{|Ax + By + c|}{A^2 + B^2}\)

这里的\(||\omega||\)是一个L2范数,咱们把它也展开能够写成:\(||\omega|| = \sqrt{\sum_{i=1}^k \omega_i^2}\)


模型假设


这里咱们作一点假设,对于样本当中的点,在分隔平面上方的类别为1,在分隔平面下方的类别为-1。那么咱们能够进一步获得\(\omega x_i +b\)应该和\(y_i\)同号。因此咱们能够写成:\(y(\omega^T x + b) > 0\)

咱们来观察支持向量,也就是恰好在间隔边缘的点,它们到分割平面的距离恰好是间隔的一半。咱们假设这个点的函数值是\(\gamma\),咱们把它表示出来能够获得:

\[\begin{aligned} y_i(\omega^T x_i + b)&=\gamma\\ y_i(\frac{\omega}{\gamma}x_i + \frac{b}{\gamma}) &= 1 \end{aligned} \]

咱们令新的\(\hat{\omega} = \frac{\omega}{\gamma}\),新的\(\hat{b}= \frac{b}{\gamma}\)。也就是说咱们经过变形能够将函数值缩放到1,为了方便计算,咱们选取恰当的参数,使得间隔恰好为1。既然如此,对于全部的样本点,咱们均可以获得\(y_i(\omega^Tx_i + b) \ge 1\),对于支持向量来讲\(y_i(\omega^Tx_i + b)\)=1。

利用这点,咱们能够表示出间隔:

\[\gamma = 2\frac{|\omega^Tx + b|}{||\omega||} = \frac{2}{||\omega||} \]

\(\frac{2}{||\omega||}\)是一个分数,咱们要求它的最大值,也就是求\(||\omega||^2\)的最小值。咱们想要在线性可分的基础上让这个间隔尽可能大,因此这是一个带约束的线性规划问题,咱们把整个式子写出来:

接下来咱们要作的就是在知足约束的前提下找到使得\(\frac{1}{2}||\omega||^2\)最小的\(\omega\),这个式子看起来很是麻烦,又有不等式掺和在里面,那么咱们应该怎么办呢?

这部份内容咱们将会在下一篇文章分享,敬请期待。

今天的文章到这里就结束了,若是喜欢本文的话,请来一波素质三连,给我一点支持吧(关注、转发、点赞)。

相关文章
相关标签/搜索