机器学习算法面试—口述(1):SVM介绍及常见问题

这个系列是为了应对找工作面试时面试官问的算法问题,所以只是也谢算法的简要介绍,后期会陆续补充关于此算法的常见面试的问题!


首先SVM是支持向量机support vector machine的缩写,它是现在使用比较广泛的一个分类算法(二分类),是一个线性分类器!

当数据是线性可分的时候:

SVM是在空间找一个分类超平面,将数据分开,下面以二维为例


《机器学习算法面试—口述(1):SVM介绍及常见问题》《机器学习算法面试—口述(1):SVM介绍及常见问题》

(1) (2)

SVM要做的就是找到(1)中间那条线(三维的话是一个面,更高维是一些其他什么的。。。),但是光找到那条线是不够的,因为这样的线是有无数条的(2)。显然(2)中中间的那条要比旁边的那两条要好,因为它与两边的数据的隔得很开,分类时候抗噪性能比旁边那两条要好。那么如何找到中间那条线呢,这就是SVM要解决的问题。

《机器学习算法面试—口述(1):SVM介绍及常见问题》


如上图,《机器学习算法面试—口述(1):SVM介绍及常见问题》《机器学习算法面试—口述(1):SVM介绍及常见问题》,得到《机器学习算法面试—口述(1):SVM介绍及常见问题》,之后转化为最优化的问题,由于直接最大化最大间隔是一个非凸优化问题,将其转换为求最大间隔与||W||的比值(满足的条件是f(x) >= 最大间隔),为了计算方便,将最大间隔置为1,这也是我们看到的最终需优化的式子。

《机器学习算法面试—口述(1):SVM介绍及常见问题》


显然优化这样的式子,肯定是拉格朗日乘子法,这个式子不太好求,将1/||w||转换为0.5*||w||*||w||,

《机器学习算法面试—口述(1):SVM介绍及常见问题》,令《机器学习算法面试—口述(1):SVM介绍及常见问题》,也即求min(max…),

转化为对偶问题有式子min(max..) >= max(min..)(求这项),之所以转化为对偶问题,一是两个式子解相仿,而是求解更简便。上面的式子满足KKT条件,求解得到L(w,b,a)是一个关于a的式子。

之后的优化工作就交个了一个叫做SMO(序列最小化算法)。

当数据是线性不可分的情况下,SVM求解分类的超平面是使用核函数。有的数据在低维空间不可分,但是映射到高维空间后它可能是线性可分的,比如,一维线上的点不线性可分,映射到二维(平方函数)就可能可以分开了。但是在映射的时候有一个问题,是一个计算问题,低维空间映射到高维空间,在高维空间上直接计算的话回产生一个维灾难的问题(2->5, 3->19…)。这个地方就引入了核函数,核函数是计算两个向量在隐式映射过后的空间中的内积的函数,通过核函数可以使数据不用在映射后的高维空间中计算,而是在原来的低维空间中计算(在原来的低维空间上做内积)。

以上就是SVM的简要介绍,当然里面很多细节是没有说出来的,毕竟面试刚开始要你介绍你也不会说的很细节不是。不过面试官肯定会问你关于SVM的一些细节知识,只知道个大概是没有用的。

补充一些细节知识:

1、关于松池变量

如下图:

《机器学习算法面试—口述(1):SVM介绍及常见问题》


这个图给出了两组超平面的画法,每组两边的超平面都能将数据区分开来,但是离两边的数据点非常近,二中间的那个超平面会错分某些点,但是其具有很好的边界效果。显然中间这个超平面比较好,因为它的鲁棒性很好。

SVM允许数据点在一定程度上偏离超平面,这个反应在约束条件ai中,本来约束条件是ai >= 0,现在约束条件变为:C >= ai >= 0;

松弛变量的引入也就是允许某些点离超平面的距离小于1,也即放弃了这些点的分类精度,惩罚因子决定了对离群点的重视程度,C越大,表示分错某一个点需要付出更大的代价(这个可以一定程度上缓解正负样本数量相差太大的问题)。

2、




    原文作者:xwchao2014
    原文地址: https://blog.csdn.net/xwchao2014/article/details/47948063
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