间隔与支持向量
支持向量机(Support Vector Machine)是最常用的机器学习算法之一.
首先我们从最简单的SVM开始回顾. 假设一个特征空间中有若干二分类样本, 且它们是线性可分的,那么在能够将其正确分类的无数个超平面中,我们应该挑选怎样的超平面呢?
SVM给出的答案是: 找到在两类样本正中间的超平面. 很容易想出,此时该划分的泛化能力比较强.
我们用下式来表示划分的超平面:
wTx+b=0
其中w为法向量,b为位移, 那么样本空间中任一点x到该超平面的距离即为:
r=|wTx+b|||w||
假设超平面能够分类正确,则可以(通过适当放缩)使下式成立:
{wTxi+b≥+1yi=+1wTxi+b≤−1yi=−1
此时, 距离超平面最近的这几个训练样本刚好使上式的等号成立,它们就被称作支持向量,两个异类的支持向量到超平面的距离和为:
γ=2||w||
该项则被称作间隔.
那么SVM的目标即为找到拥有最大间隔的那个超平面, 最大化间隔即为最小化下式:
minw,b12||w||2s.t.yi(wTxi+b)≥1,i=1,2,...,m
那么SVM问题就转为解决一个不等式限制下的优化问题.
对偶问题
为了解决这个问题, 可以使用拉格朗日乘子法来构造其对偶问题.
对于拉格朗日对偶性,可以参考李航老师<统计机器学习>附录C部分. 需要注意的是,对偶函数的解给出了的是主问题的下界, 即对偶问题的最优解并不等于主问题(原问题)的最优解. 只有当 主问题是凸优化问题且可行域中至少有一点满足约束时,两个问题的最优解一样, 称作 强对偶性.
幸运的是SVM要解决的问题恰好满足强对偶性,因此我们可以通过构造并解决对偶问题来解SVM的主问题,且通过对偶问题,可以自然地引入后面的核技巧.
KKT条件
回顾上面的过程,这里该问题满足KKT(Karush-Kuhn-Tucker)条件. 该条件是优化问题中一个重要的限制条件, 其泛化的过程是这样的:
对于无限制优化问题, 只要求其驻点就行了.
对于等号限制优化问题, 则需要加上拉格朗日乘子.
对于不等限制优化问题, 则需要保证KKT条件了.
具体而言, 该条件是这样的:
{αi≥0dual feasibility;yif(xi)−1≥0primal feasibility;αi(yif(xi)−1)=0complementary slackness.
第一个条件dual feasibility(对偶可行性), 正如其名, 是对偶问题的限制条件,也就是对拉格朗日乘子的限制.
第二个条件primal feasibility(主可行性), 则是我们最初主问题的限制条件.
第三个条件complementary slackness, 直接翻译成中文可以叫互补松弛量. 对于这个条件的理解,首先明确对偶问题(max-min)的解是主问题(min-max)的下界. 那么这个变量大概就衡量了该界的准确的, 当slackness为零时,表示主问题和对偶问题的最优解一致. 因此台湾那边也把这个slackness叫做”差余”, 大概是衡量两个问题最优解之间的差. 当该条件得到满足时,我们通常也叫保证了 强对偶.