斯坦福公开课Machine Learning笔记(五)--Support Vector Machine

斯坦福公开课Machine Learning笔记(五)–Support Vector Machine

这系列笔记其实已经手写好, 现在一次性发上来, 主要是怕丢. 内容以Andrew Ng的讲义为主,主要以公式推导与理解为主,引入和介绍省略.对于最后的Reinforcement Learning部分, 由于没有讲义以及对其实在不熟悉, 就没有笔记了(主要还是因为没有讲义).

1.函数间隔和几何间隔

在二维空间中的数据点,我们可以用一条线来把数据分成两类.但这可能并不是最好的分隔线,因为新的数据可能就在分隔线附近,这样会对预测造成误差.

而每个数据点到分隔线都有一个距离,我们可以通过这个距离来找到最佳的分隔线.
函数间隔:
γ^(i)=y(i)(wTx+b),y(i){1,1}

γ^=mini=1,2,...,mγ^(i)

但是当w和b成倍数增长时,函数间隔也会变大,但分隔线却没变.而几何间隔就不会.
通过函数间隔计算某个点的几何间隔:
A点在分隔线外,B点在分隔线上,过A点做垂线经过B点.
AB的距离为 γ^(i) ,A点的x为 x(i) ,那么B点的x为: x(i)γ^(i)w||w||

B点在分隔线 wTx+b=0

wT(x(i)γ^(i)w||w||)+b=0

γ^(i)=wTx(i)+b||w||=(w||w||)Tx(i)+b||w||

γ^(i)=y(i)((w||w||))T+b||w||)

γ=mini=1,2,...,mγ(i)

可以看到,当 ||w||=1 时,函数间隔就等于几何间隔.而无论如何取w和b,都不会影响距离.
那如何通过间隔来找到最佳的分隔线呢?

  • 空间中的点分隔开后,点投影到线上,投影肯定是越分散越容易让人分辨,而不是挤在一块.也就是投影的点的方差最大化。
  • 还有另外一种理解。当要预测新的x时,如果x点在分割线附近,就很容易产生误差。那么,我们尽量把空间内的数据分隔开,即尽量让所有的点都远离分割线。也就是最大化所有点到分割线的距离。

我们要最大化 γ :

maxγ,w,bγ

y(i)(wTx(i)+b)γ,i=1,2,...,m

||w||=1

但是 ||w||=1 会导致非凸集,去掉这个约束:

maxγ,w,bγ||w||

y(i)(wTx(i)+b)γ,i=1,2,...,m

||w||=1 是保证函数间隔等于几何间隔, γ=γ^||w||

γ^||w|| 不是凸函数,是双曲线,所以通过缩放增加约束: γ^=1

γ^||w||=1||w||

min12||w||2

y(i)(wTx(i)+b)1,i=1,2,...,m

我们是要最小化 ||w||2 , 加上2次是为了变成2次函数,这是典型的凸函数.

2. Lagrange duality

这里先介绍一下拉格朗日对偶问题.
当我们碰到最优化问题:

minwf(w)

hi(w)=0,i=1,2,...,l

然后使用拉格朗日乘数法:

L(w,β)=f(w)+i=1lβihi(w)

L(w,β)wi=0

L(w,β)βi=0

解出 w β 得到极值.
现在这里多了一个不等式的约束条件:
minwf(w)

gi(w)0,i=1,2,...,k

hi(w)=0,i=1,2,...,l

还是使用拉格朗日乘数法,先定义:

L(w,α,β)=f(w)+i=1kαigi(w)+i=1lβihi(w)

θP(w)=maxα,β:αi0L(w,α,β)

当不满足约束条件,即 gi(w)>0,hi(w)0 , 只要增加 αiβi,θP(w) .而当满足条件时, θP(w)=f(w)

