1.支持向量机是什么?
支持向量机是一个超平面分类算法,他通过对已有标记的数据进行训练得出分类的超平面,对未知标记的点进行分类.
2.支持向量机的工作原理?
线性可分情况:
1.求平面wx+b=0,即求w和b的值.使得样本集中的点到平面的距离min yi(wTxi+b)/||w||的值关于xi最小.实际上是求
maxw,b (minxi (yi(wTxi+b)/||w||))
因为w,b前加一个系数不影响平面,所以令所有的yi(wTxi+b)>=1.其中最小的那些取等号.取等号的即为支持向量.
这里实际上是对w和b做了一次变换,设最小的那个点到平面的距离为r.令w'=w/r,b'=b/r.
2.转化为lagrange dual problem.
在加入假设之后实际上是求
maxw,b 1/||w||==>可以转化为minw ||w||2/2
s.t. yi(wTxi+b)>=1 i=1,...n
其lagrange函数为
minw,b θ(w)=minw,b maxαi,αi>0 L(α,w,b)=||w||2/2-Σiαi(yi(wTxi+b)-1)
因为是对αi求最值,所以lagrange函数问题θ(w)与原问题等价.这相当于把二次规划的限制条件放到了目标函数中去了.
这里是先求max再求min.因为svm的lagrange函数满足slater条件,同时满足KKT条件.所以先求max再求min与先求min再求max得出的结果是一样的.如果不满足条件则
max min f(x,y) 是 min max f(x,y)的一个下界.一个是顶上最矮的,一个是地上最高的. 因而我们求其对偶问题
maxαi,αi>0 minw,b L(α,w,b)=||w||2/2-Σiαi(yi(wTxi+b)-1) (1)
又有满足KTT条件: L(α,w,b)对w,b求导为0.即得
w=Σi αiyixi (2)
Σi αiyi = 0 (3)
将(2)代入(1)得
L(α,w,b)=Σiαi - (1/2)*Σj,iαiαjyiyjxTixj
这里消掉了w和b.成了α的函数,同时还有Σi αiyi = 0.于是这就是转化成的新的lagrange dual problem:
maxαi,αi>0 L(α,w,b)=Σiαi - (1/2)*Σj,iαiαjyiyjxTixj
Σi αiyi = 0 其中αi>=0
这一问题可以用SMO(序列最小最优化算法)求解α就可以通过(2)和wx+b=0解出w和b.最后给测试集x进行判断时就计算wx+b就可以了.
另外可以直接使用(2)导出wx+b=Σi αiyixTix+b.这里可以用支持向量和未知向量的内积来确认未知向量的类型.
线性不可分情况:
将数据从低维转化为高维,使其线性可分,然后使用同样的方法对其求解α,w,b.然后通过计算wx+b来确认.当然,这时的难点在于低维到高维的转化.同时,这里求出的w,b也是高维空间中的值,因为只有高维空间才线性可分,满足KKT条件.所有未知向量需要先转化为高维向量再代入计算.这样是非常麻烦的.同时高维向量的内积计算起来也很难.
这里有核函数将高维空间中的内积转化为低维空间中的计算.这样通过求α就可以进行计算了.其中有多项式核函数和指数核函数.
因为计算可以转化为高维空间中的内积,所以才可以使用核函数的方法.否则SVM的应用会更加难以推广