SVM的理解

今天上午刚刚面了滴滴出行的新锐计划,面试官问道svm的两个参数,感觉自己答的不好,回顾一下:



支持向量机的大致分为上述3类,线性可分支持向量机使分割直线(二维),平面(三维)、超平面(高维)使类间的距离最大化,对于无法用直线,平面完全分割的数据,我们允许稍微存在一点误差也就是软间隔对大化,非线性支持向量机是在上述两种支持向量机中引入核函数。

高维数据怎么判断线性可分呢?不管原始数据是什么样子,给定一个svm和核函数,一定使训练数据100%分类正确,假设存在两个凸集(坐标上的两堆数据)A,B不相交,那么一定存在一个直线、平面或者超平面将这两堆数据分开。,为什么一定存在呢?我们使用构造法,在集合A,B分别随意找两点a,b,然后a,b随意移动,总会等到某一时刻a,b之间的两线线的长度最短,那么作垂直于a,b连线的直线即可将两堆数据分开,同理高维数据就是超平面。有很多直线吧这两堆的数据区分开,但是如何确定最优的呢?

两个集合边界上的这些点起了非常重要的作用,以这些点为基础计算超平面的方向,这些支撑点起了绝对作用,但是并不是其他的点不起作用,若其他样本点的移动引起了支撑点的变化,从而也会引起全局支撑点的变化。

                                                             




对于上面一张图,只要直线在1和3之间,那么都可以把数据分开,那么如何寻找最优的直线呢?

点到直线的距离公式:,由于距离d>0,因此分子上取绝对值,若去掉绝对值符号,,对于一个未知的点(x,y)代入公式d1,则d1的符号决定了该点在直线的哪一侧。若直线本身是单位化的,即,则把未知点的坐标带入即可以求出d1。对于每一条直线(都可以把数据分开),我们都求出所有的点到该直线的距离,然后取最小值,最终选取所有最小值里面的最大值所代表的直线即是我们要寻找的直线。扩展到高维数据也是一样。

总结来说就是:所有样本到分割面的最小值最大

给定线性可分的训练数据集,通过间隔最大化得到的分离超平面:


和决策函数:


是某个确定的特征空间的转换函数,他的作用是吧x映射到更高维度。求解分离超平面问题可以等价为求解相应的凸二次规划问题。




对于一条给定的直线,系数是确定的,因此W的范数是确定的,所以我们把w的范数的倒数提到前面去,目标函数调整为:


假设我们找到所有样本中距离直线(Ax+By+C=0)的最近的点的距离为d,那么这个点到直线

的距离为1,总之我们可以调节权值w,使得最近的样本到直线的距离为1,那么其他点到直线的距离大于等于1.因此目标函数转换为:



接下来求条件极值的话,通过拉格朗日来求。




由于现在的拉格朗日函数小于原始目标函数,因此求拉格朗日函数的最大值等同于原始的目标函数,同时原始问题取最小值。随后对w和b求偏导数,另偏导数为0,然后再回带入拉格朗日函数中,最终未知参数只有a。

 

不一定分类完全正确的超平面就是最好的,margin越大,对预测数据的拟合就越好。

超参数C,g:










                                 












你可能感兴趣的:(机器学习数据挖掘,机器学习,svm)