θP(w)={f(w)gi(w)0,hj(w)=0otherwise

minwθP(w)=minwmaxα,β:αi0L(w,α,β)

转化为对偶优化问题:

θD(α,β)=minwL(w,α,β)

maxα,β:αi0θD(α,β)=maxα,β:αi0minwL(w,α,β)

d=maxα,β:αi0minwL(w,α,β)minwmaxα,β:αi0L(w,α,β)=P

当在特定条件下 d=P :

fgi 为凸函数, hi 为仿射函数,类似于 hi(w)=αTiw+b , gi(w)0 绝对成立,即 wi gi(w)0

满足上面假设后就一定存在 w,α,β 满足 d=P .

同时还满足一下KKT条件:

L(w,α,β)wi=0,i=1,2,...,n

L(w,α,β)βi=0,i=1,2,...,n

αigi(w)=0,i=1,2,...,k(KKT)

gi(w)0,i=1,2,...,k

αi0,i=1,2,...,k

经常有: αi0gi(w)=0
而当 gi(w)=0 ,则成为active constraint


回到前面:

min12||w||2

y(i)(wTx(i)+b)1,i=1,2,...,m

改写一下不等式:

gi(w)=y(i)(wTx(i)+b)+10

gi(w)=0 时,函数间隔为1,即:
只有那些靠近分隔线的点的函数间隔为1,其他的点都大于1: αi=0,gi(w)0 .这些函数间隔为1的点称为支持向量,只有他们会影响到分隔线(超平面).
同样适用拉格朗日乘数法:

L(w,b,α)=12||w||2i=1mαi[y(i)(wTx(i)+b)1]

对于对偶问题:
θD(α,β)=minwL(w,α,β)

wL(w,α,β)=wmi=1αiy(i)x(i)=0

w=mi=1αiy(i)x(i)

bL(w,b,α)=mi=1αiy(i)=0

mi=1αiy(i)=0

w=mi=1αiy(i)x(i) mi=1αiy(i)=0 带入 L(w,b,α)

L(w,b,α)=i=1mαi12mi=1mj=1y(i)y(j)αiαj<xi,xj>

maxα,β:αi0θD(α,β)=maxα,β:αi0minL(w,α,β)

maxαW(α)=mi=1αi12mi=1mj=1y(i)y(j)αiαj<xi,xj>

αi0,i=1,2,...,m

mi=1αiy(i)=0

通过KKT条件来求解,用对偶问题代替原始问题.
b=maxi:y(i)=1wTx(i)+mini:y(i)=1wTx(i)2
也就是当确定w后,平移超平面,平移到最佳位置即可.
当求出w和b后,可以对新数据点进行分类了.
wTx+b=(i=1mαiy(i)x(i))Tx+b=i=1mαiy(i)<x(i),x>+b
如果每次把训练集遍历一边会很慢,但其实大部分 αi=0 ,只有少数 αi0 的支持向量.后面还会介绍kernel来计算x的内积.


Kernels

对于kernel的个人理解是:当数据在低维线性不可分时,把数据映射到更高维的空间,让其线性可分.
定义kernel函数:
K(x,z)=ϕ(x)Tϕ(z) 代替 <ϕ(x),ϕ(z)> <script type="math/tex" id="MathJax-Element-3017"><\phi(x),\phi(z)></script>

Ng举了个例子:
x,zRn
K(x,z)=(xTz)2 =(i=1nxizi)(j=1nxjzj) =i=1nj=1nxixjzizi =i,j=1n(xixj)(zizj) 
假设 n=3
ϕ(x)=x1x1x3x3
这样直接计算 ϕ(x)Tϕ(z) 的复杂度为 O(n2) ,而计算Kernel函数的复杂度为 O(n) .
推广到加上常数项:
K(x,z)=(xTz+c)2=ni,j=1(xixj)(zizj)+ni=1(2cxi)(2czi)+c2
继续推广:
K(x,z)=(xTz+c)d(n+dd) 特征空间
但是复杂度从 O(nd)O(n)
我们上面找到了 ϕ ,但是我们并不在意 ϕ .


Gaussian kernel

K(x,z)=exp(||xz||22σ2) 其中 σ 的取值并不影响.这个函数是个无限维的映射.
那如何确定某个函数是否可以作为kernel函数呢?
如果要找到 ϕ 来确定kernel,但是 ϕ 并不好找.
我们先定义一个kernel矩阵:
Kij=K(x(i),x(j))
如果 kij 是kernel函数,可以证明 kij 是个半正定矩阵.维基百科对半正定矩阵的定义
证:

zTkz=ijzikijzj=ijziϕ(x(i))Tϕ(x(i))zj=ijzikϕk(x(i))ϕk(x(i))zj=kijϕk(x(i))ϕk(x(i))zj=k(iziϕk(x(i)))20

这里证明了只要 K 是个kernel函数,那么k矩阵一定是半正定矩阵,通过Mercer’s theorem,其实这是个充要条件.


Regularization and non-separable case

当数据集中异常点时,我们不可能为了这些异常点而改变超平面.那么如何忽略这些点呢?
我们可以加入优化,正则化.

minγ,w,b 12||w||2+cmi=1ξi

y(i)(wTx(i)+b)1ξi

ξi0,i=1,2,...,m

加入正则的理解其实就是让某些点的函数间隔可以小于1.

L(w,b,ξ,α,γ)=12wTw+ci=1mξii=1mαi[y(i)(xTw+b)1+ξi]i=1mγiξi

那么,其对偶问题:
maxαW(α)=mi=1αi12mi,j=1y(i)y(j)αiαj<x(i),x(j)>

0αic

mi=1αiy(i)=0

和之前相比, αi0αic

αi=0,y(i)(wTx(i)+b)1

αi=c,y(i)(wTx(i)+b)1

0<αi<c,y(i)(wTx(i)+b)=1 .


The SMO algorithm

在求解最大或者最小值问题时,经常会使用坐标上升(下降)法.Coordinate ascent(descent):
Loop until convergence{
for i = 1 to m{
αi:=argmaxαi^W(α1,...,αi,...,αm)
}
}
不停迭代,每次只改变某一维度来最优化.
把几个最优化算法比较一下:

  • 牛顿法:收敛快,但是每次计算代价大
  • 坐标上升(下降):收敛慢,计算代价小
  • 梯度下降:不适合高纬度.

而对于如何求解对偶问题,如果要使用坐标上升法,只改变一个 α 值,就无法保证在 mi=1αiy(i)=0 ,在固定其他 α 时, α1 也是固定的.
所以我们可以改变2个变量:

α1y(1)+α2y(2)=mi=1αiy(i)=ξ

α1=(ξα2y(2))y(1) 代入 W(α) 中得到关于 α2 的二次函数,然后最优化求解.这里要注意约束条件.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值