支持向量机:问题转化的奥妙

198 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第3天,点击查看活动详情 支持向量机需要的理论知识:

  • 拉格朗日乘数法,需要了解这种方法能用于求多元函数最值,尽管可能解不出来

我们先从一个类似的模型切入,单层感知机。单层感知机是通过画一条线分割,三维则是面,更多维没法想象,称之为超平面。用来将对应的散点图分层两个区域(最简单的情况)

y=wx+by = wx +b

表达式上下就是两类。

而支持向量机是一个类似的想法。但是它是想找一个尽量宽的间隔带分割数据集,具体来说就是找到满足上面表达式的y 取 +1 和 -1的值,同时满足其他点在这两条线之外。这个时候。满足条件的x称之为 支持向量

这个时候我们其实已经有了约束条件和目标。要做的就是求解这个优化问题。

注意,取值为 +1和-1的两条直线实际上是平行的。而我们想要让它们尽量分开,所以需要求较大值的函数如下:

y=1(1)w=2wy = \frac{|1- (-1)|}{ ||w|| } = \frac{2}{||w||}

第一次问题转化在这之上,求y的最大值,就是求其倒数的最小值。又因为目标是一个范数,所以平方不改变其极值点。 所以目标变为:

y=w22y = \frac{||w||^2}{2}

并且取值范围为

yy^1y \cdot \hat y \ge 1

在这里就引入拉个朗日乘数法,再次改变目标函数。

L=w22+i=1nλi(1yiy^i)L = \frac{||w||^2}{2} + \sum_{i=1}^{n} \lambda_i (1-y_i\cdot \hat y_i)

y^\hat y的预测值实际上包含了w和b。

通过求偏导取各偏导为0的值解出w和b。带回目标。结果就会得到经典的所谓svm的对偶问题。

i=1nλi12i=1nj=1nλiλjyiyjxiTxj\sum_{i=1}^{n} \lambda_i - \frac {1}{2} \sum_{i=1}^{n}\sum_{j=1}^{n} \lambda_i \lambda_j y_i y_j x_i^T x_j
约束条件i=1nλiyi=0(由偏导得0得到)约束条件 \sum_{i=1}^{n} \lambda_i y_i =0 (由偏导得0得到)

其中得 xiTxjx_i ^ T x_j就是核函数做手脚的地方。因为仅仅只需要点积了,所有可以把特征映射简化成直接两个向量的某种运算,最后结果相当于点积就可以了。