间隔与支持向量
一个支持向量机解决一个二分类问题
假设一个超平面 wTx+b=0能将正反例正确划分
超平面上方为正例+1,下方为反例-1
那么正例(xi,yi),使 wTxi+b>0,yi = +1
那么反例(xi,yi),使 wTxi+b<0,yi = -1
任意点到超平面的距离可写为:r = |wTxi+b| / ||w||
任意正反例的距离 |wTxi++b - (wTxi-+b)| / ||w||
假设wTxi++b = +1,(>0 即可,也可以是 +100 或者 +0.1)
假设wTxi-+b = -1,(<0 即可,也可以是 -50 或者 -0.1)
那么正反例的距离等于 |1-(-1)|/||w|| = 2 / ||w|| (也可以是150 / ||w||,或者 0.2 / ||w||,分子多大都没关系,不影响我们的目标:最大化间隔,等价于求分母最小化)
我们希望离划分超平面最近的正反例(即:支持向量),之间的**距离(即:间隔)**最大化,这样的划分鲁棒性最好(健壮)。
那么需要求得w和b,令 2 / ||w|| 最大化,这等价于求得w和b,使得 0.5||w||2 最小化,约束条件为:yi(wTx+b)>0
对每条约束添加拉格朗日乘子,将约束条件的最优化问题转化为无约束问题:
L = 0.5||w||2 + Σai(-yi(wTx+b))
对w求偏导为零可得:
w = Σaiyixi
对b求偏导为零可得:
0 = Σaiyi
将w和b代入原式L,再考虑约束,得 0.5||w||2 的对偶问题:(疑惑)
MAX|a:Σai - 0.5ΣΣaiajyiyjxiTxj
s.t:Σaiyi = 0,ai >= 0
解出 a 后(通过SMO算法求解),可求出 w 与 b ,即可得模型:
f(x) = wTx+b = ΣaiyixiTx+b
SMO算法固定ai和yi之外的所有参数(即c),对ai、yi求解
c = - Σakyk,k!=i,j
aiyi + ajyj = c
将 aj = (c-aiyi) / yj 代入: MAX|a:Σai - 0.5ΣΣaiajyiyjxiTxj
得到的是关于ai的单变量二次规划问题,仅有约束是ai>=0,具有闭式解,可高效计算出更新后的ai和yi。
约束要求满足KKT条件:
ai >= 0;
yif(xi) - 1 >= 0;
ai (yif(xi) - 1 ) = 0;
对任意训练样本,总有ai = 0,或者 yif(xi) = 1
若 ai = 0,则该样本不会在求和式中出现,也就不会对f(x)有任何影响。
若 ai > 0,则该样本位于最大间隔边界上,是一个支持向量。
因此:训练完成后,大部分的训练样本都不需要保留,最终模型仅与支持向量有关。
核函数
如果原始空间是有限维,即属性有限,那么一定存在一个高维特征空间使样本可分。
核技巧:不必直接去计算高维甚至无穷维特征空间中的内积,而是通过核函数来展开,即可求出最优解。
通常,我们只需在已有的常用候选核函数中选择出适合解决我们任务的一个,而不需要自己去定义一个新的核函数。
软间隔和正则化
我们要求所有样本满足约束条件,这是硬间隔。相对的,软间隔允许某些样本不满足约束。
我们希望不满足约束的样本尽量少,于是加入了损失函数,由于损失函数不容易求解,于是又有了替代损失函数如:
hinge损失函数
指数损失函数
对率损失函数
引入常数C以及松弛变量,变化出软间隔支持向量机
常数C控制满足约束的样本量多少,C越大,需要越多样本满足约束,反之,越小容忍度越大。
支持向量回归(SVR)
传统回归模型只有当f(x)和yi完全一致时才不计入损失。
SVR则以f(x)=wx+b为中心,构建一个宽度为2e的间隔带,若训练样本落入此间隔带,则不计算损失,被认为是预测正确的。
问题变化为:
min 0.5||w||2+CΣle(f(x)-yi),
f(x) - yi <= e,损失为0,否则损失为f(x) - yi - e
C是正则化常数
经过各种推导,SVR可表示为:
f(x) = Σ(ai’-ai)k(x,xi)+b
其中k为核函数。
核方法
若不考虑偏移项b,则无论SVM还是SVR,学得的模型总能表示成核函数k(x,xi)的线性组合。
读这章的感受
这章的公式太多了,很多推导不好理解,看了好多天没看明白,所以暂时放下,接着看后面几章吧。