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

article/2025/9/13 8:30:52

svm(support vector machine)是一种二分类算法,它的目标在于寻找一个能将两种点分离的直线或平面或超平面。

如图(来自wiki):

图中的红线将两边数据点分开,这条线就是分割直线,同样的,在三维坐标轴中,将两边数据点分开的平面,称为分割平面;更高维的空间坐标轴,统称为分割超平面。

  对于svm来说,找到这个分割超平面的准则或者是思路使离分割平面较近的点(这种点被称为支持向量),尽可能的原理这个分割平面。

 (再简单一些理解,就是如图中的虚线。虚线是穿过较近的一个点,以分割直线为平行线的一条直线。这个虚线距离分割直线的距离越大,效果越好。)

一、SVM的优化目标

   既然 支持向量到分割平面的距离越大,模型效果越好,那么我们就可以将这个距离作为优化目标。

  假设分割直线为:w^T\cdot x_i+b=0 , 支持向量到分割直线的x轴距离(映射在x轴上的距离)为1,那么根据高中的点到线的距离(或线到线的距离公式)可得到:

       支持向量到分割平面的距离为: \frac{1}{\left \| w \right \|^2_2} ,     (w的二范数的平方,即w这个向量的平方和)

  同时,我们还要满足一个条件,那就是样本如何判定正负(也就是如何分为两类)。假设y_i是预测结果(值域(1,-1)),则w^T+by_i有如下关系。  

             w^T+b \geq 0,y_i=+1

              w^T+b\leq 0,y_i=-1 ,       可转化为:    y_i\cdot (w^T+b)\geq 1

  将条件加入优化目标,最终可以优化目标为一个带不等式约束的求最优值问题

                      {\max_{w,b}\frac{1}{\left \|w\right \|_2^2}} ,{s.t.y_i\cdot (w^T+b)\geq 1,i=1,2,.....,m}

  当然,可以将max转化为min,这样就和以前的求最小值看起来很类似的:

                     {\min_{w,b}{\left \|w\right \|_2^2}}  ,  {s.t.y_i\cdot (w^T+b)\geq 1,i=1,2,.....,m}

 

二、KKT条件

   如上    {\min_{w,b}{\left \|w\right \|_2^2}}  ,  {s.t.y_i\cdot (w^T+b)\geq 1,i=1,2,.....,m},该如何求解?

  首先引入一个概念,上面这个公式首先是一个二次项的,其次,它带有一个不等式形式的约束条件。

  对于这种带有不等式约束的优化问题,我们可以使用KKT条件转化。

  KKT条件转化是拉格朗日乘子法在不等式约束上的扩展(这里不再展开叙述),其作用是能够将不等式约束以一种形式融合到优化目标的公式中,使其成为一个完整的公式。

那么我们的优化目标就能转化为:

      L(w,b,\beta ) = \frac{1}{2}\left \| w \right \|^2_2+\sum^m_{i=1}[1-y_i(w^T+b)],\beta _i\geq 0, (w前的二分之一是为了方便求导加上的。后面的部分就是不等式约束右KKT条件转化得到。)

 

三、优化目标求解

  附上,从最初的优化目标到最终最简函数。(这一步并不能得到最终解,因为目前有三类变量需要确定,这一步最终使得三类变量化为一类。)

 

 

四、软间隔SVM

  之前描述的svm对错误的训练样本完全没有容忍程度,但是现实中的数据集很少有完全干净的,那么为了让svm对错误的样本有一个容忍能力,提高svm泛化能力,我们引入一个参数ε,这样的svm称为软间隔SVM,之前的称为硬间隔SVM

在图像坐标中表现为:y_i(w^Tx_i+b)\geq 1-\epsilon,\epsilon\geq 0,i=1,2,....,m

(ε越大,容忍能力越强)

  最初的优化目标改写成: \frac{1}{2}\left \| w \right \|_2^2+C\sum^m_{i=1}\epsilon _i,i=1,2,...,m.

 按照之前的推导过程,最后可以得到:

到此,也就得到了一个只关于β的损失函数,怎么求解,在第六部分的SMO讲解。

 

 

