量子位|SVM原理详细图文教程!一行代码自动选择核函数,还有实用工具


贾浩楠 发自 凹非寺
量子位 报道 | 公众号 QbitAI
SVM?老分类算法了 , 轻松拿下 。
然而 , 每一次老板让你讲解SVM , 或每一次面试被问到SVM , 却总是结结巴巴漏洞百出 。
「这些人怎么总能精准发现我的盲点?」
简直让人怀疑自己掌握的是假SVM 。
如果你有这样的问题 , 那这篇SVM数学原理对你会有很大帮助 , 一起来看看吧 。
SVM 由线性分类开始
理解SVM , 咱们必须先弄清楚一个概念:线性分类器 。
给定一些数据点 , 它们分别属于两个不同的类 , 现在要找到一个线性分类器把这些数据分成两类 。
如果用x表示数据点 , 用y表示类别(y可以取1或者-1 , 分别代表两个不同的类) , 一个线性分类器的目标是要在n维的数据空间中找到一个超平面(hyper plane) , 将x的数据点分成两类 , 且超平面距离两边的数据的间隔最大 。
量子位|SVM原理详细图文教程!一行代码自动选择核函数,还有实用工具
本文插图

这个超平面的方程可以表示为( wT中的T代表转置):
量子位|SVM原理详细图文教程!一行代码自动选择核函数,还有实用工具
本文插图

量子位|SVM原理详细图文教程!一行代码自动选择核函数,还有实用工具
本文插图

△2维坐标系中 , 超平面是一条直线
当f(x)等于0的时候 , x便是位于超平面上的点 , 而f(x)大于0的点对应 y=1 的数据点 , f(x)小于0的点对应y=-1的点 。
SVM 想要的就是找到各类样本点到超平面的距离最远 , 也就是找到最大间隔超平面 。 任意超平面可以用下面这个线性方程来描述:
量子位|SVM原理详细图文教程!一行代码自动选择核函数,还有实用工具
本文插图

二维空间点(x , y)到直线Ax+By+C=0的距离公式是:
量子位|SVM原理详细图文教程!一行代码自动选择核函数,还有实用工具
本文插图

扩展到n维空间后 , 点x=(x1 , x2……xn)到直线wTx+b=0的距离为:
量子位|SVM原理详细图文教程!一行代码自动选择核函数,还有实用工具
本文插图

其中 :
根据支持向量的定义 , 支持向量到超平面的距离为d , 其他点到超平面的距离大于d 。
于是有:
量子位|SVM原理详细图文教程!一行代码自动选择核函数,还有实用工具
本文插图

||w||d是正数 , 令它为 1(之所以令它等于 1 , 是为了方便推导和优化 , 且这样做对目标函数的优化没有影响) , 于是:
将两个方程合并 , 有:
至此 , 就得到了最大间隔超平面的上下两个超平面 。
量子位|SVM原理详细图文教程!一行代码自动选择核函数,还有实用工具
本文插图

每个支持向量到超平面的距离可以写为:
量子位|SVM原理详细图文教程!一行代码自动选择核函数,还有实用工具
本文插图

由 y(wTx+b)>1>0 可以得到 y(wTx+b)=|wTx+b| , 所以可以将支持向量到超平面距离改写为:
量子位|SVM原理详细图文教程!一行代码自动选择核函数,还有实用工具
本文插图

最大化这个距离:
量子位|SVM原理详细图文教程!一行代码自动选择核函数,还有实用工具
本文插图

这里乘上 2 倍是为了后面推导方便 , 对目标函数没有影响 。
带入一个支持向量 , 可以得到:
所以得到的最优化问题是:
处理异常值
有时 , 对于某些点(x(i) , y(i)) , 分类器可能会做出错误操作 。


推荐阅读