2

SVM公式详尽推导,没有思维跳跃。 - Hisi

 1 year ago
source link: https://www.cnblogs.com/hisi-tech/p/16725223.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

SVM公式详尽推导,没有思维跳跃。

假定数据集T={(x1,y1),(x2,y2),...,(xn,yn)},xn∈Rk,yn∈{1,−1}T={(x1,y1),(x2,y2),...,(xn,yn)},xn∈Rk,yn∈{1,−1}线性可分,SVM的优化目标是:

优化一个超平面的参数,使得这个超平面,能够正确划分两类数据,并且,距离(动词),两类数据最近的那个点,的距离最大。

tip: 优化一个超平面的参数指的是:调整超平面的参数值。

写成数学公式为:

使得这个超平面,能够正确划分两类数据[1]

y(w⋅x+b)>0(1)(1)y(w·x+b)>0

距离(动词),两类数据最近的那个点,的距离最大。[2]

max(min(yw⋅x+b||w||))(2)(2)max(min(yw·x+b||w||))

假设在所有(w,b)∈{(w1,b1),(w2,b2),⋯}(w,b)∈{(w1,b1),(w2,b2),⋯}中,最优解为(w∗,b∗)(w∗,b∗),该最优解对应的,离这个超平面最近的点为(wk,yk)(wk,yk),我们现在改写(2)(2),但是毕竟是需要优化的,我们就不把最优解放到里面去,那么(2)(2)可以改写为:

max(ykw⋅xk+b||w||)max(ykw·xk+b||w||)

如果要写进去,那么就可以写成:

max(ykw⋅xk+b||w||)=ykw∗⋅xk+b∗||w∗||max(ykw·xk+b||w||)=ykw∗·xk+b∗||w∗||

我们继续在上面的假设内,我们看到离超平面(w∗,b∗)(w∗,b∗)最近的点,到该超平面的距离为ykw∗⋅xk+b∗||w∗||ykw∗·xk+b∗||w∗||,那么公式(1)(1)可以改写为:

y(w∗⋅x+b∗)||w∗||≥yk(w∗⋅xk+b∗)||w∗||y(w∗·x+b∗)||w∗||≥yk(w∗·xk+b∗)||w∗||

现在让我们假设(注意,我现在已经在上面的假设上又假设了一次,相当于if语句里面又来了个if语句,我现在还没有说明对应的两个else语句,只有说明了两个else语句,所有情况才算全部讨论到),我们找到了(w∗,b∗)(w∗,b∗),但是让我们来看看这个解(2w∗,2b∗)(2w∗,2b∗)。首先,其满足(2)(2),另外:

max(ykw⋅xk+b||w||)=ykw∗⋅xk+b∗||w∗||=yk2w∗⋅xk+2b∗||2w∗||,||2w∗||=(∑(2wi)2)−−−−−−−−−−√=(4∑w2i)−−−−−−−−√=2(∑w2i)−−−−−−−√=2||w∗||max(ykw·xk+b||w||)=ykw∗·xk+b∗||w∗||=yk2w∗·xk+2b∗||2w∗||,||2w∗||=(∑(2wi)2)=(4∑wi2)=2(∑wi2)=2||w∗||

我们再来看更一般的:

max(min(yw⋅x+b||w||))=max(min(ykw⋅x+kb||kw||)),k≠0max(min(yw·x+b||w||))=max(min(ykw·x+kb||kw||)),k≠0

tip: 我这里假设了k≠0k≠0,其实这不是假设,而是必然的结果,因为如果k=0k=0,那么超平面(kw∗,kb∗)=(0,0)(kw∗,kb∗)=(0,0),这是不满足(1)(1)的(把ww和bb均设为0,然后看看左边是否都大于0),既然不满足(1)(1),(0,0)(0,0)就不是解,那么k=0k=0就不在我们的讨论范围内,所以k≠0k≠0。k≠0k≠0的原因是其不在我们的讨论范围内,而不是简单的,听到已经麻木了的"分母不能为0,所以k≠0k≠0"。另外,通过穷举可以看出k∈R ∧≠0k∈R∧≠0。

从上面的一个式子可以看出,就算我们找到了一个最优解(w∗,b∗)(w∗,b∗)(或者我们找到的是(2w∗,2b∗)(2w∗,2b∗),但是我们可以把(kw∗,kb∗)(kw∗,kb∗)记作(w∗,b∗)(w∗,b∗)),我们可以通过给予ww和bb一个非零参数kk,诞生出另一个解,但实际上集合{(w∗,b∗),(2.2w∗,2.2b∗),(3w∗,3b∗),...}{(w∗,b∗),(2.2w∗,2.2b∗),(3w∗,3b∗),...}都是同一个向量(如果ww是一个n维向量,那么(w,b)(w,b),可以看作一个n+1维向量。),另外,因为k∈R ∧≠0k∈R∧≠0,y(w⋅x+b)>0y(w·x+b)>0(因为yw⋅x+b||w||yw·x+b||w||为点(x,y)(x,y)到超平面(w,b)(w,b)的距离,数据集T是线性可分的,那么该距离大于0,从而分子大于0),所以

y(kw⋅x+kb)>0y(kw·x+kb)>0

那么优化目标可以改写为[3]