五、非线性SVM

  之前讨论的无论是软间隔还是硬间隔的SVM,都只是在线性可分的角度去考虑,那么如果是一个线性不可分的问题呢?如下图(图来自wiki):

   直线无法分割,需要这样的曲线才能分开。但是在svm中我们不去找这样的曲线,而是将目标投向高维空间。

  低维空间线性不可分的数据,在更高维的某一空间,可能会转化为线性可分的数据。

 那么如何将数据映射到高维空间?

 很简单,比如原来是一个二维数据,拥有数据特征x1,x2,借助线性回归中学习的多项式扩展可以将其转化为(x1,x2,x1x2,x1的平方,x2的平方)这样的五维数据,svm就是采用这样的方式,但是直接去多项式扩展有个致命的问题:

  当原始数据的维数本就很大,而且多项式扩展的次数还很高的时候,其计算使用的资源是指数级上升的。必须想一种办法能够得到一样的效果,还可以不用那么大的计算量。

  于是核函数就出现了。

核函数(kernel function)

 将样本x和z经过一个k(x,z)的映射,能够计算出和(x,z,xz,x的平方,z的平方,x的三次方……)一样的结果,我们就称这个k(x,z)为核函数

常见的核函数有:

 线性核函数虽然叫做核函数,但是和原先没有区别……

多项式核函数就是多项式展开了,可以看到里面的参数d就代表了多项式的次数(是次数,不是展开的维数)。

而高斯核函数才是真正的最优的,可以模拟高维空间,而且计算量并不大的核函数。为什么e^{-\gamma|\left|x-z|\right|}^2可以模拟多项式展开的计算结果呢?

 证明结果如下:

  

 

 

六、SMO(Sequencial Minimal Optimization)

   上述得到的优化结果为:

l(\beta )=\sum^m_{i=1}\beta _i-\frac{1}{2}\sum^m_{i=1}\sum^m_{j=1}\beta _i\beta _jy_iy_jx_i^Tx_j  ,  s.t. \sum_{i=1}^m\beta _iy_i=0,\beta _i\geq 0,i=1,2,.....,m

 只剩下了一类需要求解的变量β,但是β并不是一个,而是每个样本对应一个βi,这样常规的计算又很麻烦了。

没关系,大佬提出了SMO算法,专门解决这个问题。

SMO算法基本思想:先确定其中的两个参数βi(确定方法为寻找违反KKT条件最大的βi),只更新这两个,别的不管。更新完成后,再来找一对βi进行更新,如此迭代,直到所有的βi都符合条件。

  小问题1:为什么每次迭代更新两个参数?一个可以吗?

  答:不可以,因为有如下约束条件,只改变一个βi会导致约束等式不成立:

  小问题2:每一次更新,按照什么准则选择两个参数βi?

  答:更新两个是因为不得已必须更新两个。那么第一个要选择的βi自然是我们最想解决的那个,也就是违反我们目标条件最大的那个。目标条件由推导过程得到,是βi与yig*(x)i的关系,如下:

 

SMO笔记

 

 

  

  

 


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

相关文章

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…

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

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

QT linux安装

转载地址:http://www.cnblogs.com/tangkaixuan/p/6504102.html 文章来自https://lug.ustc.edu.cn/sites/qtguide/ 1.4 Qt在Linux下安装 Qt在Linux系统里的安装要稍微复杂一些,因为Linux发行版众多,所以安装过程有些差异。 由于Linux系统都可…

Qt国内镜像安装

下载安装程序 https://download.qt.io/official_releases/online_installers/ 使用国内镜像打开安装程序 G:\下载\qt-unified-windows-x64-4.5.1-online.exe --mirror https://mirror.nju.edu.cn/qt清华源 https://mirrors.tuna.tsinghua.edu.cn/qt/online/qtsdkrepository/win…

Qt下载与安装

一、Qt和Qt Creator的区别 Qt是C的一个库,或者说是开发框架,里面集成了一些库函数,提高开发效率。 Qt Creator是一个IDE,就是一个平台,一个开发环境,类似的比如说VS,也可以进行Qt开发&#xff…

Ubuntu 安装QT

一、最近这家公司接到一个订单,客户使用到国产操作系统,意味着需要使用到 Linux 系统,于是乎,之前的东西又要捡起来,而且,平时代码主要是windows 平台,这次需要将代码移植到linux 平台&#xff…

QT的安装------QT

由于现在的qt都是线上下载了,那我们就去qt的官网下载 download.qt.io 我们选择倒数第二个------archive(档案),顺便学一下英文。 然后选择online install(在线安装) 身为先进人,当然选择最新的版本(团新版…

VS+QT安装配置

心血来潮,装个QT,遇到好多问题,记录一下(铭记那些踩过的坑) 软件版本:vs是2022,qt是6.3.1 qt下载地址:Download Qt | Develop Desktop & Embedded Systems | Qt 点进去往下翻&…