机器学习笔记:线性SVM推导

article/2025/9/13 6:19:10

什么是SVM

支持向量机简称SVM是最大化分类间隔的线性分类器,如果使用核函数,可以解决非线性问题。支持向量机的目标是寻找一个分类超平面,它不仅能正确的分类每一个样本,并且要使得每一类样本中距离超平面最近的样本到超平面的距离尽可能远。

什么是SVM?我们可以知道SVM是一种二分类问题,那然后呢?SVM是一种二分类的排序方式,我们可以在线性空间中通过一根线,或者希尔伯特空间中的一个超平面确立一个将空间上的点二分,然后得到一个比较好的分类效果的算法。

那么SVM是怎么做到的呢?

我们先看一个趣味游戏:
将红白两种球散落在一张桌子上,我们需要将两种颜色不同的球进行分类,那么分类方案如下:

在这里插入图片描述

从上图的结果显示,要找出一根线分开红蓝这两类球,结果有很多,但从这三根线的最大间隔来讲,最优的还是黑线最优。然后我们还能再看,当我们将其中的一些球的位置再散乱些,球的数量再多些:

在这里插入图片描述

看来这个也是比较好得出结果的,但如果其中一些的篮球和对面的红球之间进行互换,那我们还能找到这样的一根线去分开它嘛?答案是有的,还是上面那幅图,那我再加一个红球在篮球阵营,那么这就只能是局部最优了:

在这里插入图片描述

初步看感觉还行,到时候推导或者写代码的时候可以将其当做异常值除去,或者一个另类的特征。但如果蓝球已经和红球完全混合,这应该怎么办?这可能将是一条曲线了,具体如下:

在这里插入图片描述

我们可以发现,这个问题已经由原来的线性可分变成了线性不可分,并且需要曲线才会有最大间隔,但其实这分离开这两类样本的并不是真的曲线,只是将原来的线性空间换成了希尔伯特空间.而已,下面我们来看下面这张图就知道了:

在这里插入图片描述

具体的可以看如下链接中的一分钟短视频(需要翻墙9):
https://www.youtube.com/watch?v=3liCbRZPrZA

然后我们可以假设的是,从上往下看,看到的二维平面很可能是下面的样子,呈现的是山峰状,被绿色圈起来的就是支持向量,而那条最明显的黑线就是超平面,其余的闭环是数据域:

在这里插入图片描述

那么我们便可以总结:把这些球叫做data,把直线叫做classifier, 找到最大间隙的trick叫做optimization,转换空间的步骤叫做kernelling, 分离开新空间点的平面叫做hyperplane,把距离平面最近的点叫做support vector


SVM实例

我们可以看一个SVM的实例模型,西瓜书图6.3中,介绍的示例,这里可以看到什么是支持向量机:

在这里插入图片描述

我们知道点到直线的距离公式可以表示为:

d = ∣ A x 0 + B y 0 + C A 2 + B 2 ∣ d = \left | \frac{Ax_{0}+By_{0}+C}{\sqrt{A^{2}+B^{2}}} \right | d=A2+B2 Ax0+By0+C
那么同理,扩展到我们的超平面中,距离的表示公式变为:
d = ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ d = \frac{|w^{T}x+b|}{{||w||}} d=wwTx+b
其中 ∣ ∣ w ∣ ∣ = w 1 2 + w 2 2 ||w||=\sqrt{w_{1}^{2}+w_{2}^{2}} w=w12+w22 ,为||w||的L2范数, w T w^{T} wT叫做超平面的法向量,b为位移量,而d我们称作为分类间隔。

另外,我们需要求解的,就是上图中的r,也就是公式中的d,但我们到底如何去求解才能将其最大化?或者说我们如何判断超平面是否将样本点正确分类?第一步应该就是解出它两边的约束,只有中间的间隔最大才能说明达到了最优化。

首先,我们需要求解出使其最大化的条件是什么,那么这里就要理解的变量是:

函数间隔和几何间隔

对于一个训练样本 ( x i , y i ) (x_{i},y_{i}) (xi,yi)我们定义它到超平面 ( w , b ) (w,b) (w,b)的函数间隔为:
r ^ i = y i ( w x i + b ) \hat{r}_{i} = y_{i}(wx_{i}+b) r^i=yi(wxi+b)
我们当然希望上式的距离越大越好,因为越大,那么支持的距离也就越好,但事实并不是这样的,还是拿图6.3来看,在这个二维平面,我们可以知道函数间隔为 r = A x 0 + B y 0 + C r=Ax_{0}+By_{0}+C r=Ax0+By0+C,当我们成比例改变A、B、C的系数时,平面没有任何变化,但是直线却发生了很大的变化,导致与某些点之间的距离被拉远或者拉大所以我们需要对w起某种约束,使其间隔是确定的,这时函数间隔就变成了几何间隔。

