SVM对于中小规模的数据来说是非常好的模型。由于其可以用数学严谨的推导出结果,可解释性比较强,所以在工业上应用的比较广。
一,SVM的推导
简单起见先考虑SVM在线性的二分类中的应用。
图1
如图1所示svm的目的就是找到一条直线能够很好的将正、负样本“很好的”分开。这个“很好的”是指对于样本的鲁棒性比较好,及时样本点受到一点噪声也不会影响分类的结果,比较直观的看就是正负样本点离分割线的距离比较远。这就是svm的关键点之一:
KEY 1:分割线与正负样本的间隔越大越好。
那么就有如下公式:
w为分割线的法向量,u为要判断的样本点,通过公式来判断样本对是正样本还是负样本。
此时svm的目标是找到合适的w ⃗和b来使对新样本的判断比较正确。
在训练样本中,对于正负样本的存在如下的不等式,即svm的最大间隔假设:
其中离分割线最近的正负样本点(就是图1中出现在分割线两遍绿色边界线上的点)称作“支持向量点”,Vector Point,这些点能够使公式(3)上的等号成立。
图1中的边界的距离margin为,正样本向量减去负样本的向量然后向边界的法向量上的投影:如图2:
只有“支持向量点”对应的α_i才不为0,其他的α_i都为0。可以使用QP或者是SMO来求得一组α_i的值及其对应的x_i的值来,这样就能得到要求的支持向量模型。
二,SVM核函数
若训练集为非线性的,那么与线性的类似,非线性中关心的也是变换之后的样本点的点乘ρ(x_1 )*ρ(x_2),核函数是两个线性变化之后的点乘:k(x_1,x_2 )=ρ(x_1 )*ρ(x_2)
只要一个对称函数所对应的核矩阵半正定,它就能作为核函数。常用的作为核函数的函数有:
另外还可以函数组合得到核函数,若k_1和k_2为核函数,那么他们的线性组合也是核函数:a*k_1+b*k_2