max(min(yw⋅x+b||w||))=max(min(ykw⋅x+kb||kw||))=max(ykkw⋅xk+kb||kw||)=max(1||k1w||)=max(1||w||),s.t:y(w⋅x+b)||w||≥yk(w⋅xk+b)||w||=1||k1w||=1||w||,k≠0max(min(yw·x+b||w||))=max(min(ykw·x+kb||kw||))=max(ykkw·xk+kb||kw||)=max(1||k1w||)=max(1||w||),s.t:y(w·x+b)||w||≥yk(w·xk+b)||w||=1||k1w||=1||w||,k≠0
max(1||w∗||)⟺min(||w∗||)⟺min(12||w∗||2)max(1||w∗||)⟺min(||w∗||)⟺min(12||w∗||2)

所以最终优化目标为(在上面的两个假设内):

min(12||w||2),s.t  y(w⋅x+b)≥1min(12||w||2),s.ty(w·x+b)≥1

到这里为止,SVM的推导其实还未完,因为我们是做了两个假设才推出SVM的优化公式的,那万一假设不满足呢?
我们一共做了两个假设:

假设在所有(w,b)∈{(w1,b1),(w2,b2),⋯}(w,b)∈{(w1,b1),(w2,b2),⋯}中,最优解为(w∗,b∗)(w∗,b∗)

现在让我们假设,(xxx),我们找到了(w∗,b∗)(w∗,b∗)

现在让我们讨论另外的情况:

  • 对应于假设”现在让我们假设,(xxx),我们找到了(w∗,b∗)(w∗,b∗)“,如果找不到(w∗,b∗)(w∗,b∗)怎么办,那就继续找嘛,因为大假设里面保证了最优解存在,所以(w∗,b∗)(w∗,b∗)是一定能找到的。所以,第二个if对应的else语句就是continue,即一直找。(应该是的,既然存在,那么就可以找到)
  • 对应于假设”假设在所有(w,b)∈{(w1,b1),(w2,b2),⋯}(w,b)∈{(w1,b1),(w2,b2),⋯}中,最优解为(w∗,b∗)(w∗,b∗)“,如果(w,b)∈{}(w,b)∈{}怎么办?因为数据集线性可分,那么就存在(w,b)(w,b)能够正确划分数据集,所以(w,b)∈{}(w,b)∈{}不成立,那么(w,b)∈{(w1,b1),(w2,b2),⋯}(w,b)∈{(w1,b1),(w2,b2),⋯}一定成立,那么如果没有最优解怎么办?从最终的优化目标中可以看出,优化目标有下界(即值的变化范围存在一个最小值),那么最优解一定是存在的。所以,第一个if对应的else不用写,因为不会走else语句。

至此,SVM的推导才算真正完成。

线性可分:对于数据集SS,若存在一个超平面(w,b)(w,b),能够正确划分数据集,即对于任意样本(x,y)(x,y),如果y=1y=1,那么w⋅x+b>0w·x+b>0,否则w⋅x+b<0w·x+b<0,则(这个字对应前面的‘若’),超平面(w,b)(w,b)可分数据集SS,数据集SS线性可分。

超平面:满足某个等式(如w⋅x−y+b=0w·x−y+b=0)的高维度(即x∈Rk,k>2x∈Rk,k>2)点(x,y)(x,y)(这里的xx和yy对应前面一个括号里面的xx和yy),的集合。【另外可以看这里】

[1]:公式(1)(1)的解释,见线性可分,运算符号‘⋅·’为向量的点积运算.

[2]:公式(2)(2)最里面的公式为点到超平面的距离,见 文章:高维空间中,点的超平面的距离 .

[3]:

  • max(min(ykw⋅x+kb||kw||))=max(ykkw⋅xk+kb||kw||)max(min(ykw·x+kb||kw||))=max(ykkw·xk+kb||kw||)的解释:
    对于任意一个超平面(w,b)(w,b)可行解,都存在一个点(xk,yk)(xk,yk)(自己在三维空间中想一下,对于某个能完全正确划分数据集的平面(w,b)(w,b),都会有一个离其最近的点(xk,yk)(xk,yk)),使得min(ykw⋅x+kb||kw||)min(ykw·x+kb||kw||)=ykkw⋅xk+kb||kw||ykkw·xk+kb||kw||.

  • max(ykkw⋅xk+kb||kw||)=max(1||k1w||)max(ykkw·xk+kb||kw||)=max(1||k1w||)的解释:
    因为y(kw⋅x+kb)>0y(kw·x+kb)>0取任何值,都会有分母对应其值,使其回到原来的值。另外可以这样理解:不管y(w⋅x+b)>0y(w·x+b)>0取什么值,都存在一个值k1k1使得y(k1w⋅x+k1b)=1y(k1w·x+k1b)=1,所以我们可以把y(w⋅x+b)y(w·x+b)的值限制为1,至于为什么要这么做,应该是为了简化表达式,但是这样子bb就没法优化了,后面的优化还没看。

可行解: 对于某个问题,如果某个结果满足其约束条件,那么该结果就是该问题的可行解。比如:
有以下问题:

min y,s.t: y>=1miny,s.t:y>=1

那么y=4y=4就是可行解,因为其满足约束条件。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK