OccamsRazor 2018-02-07
本文只讲述支持向量机(svm)的基础,不涉及任何高深东西。
先看一图:
我们第一直觉就是在两堆点中间画一根线,分开两类点。下面问题来了,能够区分两堆点的线有好多,怎么区分哪个好?这就引出了**街宽(margin)**的概念:
上面两条曲线,我们可以用下面的两个公式表达:此处我们为什么选择常数1?因为如果假设是常数k,我们总可以通过两边同时除以k,对w和b进行缩放,让等式右边变为1.
上面两个式子可以统一为:
下面我们来计算街宽:
我们通过下面公式来计算街宽。我们现在知道街宽只和w相关,下面是我们的优化目标:
此时所有(x,y)满足:
总结下目前的优化目标:
我们通过拉格朗日可以将其转换为下面的求极值问题:推导到这里,我们可以通过一些数学的工具包解出来。当我们求出后,我么就能将w,b带回原来的式子,得到:支持向量机中中一个很重要的概念就是支持向量,让我们来看上面推导中的式子:
上面红色部分,对于那些不在“站街”上的点,其值肯定是大于0的,因此为了取得最大值,最好的方式就是让,因此我们在判断式子中,只需要计算的那些和新加入点x的点积即可。一个形象说明:线性空间到非线性空间变化,从而使得数据线性可分:
核函数的意义在于:我们不需要知道具体的映射函数是什么[由于太复杂我们也求不出