SVM 原理详细推导

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

SVM 原理详细推导

  • 1 硬间隔最大化
    • 1.1 函数间隔与几何间隔
    • 1.2 间隔最大化
    • 1.3 凸二次规划问题求解
    • 1.4 一个求解例子
  • 2 软间隔最大化
  • 3 线性不可分问题
  • 参考

SVM 是一个分类模型,如果训练数据可以完全用一个超平面分开,则称数据集为完全线性可分的,这时可以采用硬间隔最大化建立带约束问题的最优化,此优化为凸二次规划,凸二次规划问题可以通过拉格朗日对偶性转为拉格朗日函数,转而用SMO算法求解;但现实中大部分数据集不满足完全线性可分,也就是有一些数据会分错,这时可以通过一个松弛变量,让问题同样转为凸二次规划问题;但有许多问题就是线性不可分的,这时就需要将输入向量转为更高维的向量,使得向量在高维空间为线性可分,这就要用到核技巧

1 硬间隔最大化

输入数据 { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . ( x N , y N ) (x_1,y1),(x_2,y_2),...(x_N,y_N) (x1,y1),(x2,y2),...(xN,yN)} 为线性可分数据集(即存在一个超平面将数据集完全分开), 可用一个超平面 w x + b = 0 wx+b=0 wx+b=0(由法向量 w w w 和截距 b b b 确定)将数据集分为两部分,法向量指向的一侧是正类,另一部分是负类

1.1 函数间隔与几何间隔

超平面 w x + b = 0 wx+b=0 wx+b=0 确定之后, ∣ w x i + b ∣ |wx_i+b| wxi+b 值就可以表示 x i x_i xi 点距超平面的远近 (两者相减 ( w x i + b ) − ( w x + b ) = ( w x i + b ) − 0 = w x i + b (wx_i+b)-(wx+b)=(wx_i+b)-0=wx_i+b (wxi+b)(wx+b)=(wxi+b)0=wxi+b)。 w x i + b wx_i+b wxi+b 符号与 y i y_i yi 相同( y i y_i yi 取值 +1 或 -1, y∈{1,-1})两者相乘即为绝对距离 ∣ w x i + b ∣ |wx_i+b| wxi+b,超平面与点的间隔为函数间隔
在这里插入图片描述
所有点中与超平面最小距离定义为 γ ^ \hatγ γ^
在这里插入图片描述
在函数间隔中,如果同比例改变超平面的法向量 w w w 和截距 b b b ,比如同时乘 2,超平面没变但函数间隔却增大了 2 倍。可以对w 施加约束,使得函数间隔为确定值,这时侯函数间隔成为几何间隔,也即点到平面的距离:

γ i = ( w ∗ x i + b ∣ ∣ w ∣ ∣ ) γ_i= (\frac{w*x_i+b}{||w||}) γi=(wwxi+b)
∣ ∣ w ∣ ∣ ||w|| w w w w L 2 L_2 L2 范数,同样 y i y_i yi与距离同符号,距离的绝对值为
γ i = y i ( w ∗ x i + b ∣ ∣ w ∣ ∣ ) γ_i= y_i(\frac{w*x_i+b}{||w||}) γi=yi(wwxi+b)
几何间隔的最小值为
在这里插入图片描述

1.2 间隔最大化

实际上几何间隔 γ i γ_i γi 也表示将样本点分开时的确信程度, γ i γ_i γi 值越大,则分开的确信程度也越大,为使得所有点到超平面的几何距离最大化,就需要使得最小的几何间隔 γ γ γ 最大,(注: s.t.表示满足的条件,所有点到平面的距离都应该大于等于最小距离):
在这里插入图片描述
函数间隔与几何间隔满足如下关系(带帽的为函数间隔):
在这里插入图片描述
最小几何间隔与最小函数间隔关系就为:
在这里插入图片描述
根据以上函数间隔与几何间隔关系,函数
在这里插入图片描述
就可以变为:
在这里插入图片描述
因为求以上极值的方法,与函数间隔的实际大小没有关系,所以可以假设最小函数距离为 γ ^ = 1 \hatγ=1 γ^=1

另外,求 m a x ( 1 ∣ ∣ w ∣ ∣ ) max (\frac{1}{||w||}) max(w1) ,也即是求 m i n ( 1 2 ∣ ∣ w ∣ ∣ 2 ) min(\frac{1}{2}{||w||^2}) min(21w2) ,于是优化问题转化为:
在这里插入图片描述
这是一个凸二次规划问题

1.3 凸二次规划问题求解

