您的位置:首页 > 其它

Andrew Ng - SVM【1】最优间隔分类器

2015-04-12 15:36 232 查看

Andrew Ng - SVM【1】最优间隔分类器

Ng说,SVM是最好的监督学习算法(因为你用不用,它就那里,现成的)。为了了解SVM,我们首先应该絮叨絮叨怎样用一个较大的间隔将数据划开成类;接着好戏上演,我会讲到最优间隔分类器;然后我会讲一些核函数(Kernel)的知识,这个尤其重要,因为核函数是打通低维和高维通道的关键手段;最后,我将会讲解用SMO算法怎么实现SVM,顺利收关。

从间隔(margins)讲起

1. 对间隔的一个直观的认识

在logistic回归中,对于预测以θ\theta为参在xx(特征向量,长什么样子呢?\color{red}{长什么样子呢?})条件下yy为1的概率<p(y=1|x;θ)p(y=1|x;\theta)>,我们会使用模型hθ(x)=g(θTx)h_\theta(x)=g(\theta^Tx)作为假设。所以当hθ≥0.5h_\theta\geq0.5或者当且仅当θTx≥0\theta^Tx\geq0时我们会认为预测结果为1(直接将问题扣在二分类?)\color{red}{(直接将问题扣在二分类?)}。那么我们来考虑一下这个问题,显然θTx\theta^Tx越大hθ(x)=p(y=1|x;θ)h_\theta(x)=p(y=1|x;\theta)就会越大,因此当我们在这种情况下,将结果预测为1就会非常“自信”。所以直观的理解,当θTx≫0\theta^Tx\gg0时,我们会很确定预测的结果为1,而当θTx≪0\theta^Tx\ll0的时候则会很肯定y=0。现给定一个训练集,同样,对于训练数据,假设我们可以找到相应的θ\theta使得不论何时,只要y=1y=1就有θTx(i)≫0\theta^Tx^{(i)}\gg0,只要y=0y=0就有θTx(i)≪0\theta^Tx^{(i)}\ll0,那么根据这样的θ\theta对相应的新数据做预测就非常简单了。不过理想很丰满,现实很骨感,要找到这样的θ\theta还真不容易。不过有个概念叫函数间隔,可能会给这个理论一个相对好一点的支撑。

2. 对于预测的“信心”做一个分析

看下图,X代表正的训练样例,O代表负的训练样例,我们用一条线(由θTx=0\theta^Tx=0确定的分割超平面)将正负样本分开,对A、B、C三点我们来做个分析。



对于A点,我们会很确定y=1;而相反,对于C点来说,或许根据当前的SH我能说y=1,可是机器学习这种事情,不确定性的东西本来就多,如果SH稍微动一动,可能C的分类就不好说了。因此,当点距离我的分割超平面足够远的时候,我们对数据的预测会很简单。那么,能不能在不同类别之间,真的存在那么一个边界,使我们很自信准确(意思就是离边界足够远)的预测出数据所属类别?几何间隔(geometric margin)粗现。

3. 一些符号的说明

为了更好的讲解SVM,我们将使用y∈{−1,1}(二分类,如何表示多分类?)y\in\{-1,1\}\color{red}{(二分类,如何表示多分类?)}来表示分类标签;分类器将以w,bw,b为参,即:hω,b(x)=g(ωTx+b)h_{\omega,b}(x)=g(\omega^Tx+b)。

