SVM推导过程浅析

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

转载请注明出处,原文地址

前言

SVM - support vector machine, 俗称支持向量机,为一种supervised learning算法,属于classification的范畴。本篇文章将会讲述SVM的原理并介绍推导过程。

SVM推导过程

如图,我们有些红色与蓝色点分部在平面中,我们设蓝点为正红点为负。SVM的任务就是找到一条线,将红点和蓝点分割开来,这条线可能会有很多种可能,图中绿色的实线是最好的一条,因为它距离红点和蓝点所在的虚线的距离最大。

在这里插入图片描述

接下来我们就一起来探讨下SVM的这条分割线是如何找到的。

首先,我们先随便找一条线做为分割线,我们选择平面上的任意一个点用向量 u ⃗ \vec{u} u 表示,设分割线的法向量为 w ⃗ \vec{w} w ,就可以计算出向量 u ⃗ \vec{u} u w ⃗ \vec{w} w 方向的投影长度。

在这里插入图片描述

假设分割线距离原点的距离为b,那么对于负样本 u ⃗ \vec u u

u ⃗ ⋅ w ⃗ < = b \vec{u} · \vec{w} <= b u w <=b

就有

u ⃗ ⋅ w ⃗ − b < = 0 \vec{u} · \vec{w} - b <= 0 u w b<=0

从公式就能看到,SVM其实就是要寻找合适的 w w w b b b让虚线与实线的距离最大。

接下来我们把实线与虚线的距离归一化,那么对于训练集来说就有如下公式

负项:

w ⃗ x ⃗ − b < = − 1 \vec{w}\vec{x} - b <= -1 w x b<=1

正项:

w ⃗ x ⃗ − b > = 1 \vec{w}\vec{x} - b >= 1 w x b>=1

为了将这两个公式统一,我们加入一个辅助量

y i = { 1 x 为 正 − 1 x 为 负 y_i = \begin{cases}\;\;1\quad x为正\\-1\quad x为负\end{cases} yi={1x1x

把辅助量带入上面的公式,最终两个公式可以合并成一个公式

y i ( w ⃗ x ⃗ − b ) − 1 > = 0 y_i(\vec{w}\vec{x} - b) - 1 >= 0 yi(w x b)1>=0

那么,怎么样才能保证实线与虚线的距离最宽呢,这里我们设 x ⃗ + \vec x_+ x + x ⃗ + \vec x_+ x +分别为正负虚线上面的点,那么就有

w i d t h = ( x ⃗ + − x ⃗ − ) ⋅ w ⃗ ∣ w ∣ width = (\vec x_+ - \vec x_-)· \frac{\vec w}{|w|} width=(x +x )ww

x + = b + 1 w ⃗ x_+=\frac{b+1}{\vec w} x+=w b+1

x − = b − 1 w ⃗ x_-=\frac{b-1}{\vec w} x=w b1

最终我们得到公式

w i d t h = 2 ∣ w ⃗ ∣ width = \frac{2}{|\vec w|} width=w 2

所以宽度实际上和训练数据是没有关系的,只要知道了法向量,就可以求出宽度

我们要让宽度越大越好,即

m a x 2 ∣ w ⃗ ∣ max\frac {2}{|\vec w|} maxw 2

m i n ∣ w ⃗ ∣ min|\vec w| minw

m i n 1 2 ∣ w ⃗ ∣ 2 min\frac{1}{2}|\vec w|^2 min21w 2

这里添加的参数是为了之后求导方便

接下来就是求极值,但是我们这里有一个限制条件,因此根据拉格朗日乘子法,最终求极值的公式为:

L = 1 2 ∣ w ⃗ ∣ 2 − ∑ i = 1 N α i [ y i ( w ⃗ i x ⃗ i − b ) − 1 ] L = \frac{1}{2}|\vec w|^2 - \sum_{i=1}^N \alpha_i[y_i(\vec w_i \vec x_i-b)-1] L=21w 2i=1Nαi[yi(w ix ib)1]

w w w b b b求偏导

α L α w ⃗ = w ⃗ − ∑ i = 1 N α i y i x i \frac{\alpha L}{\alpha \vec w} = \vec w - \sum_{i=1}^N\alpha_i y_i x_i αw αL=w i=1Nαiyixi

α L α b ⃗ = ∑ i = 1 N α i y i \frac{\alpha L}{\alpha \vec b} = \sum_{i=1}^N\alpha_i y_i αb αL=i=1Nαiyi

令导数为0有

w ⃗ = ∑ i = 1 N α i y i x i \vec w = \sum_{i=1}^N\alpha_i y_i x_i w =i=1Nαiyixi

∑ i = 1 N α i y i = 0 \sum_{i=1}^N\alpha_i y_i = 0 i=1Nαiyi=0

把这两个式子带入到L中

L = ∑ i = 1 N α i − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j x i x j L = \sum_{i=1}^N\alpha_i - \frac{1}{2}\sum_{i=1}^N \sum_{j=1}^N\alpha_i \alpha_j y_i y_j x_i x_j L=i=1Nαi21i=1Nj=1Nαiαjyiyjxixj

走到这一步我们会发现 w w w b b b已经别其他变量所取代,最后我们要求的是 α \alpha α的值,对于 α \alpha α的值,一般会采用SMO KKT等算法来求取,这里不做详细说明。

那对于一些无法用线性函数来做分类时怎么办呢

首相,我们会把数据做一个非线性变化,把值变化到一个线性可分的空间上,这个函数我们称为核函数kernel,根据上面的L公式来说,我们并不需要知道每个点的数据怎么变的,只需要拿到核函数的结果,并把 x i x j x_ix_j xixj替换成核函数结果即可求出最后的值。


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

相关文章

svm推导

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

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

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

svm原理详细推导

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

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

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

SVM 公式推导

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

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

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

DFS与DP算法

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

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

我们一路奋战&#xff0c; 不是为了改变世界&#xff0c; 而是为了不让世界改变我们。 目录 我们一路奋战&#xff0c; 不是为了改变世界&#xff0c; 而是为了不让世界改变我们。 动态规划——DP算法&#xff08;Dynamic Programing&#xff09; 一、&#x1f3d4;斐波那契…

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

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

dp算法篇Day1

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

第十四周DP算法总结

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

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

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

DP算法:动态规划算法

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

动态规划(DP)算法初识

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

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

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

动态规划算法(DP)

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

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

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

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

什么是动态规划&#xff1a;动态规划_百度百科 内容太多了不作介绍&#xff0c;重点部分是无后效性&#xff0c;重叠子问题&#xff0c;最优子结构。 问S->P1和S->P2有多少种路径数&#xff0c;毫无疑问可以先从S开始深搜两次&#xff0c;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 输入指令&#xff1a;”sudo apt-get install g” -> “sudo apt-get install build-essential” -> “sudo apt-get i…

QT安装、构建套件(MSVC、MinGW)配置

QT安装、构建套件(MSVC、MinGW)配置 1. QT框架及QT Creator下载 登录QT官网-https://www.qt.io/download。 点击downloads for open source users 在页面最下方&#xff0c;点击Download the QT online Installer。 在安装网页的最下方处有一行小字 “We do recommend yo…