上一小节的原始问题为凸二次规划问题,原始问题需要用到拉格朗日对偶性转为拉格朗日函数,通过求解拉格朗日函数得到原始问题的最优解。同时,转为对偶问题还有其它优点:1、对偶问题更容易求解, 2、引入核函数,将svm 推广到非线性分类问题
在这里插入图片描述
首先构建拉格朗日函数,将原始问题转为对偶的极大极小值问题,通过把 α 当作常数,w,b为变量求极小值,随后对包含 α 变量的极小值求极大值:
在这里插入图片描述
最后求解 α ∗ α ^* α 需要用到 SMO 算法,求出 α ∗ α ^* α 之后就可以求得 w ∗ w^* w b ∗ b^* b, 这时的解一定满足 KKT 条件

观察 KKT 第三个条件
α ∗ ( y i ( w ∗ x i + b ∗ ) − 1 ) = 0 α^*(y_i(w^*x_i+b^*)-1)=0 α(yi(wxi+b)1)=0
( y i ( w ∗ x i + b ∗ ) − 1 ) > 0 (y_i(w^*x_i+b^*)-1)>0 (yi(wxi+b)1)>0 时,必有 α ∗ = 0 α^*=0 α=0 ( y i ( w ∗ x i + b ∗ ) − 1 ) = 0 (y_i(w^*x_i+b^*)-1)=0 (yi(wxi+b)1)=0 时, α ∗ α^* α 可以不必为 0,

w ∗ w* w b ∗ b* b代入 w x + b wx+b wx+b 中, 最后的预测公式就为 f ( x ) = s i g n ( ∑ 1 N α ∗ y i ( x ⋅ x i ) + b ∗ ) f(x) = sign(\sum _{1}^{N}α ^*y_i(x\cdot x_i)+b^*) f(x)=sign(1Nαyi(xxi)+b) 。预测公式中除了满足 y i ( w ∗ x i + b ∗ ) − 1 = 0 y_i(w^*x_i+b^*)-1=0 yi(wxi+b)1=0 α ∗ α^* α 不为 0 之外,其它的 α ∗ α^* α 均为 0,也即预测结果仅由满足 ( y i ( w ∗ x i + b ∗ ) − 1 ) = 0 (y_i(w^*x_i+b^*)-1)=0 (yi(wxi+b)1)=0 的点决定,满足此公式的点也即为支持向量

1.4 一个求解例子

待补充

2 软间隔最大化

在实际情况中,并不是所有点都能正确地分为正类或负类,也即不满足函数间隔大于等于 1 的约束条件,为了解决这个问题,可以为每个样本的函数间隔加一个松弛变量 ξ i ≥ 0 ξ_i≥0 ξi0 ,使得函数间隔加上松弛变量大于等于 1,约束条件变为:
y i ( w ∗ x i + b ) + ξ i ≥ 1 y_i(w*x_i+b)+ξ_i≥1 yi(wxi+b)+ξi1
同时对于每一个松弛变量都需要付出一个代价 ξ i ξ_i ξi,目标函数变为
在这里插入图片描述
C>0 称为惩罚函数,C 减小时,对误分类的惩罚减小,当模型过拟合时,我们可以减小 C 值

于是,最优化问题变为下面的凸二次规划:
在这里插入图片描述
求解待补充

3 线性不可分问题

训练好的模型预测公式为
f ( x ) = s i g n ( ∑ 1 N α ∗ y i ( x ⋅ x i ) + b ∗ ) f(x) = sign(\sum _{1}^{N}α ^*y_i(x\cdot x_i)+b^*) f(x)=sign(1Nαyi(xxi)+b)

实际中数据不一定线性可分,所以需要将输入向量 x 映射到高维空间中,使得数据在高维空间中线性可分,映射函数为 φ ( x ) φ(x) φ(x),映射后两个向量的点积称为核函数
K ( x , y ) = φ ( x ) ⋅ φ ( y ) K(x,y)=φ(x)\cdotφ(y) K(x,y)=φ(x)φ(y)
将核函数引入我们的预测函数中,由此函数变为
f ( x ) = s i g n ( ∑ 1 N α ∗ y i ( K ( x , x i ) + b ∗ ) f(x) = sign(\sum _{1}^{N}α ^*y_i(K(x,x_i)+b^*) f(x)=sign(1Nαyi(K(x,xi)+b)
从此函数可以看出其实我们并不正真需要计算x的实际映射结果 φ ( x ) φ(x) φ(x),只要知道两个向量映射后的点积即可,也即直接计算 K ( x , y ) K(x,y) K(x,y)。可以形象化的理解为向量 x 和 y都映射到高维空间后两者的点积即为核函数结果,我们不关于它们映射到了什么样的空间,只关注最后的结果

常用核函数
在这里插入图片描述

关于 SVM 的使用可以参考 scikit-learn 中 SVM 的使用

参考

1 《统计学习方法》 李航
2 SVM-支持向量机原理详解与实践


http://chatgpt.dhexx.cn/article/MavYNQrL.shtml

相关文章

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

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

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找出所有路…