r i = w ∣ ∣ w ∣ ∣ ⋅ x i + b ∣ ∣ w ∣ ∣ r_{i}=\frac{w}{||w||}\cdot x_{i}+\frac{b}{||w||} ri=wwxi+wb

这个二维平面上有两种点,我们分别对它们进行标记:

  • 上方的加号标记为1,我们人为规定其为正样本;
  • 下方的减号标记为-1,我们人为规定其为负样本。

所以在二维空间中,几何间隔就是点到直线的距离。在三维及以上空间中,就是点到超平面的距离。所以我们可以用几何间距来表示,而函数距离,就是上述距离公式中的分子。也就是上面我们求出的点到直线的距离公式。

那么理解了这一点,接下来我们就需要对这个距离最大化,根据前面我们进行的标记,可以得出:

{ w T x i + r ≥ 1 , ∀ y i = 1 w T x i + r ≤ − 1 , ∀ y i = − 1 \left\{\begin{matrix} w^{T}x_{i}+r\geq 1 , \forall y_{i}=1 & \\ \\ w^{T}x_{i}+r\leq -1, \forall y_{i}=-1 & \end{matrix}\right. wTxi+r1,yi=1wTxi+r1,yi=1

对上式进一步化简,可以得到:

y i ( w T x i + r ) ≥ 1 y_{i}(w^{T}x_{i}+r)\geq 1 yi(wTxi+r)1

那么最终得出的式子,正是因引用了几何间隔以及标记的作用,即为我们的约束方程。

再来看看我们的目标方程,我们可以从图中看到画圈的点即为支持向量,而它们都在偏移量为-1和1的直线上,所以可以得到:
∣ w T x i + r ∣ = 1 , ∀ 支 持 向 量 点 x i = 1 |w^{T}x_{i}+r| = 1, \forall 支持向量点x_{i}=1 wTxi+r=1,xi=1

所以,我们的目标函数由于分子为1,那么就变成了:
m a x : d = 1 ∣ ∣ w ∣ ∣ max: \ \ d = \frac{1}{{||w||}} max:  d=w1

但实际情况中,我们更喜欢求解的是最小化问题,这样有利于我们的计算,所以我们将上式转换为:

m i n : d = 1 2 ∣ ∣ w ∣ ∣ min: \ \ d = \frac{1}{2}||w|| min:  d=21w
按常理来讲是没有1/2的,但这一步是为了后面好求导而准备的,并且这样做并没有对最优化求解有丝毫影响,所以我们得到了支持向量机的数学模型为:

m i n : d = 1 2 ∣ ∣ w ∣ ∣ s . t y i ( w T x i + r ) ≥ 1 , i = 1 , 2 , . . . , n \begin{matrix} min: \ \ d = \frac{1}{2}||w|| \\ & \\ s.t \ \ y_{i}(w^{T}x_{i}+r)\geq 1, \ \ i=1,2,...,n & \end{matrix} min:  d=21ws.t  yi(wTxi+r)1,  i=1,2,...,n


SVM解析

首先我们的原目标函数为:
a r g m a x w , b { 1 ∣ ∣ w ∣ ∣ m i n i [ y i ( w T ( x i ) + b ) ] } \underset{w,b}{arg max}\left \{ \frac{1}{||w||}\underset{i}{min}[y_{i}(w^{T} (x_{i})+b)] \right \} w,bargmax{w1imin[yi(wT(xi)+b)]}

经过上面的推导,我们可以得出总的支持向量机模型为:

m i n : d = 1 2 ∣ ∣ w ∣ ∣ s . t y i ( w T x i + r ) ≥ 1 i = 1 , 2 , . . . , n min: \ \ d = \frac{1}{2}||w|| \\ \ s.t \ \ y_{i}(w^{T}x_{i}+r)\geq 1 \ \ i=1,2,...,n min:  d=21w s.t  yi(wTxi+r)1  i=1,2,...,n

但这样的约束还是很难求,我们不知道它什么时候取最大值,另外就是假如是引入高维空间的话,由于不是正定,这个QP问题将逐渐转变成NP-complete问题,所以,我们不妨将有约束条件用拉格朗日对偶算法成无约束方程,所以定义拉格朗日函数为:

L ( w , b , a ) = 1 2 ∣ ∣ w ∣ ∣ 2 − ∑ i = 1 m a i ( y i ( w ⋅ x i + b − 1 ) ) L(w,b,a) = \frac{1}{2}||w||^{2} - \sum_{i=1}^{m}a_{i}(y_{i}(w\cdot x_{i}+b -1)) L(w,b,a)=21w2i=1mai(yi(wxi+b1))

这里为什么要用拉格朗日函数和相应的证明可以看下面两篇博文还有统计学习方法附录C:
为什么SVM要用拉格朗日对偶算法来解问题?

深入理解拉格朗日函数和KKT条件

根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题:
m a x a m i n w , b L ( w , b , a ) \underset{a}{max} \ \underset{w,b}{min}L(w,b,a) amax w,bminL(w,b,a)

将拉格朗日函数 L ( w , b , a ) \ L(w,b,a)  L(w,b,a) w , b \ w,b  w,b求偏导数并令其等于0:
{ ∀ w L ( w , b , a ) = w − ∑ i = 1 m a i y i x i = 0 ∀ b L ( w , b , a ) = − ∑ i = 1 m a i y i = 0 \left\{\begin{matrix} \forall_{w} L(w,b,a) = w - \sum_{i=1}^{m}a_{i}y_{i}x_{i} = 0 & \\ \\ \forall_{b} L(w,b,a) = -\sum_{i=1}^{m}a_{i}y_{i} = 0 & \end{matrix}\right. wL(w,b,a)=wi=1maiyixi=0bL(w,b,a)=i=1maiyi=0

得:
{ w = ∑ i = 1 m a i y i x i 0 = − ∑ i = 1 m a i y i \left\{\begin{matrix} w = \sum_{i=1}^{m}a_{i}y_{i}x_{i} & \\ \\ 0 = -\sum_{i=1}^{m}a_{i}y_{i} & \end{matrix}\right. w=i=1maiyixi0=i=1maiyi

再将上面两个偏导带入对偶式中,得到的优化方程为:

在这里插入图片描述

由于ai和yi都是实数,因此转置后与自身一样,所以可以得到上式。

(不知道为啥上面这段代码在csdn出不来,但是在latex还有axmath显示正常,去百度了好久,寻找无果,那么本篇就到这里吧。。。)

未完待续

在这里插入图片描述

下次争取全部写完。


http://chatgpt.dhexx.cn/article/6stHuJEn.shtml

相关文章

SVM推导过程浅析

转载请注明出处,原文地址 前言 SVM - support vector machine, 俗称支持向量机,为一种supervised learning算法,属于classification的范畴。本篇文章将会讲述SVM的原理并介绍推导过程。 SVM推导过程 如图,我们有些红色与蓝色点…

svm推导

自己推一遍才印象深刻,CSDN对公式的支持很不好,所以在本地用latex写,并转换成了图片上传

【超详细】支持向量机(SVM)数学推导

目录 一、硬间隔SVM(Hard Margin SVM) 二、对偶问题(Dual Problem) 1.将有约束问题转变为无约束问题 2.强对偶关系 3.计算拉格朗日函数的最小值 4.得到对偶形式 三、对偶形式的求解 1.KKT条件的引入 2.计算w*和b* 四、软间隔SVM(Soft M…

svm原理详细推导

笔者在查阅了大量资料和阅读大佬的讲解之后,终于对svm有了比较深一点的认识,先将理解的推导过程分享如下: 本文主要从如下五个方面进行介绍:基本推导,松弛因子,核函数,SMO算法,小结…

支持向量机SVM推导及求解过程

支持向量机是属于原创性、非组合的具有明显直观几何意义的分类算法,具有较高的准确率。 使用SVM算法的思路:(1)简单情况,线性可分情况,把问题转化为一个凸优化问题,可以用拉格朗日乘子法简化&am…

SVM 公式推导

1、SVM思想 (1)SVM算法的依据就是分类器B的分类间隔比分类器C的分类间隔大。这里涉及到第一个SVM独有的概念”分类间隔”。在保证决策面方向不变且不会出现错分样本的情况下移动决策面,会在原来的决策面两侧找到两个极限位置(越过…

机器学习笔记之十二——SVM原理及推导

svm(support vector machine)是一种二分类算法,它的目标在于寻找一个能将两种点分离的直线或平面或超平面。 如图(来自wiki): 图中的红线将两边数据点分开,这条线就是分割直线,同样…

DFS与DP算法

名词解释: DFS(Dynamic Plan):动态规划 DFS(Depth First Search):深度优先搜索 DFS与DP的关系 很多情况下,dfs和dp两种解题方法的思路都是很相似的,这两种算法在一定程度上是可以互相转化的。 想到dfs也就常常会想到dp…

​Python—数据结构与算法​---动态规划—DP算法(Dynamic Programing)

我们一路奋战, 不是为了改变世界, 而是为了不让世界改变我们。 目录 我们一路奋战, 不是为了改变世界, 而是为了不让世界改变我们。 动态规划——DP算法(Dynamic Programing) 一、🏔斐波那契…

XDOJ(智慧平台)--分配宝藏(用动态规划dp算法解决)(C语言)

------------------------------------------------------------ 作为西电渣渣,这是我第一次接触需要一些很明确的算法的题目。 第一次博客写废话较多hhh,可以直接到下面看分析 我在昨天晚上和舍友一起肝这道题,肝了一个晚上都没有解决&…

dp算法篇Day1

"多希望有人来陪我,度过末日啊~" 讲讲我为什么突然想更新这篇栏目。 想想自己也算 "系统" 接触计算机这个学科也有差不多一年了,回想起当初下定决心要全身心投入到这个专业或者说行业中来,现在到了这样的地步&#xff0c…

第十四周DP算法总结

这周自己主要再看DP算法的博客,感觉DP这一部分内容确实比之前的都要麻烦一些,最后攻克这一部分难题还是挺好的。 这周自己总结了一些题型,以及一些方法思路,最后再把动态规划和之前的分治和贪心做一下比较。下面是详细的总结。 动…

DP算法(Dynamic Programming,俗称动态规划)是最经典算法之一

DP算法(Dynamic Programming,俗称动态规划)是最经典算法之一.本笔记以耳熟能详的数塔问题为引子,深入讨论01背包的解决方法. 首先,如下图所示,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少? 这个问题,对…

DP算法:动态规划算法

步骤 (1)确定初始状态 (2)确定转移矩阵,得到每个阶段的状态,由上一阶段推到出来 (3)确定边界条件。 例题 蓝桥杯——印章(python实现) 使用dp记录状态&#x…

动态规划(DP)算法初识

先用大白话来说一下几种经典算法大概的意思: 贪心算法:我就一次机会,为了达到目的,其他的我啥也不考虑回溯算法:我有无数次机会,还能怕我有达不到目的的时候?动态规划算法:我能随意…

常用十大算法_动态规划算法(DP)

动态规划算法(DP) 高能预警:DP算法不容易理解,需要动脑筋查资料找例题 动态规划算法(Dynamic Programming),是将复杂问题拆分成子问题,并在子问题的基础上,求解复杂问题…

动态规划算法(DP)

校招笔试面试前,大家一般都会先去牛客网上刷刷题,《剑指offer》,《leetcode》走起来,然后初次入手,发现很多不会,不会到什么程度呢,连个想法都没有,于是就去讨论区看答案,然后java大神,c++大神会给出花式解答,他们喜欢在答案前加一句,简单的dp算法,递归就可以解决…

【算法笔记】树形DP算法总结详解

0. 定义 树形DP,又称树状DP,即在树上进行的DP,是DP(动态规划)算法中较为复杂的一种。 1. 基础 令 f [ u ] f[u]~ f[u] 与树上顶点 u u u有关的某些数据,并按照拓扑序(从叶子节点向上到根节点…

★动态规划(DP算法)详解

什么是动态规划:动态规划_百度百科 内容太多了不作介绍,重点部分是无后效性,重叠子问题,最优子结构。 问S->P1和S->P2有多少种路径数,毫无疑问可以先从S开始深搜两次,S->P1和S->P2找出所有路…

ubuntu安装qt

Ubuntu安装qt 到qt官网下载“qt-opensource-linux-x64-5.9.1.run” 分别安装g, build-essential, libglq-mesa-dev, libglu1-mesa-dev freeglut3-dev 输入指令:”sudo apt-get install g” -> “sudo apt-get install build-essential” -> “sudo apt-get i…