有时候,SVM可能分割的太过了,黑即是黑,白即是白,其实这样“刚正无私”overfit也不好,所以就需要“中庸之道”,要允许有部分的误差或噪声,这就是为什么要有Soft Margin~还是ppt上的图解释的好
犯错要越少越好,这就是pocket,这是最原始的思想:允许犯错,但是犯的错要越少越好~这个 ≠ 表示分错了,这个 ≠ 的个数要越少越好
minb,w∑n=1N(yn≠sign(wTzn+b))
将上述思想融合到hard-margin SVM中
不想写那么多中间式。
soft-margin SVM:
minb,w, ξ 12wTw+C⋅∑n=1Nξns.t. yn(wTzn+b)⩾1−ξn and ξn⩾0 for all n
其中,用
ξn 表示error的大小,即
margin violation
用
C 表示一个权衡因子
trade-off,
large margin和
margin violation哪个更重要
C 大,则是边界窄,严格,噪声少
C 小,则是边界宽,宽松,噪声多
习题啥意思?
式子写出来了,怎么求解呢?
写成Lagrange function,Lagrange multipliers αn , βn
maxαn⩾0, βn⩾0(minb,w L(b,w,ξ,α,β)=12wTw+C⋅∑n=1Nξn+∑n=1Nαn⋅(1−ξn−yn(wTzn+b))+∑n=1Nβn⋅(−ξn))
通过条件
∂L∂ξn=0=C−αn−βn 消掉
ξn ,主要是
βn=C−αn⩾0 反代回去消掉的!同时有条件
0⩽αn⩽C
所以上述Lagrange dual简化为
max0⩽αn⩽C, βn=C−αn(minb,w 12wTw+∑n=1Nαn⋅(1−yn(wTzn+b)))
注意观察这个形式,除了max下面的约束条件不同,式子的形式和hard-margin很像!所以和以前一样,转化为在KKT约束条件的二次规划求解出
αn ,然后由KKT约束条件分别求出
w=∑Nn=1αnynzn 和
βn=C−αn (表达式略有不同!)忘了KKT就回去看第2课!
习题想表达:参数 C 直接成为 αn 上限值
Kernel Soft_Margin SVM
和以前的Hard-Margin相比有,上限(upper-bound)
soft-Margin比Hard-Margin更常用
(看不懂就经常返回去多看几遍)
αn 的物理意义,这个很有意思啊!
complementary slackness:
αn(1−ξn−yn(wTzn+b))=0(C−αn)ξn=0
- non SV (0=αn):ξn=0 (没有违反边界) 远离胖胖边界
- free SV (0⩽αn⩽C):ξn=0 (没有违反边界) 刚好在胖胖边界上的点
- bounded SV (αn=C):ξn =违规点的数量
就是一个selection的过程:有两种方法,cross-validation,nSV
我的理解就是通过上面两种方法,选择一个好的model
how to select?
Ecv(C,γ) 就是cross-validation所求的那个值,具体怎么求不知道,但是如果这个值求出来越大,选择的model就越overfit(就是分类分的太过了!)
nSV(C,γ) ,这个作为安全检查,因为上面那个 Ecv(C,γ) 求起来有时候很费时间。但这个只是个上限(我的理解就是这个可能是model的overfit的最大值,但不是真实值,真实值在这个之下)
