什么叫支持向量机?
欲找到具有"最大|间隔" (maximum margin) 的划分超平面,也就是要找到能满足式中约束的参数 w和b使得γ最大,即:
这也等价于:
这就是支持向量机(Support Vector Machine ,简称 SVM) 的基本型。
使用拉格朗日子乘法来求解,可得到"对偶问题":
从对偶问题 解出的α是拉格朗日乘子,它恰对应着训练样本 (Xi Yi)。
支持向量机的一个重要性质:训练完成后,大部分的训练样本都不需保留,最终模型仅与支持向量有关。
由于推导有点复杂,这里简单说明一下:对于线性可分的数据集,SVM的目标是最小化权重向量w
的范数,同时最大化分类间隔。这可以通过求解一个凸二次规划问题来完成。
在现实世界中,数据往往不是线性可分的。对这样的问题,可以将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。
幸运的是,如果原始空间是有限维,即属性数有限。那么一定存在一个高维特征空间使样本可分。
在不知道特征映射的形式时,我们并不知道什么样的核函数是合适的,而核函数也仅是隐式地定义了这个特征空间.于是,"核函数选择"成为支持向量机的最大变数.若核函数的选择不合适,则意味着将样本映射到了一个不合适的特征空间,很可能导致性能不佳。
核函数还可以通过线性组合得到。
SVM通过引入松弛变量(slack variables)和惩罚参数C
。松弛变量允许一些数据点跨越决策边界,而惩罚参数则控制着对这些错误分类的容忍程度。
映射函数的输出相乘并计算内积的原因是,内积是衡量两个向量方向一致性的标准方式。在高维特征空间中,两个向量的方向一致性反映了它们在该空间中的相对位置。通过计算内积,SVM能够判断一个数据点相对于决策超平面的位置,这是分类决策的关键。而核函数允许我们在原始空间中直接计算映射后的内积,而无需执行实际的映射操作,这大大减少了计算复杂度。
几个要点:
- SVM的决策函数只由少数的支持向量所决定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了维数灾难。
- 支持向量机(SVM)本质上是非线性方法,在样本量比较少的时候,容易抓住数据与特征之间的非线性关系,因此可以解决非线性问题、可以避免神经网络结构选择和局部极小值点问题、可以提高泛化能力、可以解决高维问题。