SVM的基本想法就是求解能正确划分训练样本并且其几何间隔最大化的超平面。
引入对偶算法求解支持向量机的参数:
对偶问题往往更加容易求解;可以自然的引用核函数(拉格朗日表达式里面有内积,而核函数也是通过内积进行映射的);基于KKT条件的互补松弛条件,训练样本集中只有支持向量所对应的拉格朗日乘子不为0,而支持向量占比较小,降低了模型在后续问题的计算量。使用核函数:将输入特征(线性不可分)映射到高维特征空间,可以在高维空间上让进行线性分类。如高斯核函数,其中包含指数函数,可以利用泰勒级数将其展开至无限维,从而实现将输入特征映射到无穷维。
SMO算法思想:它选择凸二次规划的两个变量,其它的变量保持不变,然后根据这两个变量构建一个二次规划问题,这个二次规划关于这两个变量解会更加的接近原始二次规划的解,通过这样的子问题划分可以大大增加整个算法的计算速度。关于这两个变量,其中一个是严重违反KKT条件的一个变量,另一个变量是根据自由约束确定。
关于最大化几何间隔的目标函数中,将函数间隔直接设置为1的理由: Andrew Ng在CS229中解释为: 为 w w w和 b b b添加了隐含的放缩限制,即使 w w w为 2 ∗ w 2*w 2∗w, b b b为 2 ∗ b 2*b 2∗b,最后的预测值只依据于正负,所以不影响结果。 在寻找几何间隔最大值的过程中,因为寻找最大几何间隔和寻找令几何间隔达到最大的超平面是一回事,所以当给出一个超平面,无论它的几何间隔是多少,只要是正值(因为是在正负样本区域中间,所以肯定是正值),我都可以令这个超平面的 ∣ ∣ w ∣ ∣ = 1 / γ ⇒ γ ^ = 1 ||w||=1/\gamma\Rightarrow \hat{\gamma}=1 ∣∣w∣∣=1/γ⇒γ^=1。 或者说给出一个超平面,然后规定它的 γ ^ = 1 \hat{\gamma}=1 γ^=1,那么如果它的 γ = 0.1 \gamma=0.1 γ=0.1,那么 ∣ ∣ w ∣ ∣ = 10 ||w||=10 ∣∣w∣∣=10;如果 γ = 1 \gamma=1 γ=1,那么 ∣ ∣ w ∣ ∣ = 1 ||w||=1 ∣∣w∣∣=1,也就是说, γ \gamma γ越大,||w||越小。既然如此,那么原先寻找 γ \gamma γ的最大值就变成了寻找 ∣ ∣ w ∣ ∣ ||w|| ∣∣w∣∣的最小值,即 max γ \max\gamma maxγ等价于 max 1 ∣ ∣ w ∣ ∣ \max\frac{1}{||w||} max∣∣w∣∣1。