【机器学习】SVM浅谈

来源:互联网 发布:开源wiki系统 java 编辑:程序博客网 时间:2024/05/22 03:51

SVM对于中小规模的数据来说是非常好的模型。由于其可以用数学严谨的推导出结果,可解释性比较强,所以在工业上应用的比较广。


一,SVM的推导
简单起见先考虑SVM在线性的二分类中的应用。


图1

如图1所示svm的目的就是找到一条直线能够很好的将正、负样本“很好的”分开。这个“很好的”是指对于样本的鲁棒性比较好,及时样本点受到一点噪声也不会影响分类的结果,比较直观的看就是正负样本点离分割线的距离比较远。这就是svm的关键点之一:
KEY 1:分割线与正负样本的间隔越大越好。
那么就有如下公式:

 

w为分割线的法向量,u为要判断的样本点,通过公式来判断样本对是正样本还是负样本。
此时svm的目标是找到合适的w ⃗和b来使对新样本的判断比较正确。
在训练样本中,对于正负样本的存在如下的不等式,即svm的最大间隔假设:


其中离分割线最近的正负样本点(就是图1中出现在分割线两遍绿色边界线上的点)称作“支持向量点”,Vector Point,这些点能够使公式(3)上的等号成立。
 图1中的边界的距离margin为,正样本向量减去负样本的向量然后向边界的法向量上的投影:如图2:


图2
如图2所示,margin长度d为正样本X+与负样本X-的差并在分割线法向量上的投影,公式如下:



只有“支持向量点”对应的α_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




0 0