Seventh week of machine learning on Coursera

如果训练集样本线性可分,那么在样本空间肯定能找到一个划分超平面将正负样本分隔开。
在之前学习的逻辑斯蒂回归(感知机)基于梯度下降的方法来求得这个超平面。但是这种方法求得的超平面是无穷个的(指的是感知机使用梯度下降迭代更新 ωb 的过程中,会产生很多超平面方程,具体可参考《统计学习方法》例2.1),那么如何才能找到最优的超平面呢?
由此就引出了我们这节的主题—Support Vector Machine(求间隔最大化的超平面即为最优的超平面)。
样本空间上定义的超平面可以用 ω⃗ Tx⃗ +b=0 表示, ω⃗ =(ω1;ω2;..;ωd) 表示超平面的法向量, b 表示离原点的截距项。
可以看出我们想找最优的超平面,就是求得参数ω⃗ b
|ω⃗ x⃗ +b| 可以相对的表示点x距离超平面的距离。
这里写图片描述
如上图所示,超平面 x1x2+1=0 ,法向量为 (1,1)(ω1,ω2) 求点 (1,0) 距离超平面的距离,为 2 ,正好为 |ω⃗ x⃗ +b|ω⃗ 


那么。我们知道了SVM是寻找最大间隔的超平面,以此作为最优的超平面。通过对参数 ω⃗ b 寻优来找到最大间隔的超平面,那么现在有个问题,我们以什么标准来判断这个间隔最大呢?
在SVM中,存在函数间隔和几何间隔,我们分别来看一下:
首先说一下为什么寻找最大间隔?
因为我们在分类的时候,如果一个点距离我们的超平面越远,那我们是不是就有更大的可能性将它们正确分类?所以这个间隔就是反映这个样本点距离我们超平面的远近程度。

函数间隔

上面说了 |ω⃗ x⃗ +b| 可以相对的表示点x距离超平面的距离,而且SVM是个二分类问题,对正类标签为 y=1 ,对负类标签为 y=1 ,所以函数间隔为:

γi=yi(ω⃗ xi+b)i=0,1,...,m

我们知道 γi 是个整数,表示训练集中每个点距离超平面的距离。
但我们发现,如果将 ωb 的值增大2倍,超平面没有改变,但函数间隔增大2倍。所以需要引入几何间隔

几何间隔

几何间隔 γi=ω ,这样避免上述情况的发生。
正式公式:

γi=yi(ω⃗ ω⃗ xi+bω⃗ )i=0,1,...,m

可以发现,我在一开始举的例子中,求得点 (1,0) 到超平面的距离为 2 就是几何间隔。


几何间隔最大化

现在我们已经知道了超平面的表达式,知道了选用哪种间隔标准,现在就轮到如何求解使得几何间隔最大化?
支持向量:距离超平面最近的几个训练样本使得 |ω⃗ Tx⃗ +b|=1 成立,这些样本点称之为支持向量
注意:这里的 |ω⃗ Tx⃗ +b|=1 是函数间隔,不是几何间隔,不然不一定能找到一个超平面距离最近的正负样本几何间隔恰好为1.
这里写图片描述
如图所示,我们希望 γ=2ω 越大越好。
所以:

max 2ω

s.t. yi(ωTxi+b)1,i=1,2,...,m

为了最大化间隔,需最大化 2ω ,等价于最小化 12ω2
所以线性可分支持向量机的优化问题:
min12ω2

s.t. yi(ωTxi+b)1,i=1,2,...,m


Kernel(核函数)

当训练集线性不可分时,可以使用核函数将线性不可分数据转换为高维空间的线性可分数据。
常用的核函数包括多项式核函数、高斯核函数、字符串核函数等


对于如何应用SVM,MATLAB中可以使用liblinear、libsvm等库,scikit-learn也提供了使用SVM的接口。
只需要选择正则项的参数和核函数类别即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值