目录
序
SVM的面试题目相对有章可循,本次记录一下常见的几个面试题
一句话介绍SVM
SVM是一种二分类模型,他的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔大使它有别于普通的感知机,通过核技巧隐式的在输入空间直接求解映射空间中特征向量的内积,使其成为一个非线性分类器。SVM的学习策略是间隔最大化,可形式化为一个求解凸二次规划问题。
SVM中的几个核心概念
1 确定超平面及函数间隔
由空间上的平面公式确定超平面 wx+b = 0,且 |wx+b| 表示点 x 到平面上的距离。正类负例位于分割平面两侧,因此y(wx+b) 可同时表示分类正确性以及距离确信度。这也就是函数间隔,其被定义为训练集中所有点到超平面距离的最小值。
2 几何间隔
由于成比例地缩放w和b会使得 |wx+b| 跟着成比例缩放,因此,需要对法向量w加上约束,使得间隔是确定的,也就是函数间隔整体除以 ||w||,也就得到了几何间隔
3 间隔最大化(硬间隔)
分为硬间隔最大和软间隔最大
SVM的基本思想就是求解可以正确划分数据集并且几何间隔最大的分离超平面,其原因是线性可分超平面有无数个,但是间隔最大超平面是唯一的。
间隔最大化的意思就是以充分大的确信度对训练数据进行分类,也就是说,不仅将正负实例分开,同时对最难分的实例点(距离超平面最近的点)也有足够大的确信度将其分离。
此处推出约束优化问题的原始形式(见上一篇博客)
4 支持向量
与超平面最近的点被称为支持向量,也就是使得原始问题约束项成立的点。
实际上离超平面很远的点已经被正确分类,我们让它离超平面更远并没有意义。反而我们最关心是那些离超平面很近的点,这些点很容易被误分类。如果我们可以让离超平面比较近的点尽可能的远离超平面,那么我们的分类效果会好有一些
5 核函数
注意,核函数本质不是将特征映射到高维空间,而是找到一种直接在低位空间对高维空间中向量做点积运算的简便方法。
其证明以及案例可参考李航-统计学习方法 P117
6 为何将原始问题转为对偶问题
总是说对偶问题更容易求解,道理在哪呢?
之所以说换为对偶问题更容易求解,其原因在于降低了算法的计算复杂度。在原问题下,算法的复杂度与样本维度相关,即等于权重w的维度,而在对偶问题下,算法复杂度与样本数量有关,即为拉格朗日算子的个数。
因此,如果你是做线性分类,且样本维度低于样本数量的话,在原问题下求解就好了,Liblinear之类的线性SVM默认都是这样做的;但如果你是做非线性分类,那就会涉及到升维(比如使用高斯核做核函数,其实是将样本升到无穷维),升维后的样本维度往往会远大于样本数量,此时显然在对偶问题下求解会更好。
另一方面,我们有分析过,只有在支持向量上的样本对应的拉格朗日算子λ才大于0,其余的λ都是=0,而转为对偶问题的计算对象仅有λ&