假定数据集T={(x1,y1),(x2,y2),...,(xn,yn)},xn∈Rk,yn∈{1,−1}线性可分,SVM的优化目标是:
优化一个超平面的参数,使得这个超平面,能够正确划分两类数据,并且,距离(动词),两类数据最近的那个点,的距离最大。
tip: 优化一个超平面的参数指的是:调整超平面的参数值。
写成数学公式为:
使得这个超平面,能够正确划分两类数据[1]
y(w⋅x+b)>0(1)
距离(动词),两类数据最近的那个点,的距离最大。[2]
max(min(yw⋅x+b||w||))(2)
假设在所有(w,b)∈{(w1,b1),(w2,b2),⋯}中,最优解为(w∗,b∗),该最优解对应的,离这个超平面最近的点为(wk,yk),我们现在改写(2),但是毕竟是需要优化的,我们就不把最优解放到里面去,那么(2)可以改写为:
max(ykw⋅xk+b||w||)
如果要写进去,那么就可以写成:
max(ykw⋅xk+b||w||)=ykw∗⋅xk+b∗||w∗||
我们继续在上面的假设内,我们看到离超平面(w∗,b∗)最近的点,到该超平面的距离为ykw∗⋅xk+b∗||w∗||,那么公式(1)可以改写为:
y(w∗⋅x+b∗)||w∗||≥yk(w∗⋅xk+b∗)||w∗||
现在让我们假设(注意,我现在已经在上面的假设上又假设了一次,相当于if语句里面又来了个if语句,我现在还没有说明对应的两个else语句,只有说明了两个else语句,所有情况才算全部讨论到),我们找到了(w∗,b∗),但是让我们来看看这个解(2w∗,2b∗)。首先,其满足(2),另外:
max(ykw⋅xk+b||w||)=ykw∗⋅xk+b∗||w∗||=yk2w∗⋅xk+2b∗||2w∗||,||2w∗||=√(∑(2wi)2)=√(4∑w2i)=2√(∑w2i)=2||w∗||
我们再来看更一般的:
max(min(yw⋅x+b||w||))=max(min(ykw⋅x+kb||kw||)),k≠0
tip: 我这里假设了k≠0,其实这不是假设,而是必然的结果,因为如果k=0,那么超平面(kw∗,kb∗)=(0,0),这是不满足(1)的(把w和b均设为0,然后看看左边是否都大于0),既然不满足(1),(0,0)就不是解,那么k=0就不在我们的讨论范围内,所以k≠0。k≠0的原因是其不在我们的讨论范围内,而不是简单的,听到已经麻木了的"分母不能为0,所以k≠0"。另外,通过穷举可以看出k∈R ∧≠0。
从上面的一个式子可以看出,就算我们找到了一个最优解(w∗,b∗)(或者我们找到的是(2w∗,2b∗),但是我们可以把(kw∗,kb∗)记作(w∗,b∗)),我们可以通过给予w和b一个非零参数k,诞生出另一个解,但实际上集合{(w∗,b∗),(2.2w∗,2.2b∗),(3w∗,3b∗),...}都是同一个向量(如果w是一个n维向量,那么(w,b),可以看作一个n+1维向量。),另外,因为k∈R ∧≠0,y(w⋅x+b)>0(因为yw⋅x+b||w||为点(x,y)到超平面(w,b)的距离,数据集T是线性可分的,那么该距离大于0,从而分子大于0),所以
y(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≠0
注意:
max(1||w∗||)⟺min(||w∗||)⟺min(12||w∗||2)
所以最终优化目标为(在上面的两个假设内):
min(12||w||2),s.t y(w⋅x+b)≥1
到这里为止,SVM的推导其实还未完,因为我们是做了两个假设才推出SVM的优化公式的,那万一假设不满足呢?
我们一共做了两个假设:
假设在所有(w,b)∈{(w1,b1),(w2,b2),⋯}中,最优解为(w∗,b∗)
现在让我们假设,(xxx),我们找到了(w∗,b∗)
现在让我们讨论另外的情况:
- 对应于假设”现在让我们假设,(xxx),我们找到了(w∗,b∗)“,如果找不到(w∗,b∗)怎么办,那就继续找嘛,因为大假设里面保证了最优解存在,所以(w∗,b∗)是一定能找到的。所以,第二个if对应的else语句就是continue,即一直找。(应该是的,既然存在,那么就可以找到)
- 对应于假设”假设在所有(w,b)∈{(w1,b1),(w2,b2),⋯}中,最优解为(w∗,b∗)“,如果(w,b)∈{}怎么办?因为数据集线性可分,那么就存在(w,b)能够正确划分数据集,所以(w,b)∈{}不成立,那么(w,b)∈{(w1,b1),(w2,b2),⋯}一定成立,那么如果没有最优解怎么办?从最终的优化目标中可以看出,优化目标有下界(即值的变化范围存在一个最小值),那么最优解一定是存在的。所以,第一个if对应的else不用写,因为不会走else语句。
至此,SVM的推导才算真正完成。
注释:
线性可分:对于数据集S,若存在一个超平面(w,b),能够正确划分数据集,即对于任意样本(x,y),如果y=1,那么w⋅x+b>0,否则w⋅x+b<0,则(这个字对应前面的‘若’),超平面(w,b)可分数据集S,数据集S线性可分。
超平面:满足某个等式(如w⋅x−y+b=0)的高维度(即x∈Rk,k>2)点(x,y)(这里的x和y对应前面一个括号里面的x和y),的集合。【另外可以看这里】
[1]:公式(1)的解释,见线性可分,运算符号‘⋅’为向量的点积运算.
[2]:公式(2)最里面的公式为点到超平面的距离,见 文章:高维空间中,点的超平面的距离 .
[3]:
-
max(min(ykw⋅x+kb||kw||))=max(ykkw⋅xk+kb||kw||)的解释:
对于任意一个超平面(w,b)可行解,都存在一个点(xk,yk)(自己在三维空间中想一下,对于某个能完全正确划分数据集的平面(w,b),都会有一个离其最近的点(xk,yk)),使得min(ykw⋅x+kb||kw||)=ykkw⋅xk+kb||kw||.
-
max(ykkw⋅xk+kb||kw||)=max(1||k1w||)的解释:
因为y(kw⋅x+kb)>0取任何值,都会有分母对应其值,使其回到原来的值。另外可以这样理解:不管y(w⋅x+b)>0取什么值,都存在一个值k1使得y(k1w⋅x+k1b)=1,所以我们可以把y(w⋅x+b)的值限制为1,至于为什么要这么做,应该是为了简化表达式,但是这样子b就没法优化了,后面的优化还没看。
可行解: 对于某个问题,如果某个结果满足其约束条件,那么该结果就是该问题的可行解。比如:
有以下问题:
min y,s.t: y>=1
那么y=4就是可行解,因为其满足约束条件。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话