上周留下的面试题你思考了吗?
今天就让我们揭开解答
【SVM模型】
引言
SVM(Support Vector Machine, 支持向量机)是众多监督式学习方法中十分出色的一种,几乎所有的讲述经典机器学习方法的教材都会介绍。以它为模型,可以考察机器学习各个方面的知识,也是面试题目中常见的模型,SVM的第一道面试题就是考察模型推导的基础知识。
问题
在空间上线性可分的两类点,
分别向SVM分类的超平面上做投影,
这些点在超平面上的投影仍然是线性可分的吗?
能否证明你的观点?
背景知识:数学基础,机器学习基础,SVM理论推导
解答与分析
首先分析题意,线性可分的两类点,即指通过一个超平面可以将两类点完全分开,如左图所示,假设蓝色的超平面(对于二维空间来说,一维的线即为超平面)为SVM算法计算得出的分类平面,那么红绿两类的点就被它完全分开。我们的问题是将红绿两色的点,向蓝色平面上做如右图所示投影,可得在超平面上红绿两色的点,问题即为投影后的点仍然是线性可分的吗?
这个问题初看起来第一感觉是并不是线性可分的,反例也很好构造,设想只有两个点每个点各属于一类的情况,那么SVM的分类超平面就在两点连线的中垂线上,那么两点关于超平面的投影落在了平面上的同一点自然无法线性可分。实际上对于任意线性可分的两组点,它们在SVM分类的超平面上的投影都是线性不可分的,那么这个结论怎么证明呢?
我们在下面的叙述中以二维情况进行讨论,对于高维空间的推广也是成立的。先考虑SVM分类中只有支持向量的情况,使用反证法,假设存在一个SVM分类结果的超平面,所有支持向量在这个超平面上的投影依然线性可分。那么这个超平面的分类结果如下图所示,使用初等几何知识不难发现图中A,B两点连线的中垂线所组成的超平面蓝色虚线是相较于蓝色实线超平面更优的解,且两组点在新的超平面下线性不可分。而我们之前假设蓝色实线超平面为最有的解,由此推出矛盾。
但我们的证明目前还有不严谨之处,即我们假设了仅有支持向量的情况,会不会在超平面的变换过程支持向量发生了改变,原先的非支持向量和支持向量发生了转化呢?下面我们就来证明SVM的分类结果仅依赖于支持向量。考虑SVM推导中的KKT条件:
结合3和4两个条件不难发现gi(*)<0时,必有i*=0,将这一结果与拉格朗日对偶优化问题的公式相比较:
可以看到,除支持向量外,其他非支持向量的系数均为0,所以SVM的分类结果与仅使用支持向量的分类结果一致,这也是SVM有极高的运行效率的关键之一。将这一结论代回我们的假设中,可知去掉非支持向量并不影响SVM的分类结果,故此证明成立。
实际上,该问题也可以通过凸优化理论中的超平面分离定理(Separating Hyperplane Theorem)更加轻巧地解决。该定理是在凸优化理论中极为重要,定理的定义是:对于不相交的两个凸集,存在一个超平面,将两个凸集分离,并且该超平面为两个凸集上最短距离两点连线的中垂线。
我们可以考虑线性可分的这两类点的凸包,不难发现,SVM所求得的超平面为两凸包上最短距离两点连线的中垂线,由超平面分离定理可得,其为定理中两类点的凸包的超平面。而两个凸包中距离最短的两点只有两种可能,为样本点或在两个样本点的连线上。分情况两边均为样本点,两边均在样本点的连线上,一边为样本点一边在样本点的连线上三种情况简单讨论即可发现,无论哪种情况两类点的投影均是线性不可分的。
对于面试者来说,能通过对SVM的推导给出前一种结论即可,如果熟悉凸优化理论,也可以根据后一种思路来作答。
拓展阅读
SVM的公式推导过程:
http://cs229.stanford.edu/notes/cs229-notes3.pdf
对偶问题与KKT条件:
http://stanford.edu/class/ee364a/lectures/duality.pdf
超平面分离定理:
http://www.princeton.edu/~amirali/Public/Teaching/ORF523/S16/ORF523_S16_Lec5_gh.pdf
下一题预告
【梯度验证】
场景描述
为了求解一个优化问题,最重要的操作是计算目标函数的梯度。在一些机器学习的应用中,例如深度神经网络,目标函数的梯度公式非常复杂,需要验证自己写出的实现代码是否正确。
问题描述
假设你需要求解优化问题:
并且用代码实现了求目标函数值和求目标函数梯度的功能。问如何利用求目标函数值的功能来验证求目标函数梯度的功能是否正确?
欢迎留言提问或探讨
关注“Hulu”微信公众号
点击菜单栏“机器学习”获得更多系列文章