看了很久了SVM了,虽然还是懵懵的状态,但还是想尝试写一下。看看自己到底掌握了多少。
什么是超平面?什么是支持向量?
超平面其实就是是一个比数据所在空间低一个维度的线性子空间。
支持向量也叫支撑向量就是距离超平面为d的正负样本点。
支持向量机其实就是一个分类器。分类器去寻找一个超平面,将两组数据分开。能够将两组数据分开的超平面有很多,而分类器需要找的是距离支持向量最远的那个超平面。如下图所示:
![支持向量机(Support Vector Machine) 支持向量机(Support Vector Machine)](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzQ2OS84NDE0Nzk2MDc3N2I5ODYyNzZmNDRiMDk4OTc0NGNmZC5wbmc=)
根据上述描述,支持向量其实就是找一个超平面,超平面满足距离支持向量在最远。
distance(样本点,超平面)这个函数是求样本点到超平面的距离,min(distance(样本点,超平面))是求样本点距离超平面最近的距离,在这个位置的点都是支持向量。而我们需要做的是max(min(distance(样本点,超平面)))使支持向量距离超平面最远。
求点到距离的公式为:
d=∣∣w∣∣wTx+b
支持向量求法:
maxmin(∣∣w∣∣wTx+b)i=1....n 求最大间隔超平面,需要满足以下条件: s.t.f(x)={∣∣w∣∣wTx+b>=+d,∣∣w∣∣wTx+b<=−d,yi = 1yi= -1
根据点到距离公式找到支持向量后设支持向量距离超平面的最近距离为d=min(∣∣w∣∣wTx+b),样本点固定后wTx+b为常数则我们求的max(∣∣w∣∣wTx+b)可写为max(∣∣w∣∣1),优化问题中我们一般只求min,max(∣∣w∣∣1)=min(1∣∣w∣∣)为了方便后期的求导运算,将||w||求平方。min(1/2∣∣w∣∣2)。
支持向量求法:
min(1/2∣∣w∣∣2) 求最大间隔超平面,需要满足以下条件: s.t.yi(wTxi+b)<=1