Soft-Margin Support Vector Machine
用hard-margin分类效果较差的主要原因有两点,分别是变换过于powerful以及坚持要求严格分开,不容得一点错误。
既然如此不妨像pocket那样,容许一定的错误,让犯错最小即可,不必完全正确
由于
∑
∑
内的量并不是一个线性量,这样的话就不能将其转换为一个QP问题,设置不好解,所以我们建立一个新的模型如下
用类似的方法考虑其对偶问题
对
b,w,ξ
b
,
w
,
ξ
求偏导数并等于0,最终可以整理的到
这是满足QP条件的,分别是N个变量,2N+1个线性条件。当我们将
an
a
n
解出来后,
w
w
很容易,依旧是,而参数
b
b
的话由complementary slackness(右边的黄色框条件),我们引入比之前更强的对于支持向量的描述,即需要,此时可以解出
b
b
关于的意义
Kernel Logistic Regression
换个角度来看上图左上角的黄色框所示的最优化问题,如果我们令
ξn=max(1−yn(wTzn+b),0)
ξ
n
=
m
a
x
(
1
−
y
n
(
w
T
z
n
+
b
)
,
0
)
的话,那么由中间绿框的分析我们知道我们实际上可以去掉subject to条件(必然满足限制条件),如果我们将
max
m
a
x
这一部分看做是一种error的话,
那么实际上我们前面的最优化项
12wTw
1
2
w
T
w
反倒是可以看成是正则项!我们对0-1error、SVM-error(即此处的max)以及logistic回归的error进行比较有
惊人的事情出现了,实际上SVM-error(即此处的max)和logistic回归的error是非常接近的!所以我们甚至可以将soft-margin-SVM看作是L2-logistic regression!
为了将两者结合起来,下面这里有两种基本思想
1.直接对数据经行SVM,然后求出来的 w w 和直接给logReg使用
2.SVM得到的 w w 和作为起始点
不过对于第二种思想,由于问题是凸的,最优点唯一,用任何起始点没有区别,甚至这样的SVM可能会带来更多的计算量;而对于这两种思想,可以用一个二元的变量参数来乱搞
训练的话用GD或者SGD什么的都可以,毕竟只有两个变量。
Kernel work的关键
实际上,回顾我们所学过的SVM中的kernel技巧,核技巧的变化在于 zTz z T z ,若 w w 能表示为的线性组合的话,那么kernel就会奏效,而 w=∑Nn=1βnzn w = ∑ n = 1 N β n z n 是KKT条件的一个
下面给出一个很强的结果,称为representer theorem,表达如下
所有形如上图绿框形式的最优问题(线性问题的L2正则),必然有最优解
w
w
能被线性表出,这里的线性问题指的是评分函数是
wTzn
w
T
z
n
,证明如图所示。
所以由representer theorem,我们直接对L2的logReg代入
w
w
的线性展开,有
然后用GD,SGD等方法即可
Support Vector Regression
将误差项改为平方误差,我们来看一下这样的线性回归问题(岭回归)
对全局关于β求导,并令其为0可以直接解出β
对比普通的岭回归和核岭回归有如下
下面我们来对比一下刚才这个核岭回归(使用了平方误差的SVM)和一般的soft-margin gaussian SVM
可以发现由于核岭回归中,所以几乎不为0,从上图右子图就可以看到,它几乎都是支持向量,那如何做才能将
β
β
变得稀疏呢?在SVM变成soft-margin SVM 时候采用的办法是让自己不那么严格,容许一定的错误。此时我们也可以类似的换一种误差
同样是希望将max转换为线性的,可供二次规划的程序来求解,所以
求解的话和上面的程序是一样的,