在上述hh中,g(z)={1−1z≥0z<0\begin{equation}
g(z)=
\begin{cases}
1 &\mbox{z$\geq$0}\\
-1 &\mbox{z<0}
\end{cases}
\end{equation},可以注意到,bb其实是超平面的截距。

4. 函数间隔和几何间隔

给定训练样本m条(x(i),y(i)),i∈{1,...,m}(x^{(i)},y^{(i)}),i\in\{1,...,m\},对于参数(ω,b)(\omega,b)定义函数间隔为:

γ^(i)=y(i)(ωTx+b)\hat{\gamma}^{(i)}=y^{(i)}(\omega^Tx+b)

值得注意的是,根据我们上边对间隔的描述,如果y(i)=1y^{(i)}=1,意味着如果要使得函数间隔尽量大的话,则 ωTx+b\omega^Tx+b得是一个很大的正数;相反,如果y(i)=−1y^{(i)}=-1,意味着如果要使得函数间隔尽量大的话,则 ωTx+b\omega^Tx+b得是一个很大的负数。同时不难看出当y(i)(ωTx+b)>0y^{(i)}(\omega^Tx+b)>0的时候,我们的预测一定是对的。所以相应的如果我们需要准确的预测数据的分类,则函数间隔越大越好(说明离超平面越远)。

但是这里存在一个问题,对于我们选取的g(z)g(z),可以看到其实g(ωT+b)=g(2ωT+2b)g(\omega^T+b)=g(2\omega^T+2b),但这个却对函数间隔有很大的影响,通过调整参数的系数,我们发现函数间隔可能会变得很大(把(ωT+b)(\omega^T+b)变成(2ωT+2b)(2\omega^T+2b),函数间隔就翻了一倍)。这不科学!通常在这种情况下,为了标准化函数间隔,上帝会为我们打开一扇窗。承接上文,几何间隔亮相!

如图所示:



可以看到,ω\omega是一个和分割超平面正交(话说正交内积为0是怎么体现的?)\color{red}{(话说正交内积为0是怎么体现的?)}的向量,A点则是某个分类为y(i)=1y^{(i)}=1对应的x(i)x^{(i)}所确定的点(x(i)x^{(i)}也是一个向量),其距超平面的距离AB=γ(i)AB=\gamma^{(i)}。要计算γ(i)\gamma^{(i)},有几个条件:

(1)单位同向的向量ω/||ω||;(2)A:x(i);(3)B:(x(i)−γ(i)ω/||ω||);(4)B点在超平面上。\begin{aligned}
& (1)单位同向的向量\omega/||\omega||;\\
& (2)A:x^{(i)};\\
& (3)B:(x^{(i)}-\gamma^{(i)}\omega/||\omega||);\\
& (4)B点在超平面上。
\end{aligned}

所以可以有以下等式:

ωT(x(i)−γ(i)ω/||ω||)+b=0\omega^T(x^{(i)}-\gamma^{(i)}\omega/||\omega||)+b=0

则可以得到γ(i)\gamma^{(i)}:

γ(i)=ωT(x(i)+b)||ω||=(ω||ω||)Tx(i)+b||ω||\gamma^{(i)}=\frac{\omega^T(x^{(i)}+b)}{||\omega||}=\left(\frac{\omega}{||\omega||}\right)^Tx^{(i)}+\frac{b}{||\omega||}

当然看得出这只是A点的几何间隔,更一般的,对于任意训练样本(x(i),y(i))(x^{(i)},y^{(i)})在以(ω,b)(\omega,b)为参情况下的几何间隔见如下等式:

γ(i)=y(i)((ω||ω||)Tx(i)+b||ω||)\gamma^{(i)}=y{(i)}\left(\left(\frac{\omega}{||\omega||}\right)^Tx^{(i)}+\frac{b}{||\omega||}\right)

当||ω||=1||\omega||=1的时候,函数间隔和几何间隔相等,这就意味着在两种间隔中间,冥冥中有某种联系(γ=γ^||ω||\gamma=\frac{\hat{\gamma}}{||\omega||});还有一点要说明的是,当前妈妈已经不用担心我的几何间隔随(ω,b)(\omega,b)的变化而变化了(对其做了正规化)。

回归到我们的问题,找一个分割超平面,让所有点都离超平面尽可能的远。所以在给定集合S={(x(i),y(i));i=1,...,m}S=\{(x^{(i)},y^{(i)});i=1,...,m\}时,函数间隔和几何间隔最终的取值为

函数间隔:γ^=mini=1,...,mγ^(i)\hat{\gamma}=\min_{i=1,...,m}\hat{\gamma}^{(i)}

几何间隔:γ=mini=1,...,mγ(i)\gamma=\min_{i=1,...,m}\gamma^{(i)}

5. 最优间隔分类器

让我们先把目标放在一个线性可分的训练集上,稍后再推广到高维的情况。我们要使得间隔最大化,才能尽量满足分类时尽可能“自信”的需求,所以所求问题可以描述如下:

maxγ,ω,bγs.t.y(i)(ωTx(i)+b)≥γ,i=1,...,m||ω||=1.
\begin{aligned}
&max_{\gamma,\omega,b}\quad\gamma \\
& s.t.\quad y^{(i)}(\omega^Tx^{(i)}+b)\geq\gamma,\quad i=1,...,m\\
& ||\omega||=1.
\end{aligned}

解释一下上边的式子,γ\gamma为样本中最小的函数间隔,所以要求最大的函数间隔,必然要满足条件:所有的样本函数间隔都要不小于γ\gamma,而||ω||=1||\omega||=1保证了函数间隔和几何间隔相等。至此,如果我们能够写代码搞定上述问题,那最优间隔无疑是找到了。可是看看上边的式子,这个最优值怎么求呢?怎么求呢?怎么求呢?实际上在条件||ω||=1||\omega||=1的约束下,我们面临的是一个非凸问题,这意味着两件事,不好解决和非常不好解决(对于凸优化问题,有许多现成软件可以接收格式化的参数,直接计算优化结果),所以在此基础上我们把问题转化一下:

maxγ,ω,bγ^||ω||s.t.y(i)(ωTx(i)+b)≥γ^,i=1,...,m
\begin{aligned}
&max_{\gamma,\omega,b}\quad\frac{\hat{\gamma}}{||\omega||} \\
& s.t.\quad y^{(i)}(\omega^Tx^{(i)}+b)\geq\hat{\gamma},\quad i=1,...,m
\end{aligned}

当然在当前情况下,问题仍然非凸,我们依然愁眉不展(用γ=γ^||ω||\gamma=\frac{\hat{\gamma}}{||\omega||}把γ\gamma换了一下,还去掉了一个条件“||ω||=1||\omega||=1”),那怎么办嘞?这时候ω\omega和bb在几何间隔下有个性质,可以随意伸缩!这就比较屌了,我直接固定γ^=1\hat{\gamma}=1,那么肯定会有与之对应的ω\omega和bb使得γ\gamma不变!再审视一下问题,最大化γ^/||ω||\hat{\gamma}/||\omega||就变成了最大化1/||ω||1/||\omega||等同于最小化||ω||2||\omega||^2。方程式如下:

minγ,ω,b12||ω||2s.t.y(i)(ωTx(i)+b)≥1,i=1,...,m
\begin{aligned}
&min_{\gamma,\omega,b}\quad\frac{1}{2}||\omega||^2 \\
& s.t.\quad y^{(i)}(\omega^Tx^{(i)}+b)\geq1,\quad i=1,...,m
\end{aligned}

眼熟!现在问题转化成了一个有线性条件约束的凸优化问题!也是我们要找的最优间隔分类器!找一段二次规划(quadratic programming)代码直接搞定!

话说我们的最优分割超平面找到这里就应该画上句号了,可是注意,我们解决的问题依然是线性的,面对的还是假设中必然可分类的情况,那么如果训练样本非线性或者线性不可分怎么办?一个更加高端的话题等着我们去探索,让我们来认识一下拉格朗日对偶规划(lagrange duality programming),为核函数做个铺垫。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: