关于机器学习SVM中KKT条件的深入理解推导

article/2025/8/20 21:47:03

关于机器学习SVM中KKT条件的深入理解推导

  • 目前为止的已知
  • KKT条件
  • 违反KKT条件的情况
  • 参考文献

本文面向在寻找KKT条件相关推到文章的读者,且默认前面关于svm的松弛下的模型和smo算法推到都已经了解。如果没有或者需要温习,请参看支持向量机SVM与SMO算法的的详细推导过程,文章虽然是本科时期所写比较粗糙,但在本文发表前已经重做修改(虽然界面比较丑),但耐心一定能看懂。若想要看视频的推导,也可以看我发现的宝藏up主大海老师,翻看里面的机器学习专栏。

目前为止的已知

目前我们已经推导出了未松弛与松弛的拉格朗日算法的模型,并且根据递推关系得出了α2的迭代关系式如下
在这里插入图片描述
而smo算法是一种启发式的算法,它在所有的α中选择两个进行smo算法的迭代,直到终止条件满足。
对于两个α的递推迭代,我们有如下的基础模型[1],我们记作图1
在这里插入图片描述
其中min W(α1,α2)时目标函数,每个0=< αi <= C,C是惩罚因子(一般一开始就为固定的常数)
还有约束条件 a1y1 + a2y2 = l,(为了之后的简写,把α等价于a,ceta用l替代),因为只对a1和a2作考虑,所以把其他的求和项就视为l了,这样便于书写推导。

相信读者对SVM的kkt条件奇怪的地方是这里,为什么要取上下界,min和max的公式从何而来呢
在这里插入图片描述
在这里插入图片描述

首先回答第一个问题,为什么要取上下界:我们知道求解带约束问题时,由于启发式算法的求解,可能会破坏某些约束条件使其不满足,此时就需要认为的检测并且将其规范在解空间内,所以这里的上下界L和H是这样来的。
下面就对第二个问题进行回答,也是本文的重点,L和H的min与max函数的参数是从何而来的呢?
首先需要约束的时候,就是α1,α2违反了KKT条件,只有知道KKT条件,才能推出什么情况下违反,才能解释min和max的公式。

KKT条件

下面是C类优化问题、LCQ、规范性约束条件、LICQ、KKT、Slater等的充分必要关系,本文只讨论右上角的问题,但都在这里指出,给大家一个宏观的视野。(这与解决将要讨论的问题无关,只是了解一下,写出来是为了让文章更完整有说服力)
在这里插入图片描述
接下来就进入正题
在这里插入图片描述
左上角是线性SVM分类的示意图,其中有ABCDEF点,接下来对αi的不同情况进行几何意义上的讨论
①当0<α<C时,由C-α-r=0(r是svm模型中松弛因子ξ的lagrangian函数前面的参数)知,r>0
而rξ=0(KKT条件,之前的模型中有提到,这是模型的约束条件)知,ξ=0
②当α=C时,由r
ξ=1知r=0
③当α=0时,yi(wx+b)-1+ξ >= 0 ,此即题目的约束条件,因为α=0,所以其天然成立
故我们可以总结出满足kkt条件的情况如下
在这里插入图片描述
当α=0时,也就是之前的③天然成立
当0<α<C,由①知ξ=0,所以yi(wx+b)>=1
当α=C,由r=0,r*ξ=0知ξ可以为任意>=0的值,所以yi(wx+b)<=1
综上所述,就是上图左下角的总结(KKT条件成立的情况),其中ui=wx+b

违反KKT条件的情况

所以违反KKT条件的情况就可以写出来了
在这里插入图片描述
当发生以上情况时,就可以采取限制条件,使解满足约束条件

下面就是对于smo两个α迭代时的深入理解

重新考虑a1y1+a2y2 = l的式子(这个式子在前面有等价替换,请注意)
由于y1,y2取±1,所以只需要考虑a1a2同号和异号的情况
将a1和a2视为横纵坐标画图,要注意到斜率为±1,波动为±l
且因为 0=<α<=C,所以把参数解空间限制在了边长为C的正方形中
根据不同的异号情况,我们做出示意图
因此只需按照边界定制α1和α2的min和max即可

在这里插入图片描述
在这里插入图片描述
所以就会有以下的综合模型
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
到这里SVM就完结撒花,完美理解
本章历时一个多月,因为各种课程、科研和琐事,断断续续的看和理解,于今终于完成,也写下自己的理解与有碰到问题不理解的读者一起分享。

参考文献

[1]《统计学习方法(第2版)》2019年 清华大学出版社出版,李航


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

相关文章

理解KKT条件

一、引言 对于无约束最优化问题&#xff0c;其搜索空间是无界的&#xff0c;只要确定了搜索方向和步长因子&#xff0c;便可以在一轮或几轮迭代之后找到最优解或近似最有解。这里举个不太恰当的例子&#xff0c;无约束最优化如同在浩瀚的宇宙中寻找体积最大的星球&#xff0c;你…

KKT条件(卡罗需-库恩-塔克条件)

1&#xff0c;定义 KKT是啥&#xff1f; 它是Karush、Kuhn和Tucker三个人。这三个人单独提出了在非线性规划中获得最优解的必要条件。 看着很复杂呀&#xff1f; 还好啦。。。只是将拉格朗日乘数法中的等式约束条件泛化到了不等式。 2&#xff0c;先来几个简单例子 为什么要…

KKT条件(Karush–Kuhn–Tucker conditions)

在约束最优化问题中&#xff0c;常常利用有条件的拉格朗日乘子法&#xff0c;进而一步步推导KKT条件。 1.最优化条件和下降搜索 给定一个多变量可微函数 &#xff0c;是的局部最小值&#xff0c;这时有 如果&#xff0c;就存在使得 &#xff08;对这边做个解释&#xff1a;…

机器学习理论基础:线代相关、PCA、KKT条件、贝叶斯统计

机器学习理论基础&#xff1a;线代相关、PCA、KKT条件、贝叶斯统计 摘要1.线性代数相关与证明1.1.线性相关和生成子空间1.1.1.线性方程组的矩阵表示1.1.2.生成子空间1.1.3.线性相关1.1.4.方程组通过逆矩阵求解时的考量 1.2.证明&#xff1a;通过迹运算描述矩阵的Frobenius范数1…

KKT条件(Karush-Kuhn-Tucker Conditions)

总目录 一、 凸优化基础&#xff08;Convex Optimization basics&#xff09; 凸优化基础&#xff08;Convex Optimization basics&#xff09; 二、 一阶梯度方法&#xff08;First-order methods&#xff09; 梯度下降&#xff08;Gradient Descent&#xff09;次梯度&am…

windows下Armadillo+openBlas

1、处理Armadillo 1.1、http://arma.sourceforge.net/download.html#windows下载Armadillo&#xff0c;解压后把其中的include文件夹完整拷贝出来&#xff0c;放到某处&#xff0c;我放在了D:\Armadillo里 1.2、修改D:\Armadillo\include\armadillo_bits\config.hpp&#xff…

C++线性代数库armadillo

armadillo是为C设计的线性代数函数库&#xff0c;语法和函数类似MATLAB&#xff0c; 介绍主页 http://arma.sourceforge.net/ 与MATLAB语法对照如下http://arma.sourceforge.net/docs.html#syntax 功能概览 &#xff08;1&#xff09;matrix, vector, cube and field class…

Armadillo使用介绍(九):下载Armadillo、配置工程、运行第一个程序

一、下载Armadillo 通过以下两种途径下载Armadillo C库源码&#xff1a; Armadillo Download page 如下图所示&#xff0c;可以下载到最新版本的armadillo库&#xff08;随着时间变化&#xff0c;armadillo版本可能会比图示的版本更高&#xff09;。 点击上图红框中的链接后…

C++调用Armadillo计算库

1. 下载压缩包&#xff0c;解压到目录&#xff0c;比如D:\ALGLIB\armadillo&#xff0c;只保留include文件夹和examples里的lib_win32文件夹即可&#xff1b; 下载地址&#xff1a;Armadillo: C library for linear algebra & scientific computinghttp://arma.sourceforge…

armadillo 使用杂记

2022.10.06 验证矩阵首地址与首元素首地址的关系 验证矩阵中元素的存储方式 做以下实验 mat m;//输出矩阵头位置cout<<&m<<endl;m<<4<<6<<3<<endr<<1<<3<<1<<endr<<3<<5<<1<<endr;/…

Ubuntu21.10下安装使用Armadillo库

文章目录 一、前言二、下载安装文件三、编译与安装四、代码示例五、总结 一、前言 Armdillo 矩阵运算速度跟 MATLAB 一个量级&#xff0c;为目前使用比较广的 C 矩阵运算库之一&#xff0c;是在 C 下使用 MATLAB 方式操作矩阵很好的选择&#xff0c;许多 MATLAB 的矩阵操作函数…

Armadillo 线性代数库中的聚类算法避坑

1、本文的由来 最近由于需要在C语言编写的项目中使用高斯混合模型聚类算法&#xff0c;最开始是打算自己写一个的&#xff08;参考的是《机器学习》&#xff0c;周志华著这本书&#xff09;&#xff0c;但是最后发现自己写的算法运行效率低&#xff0c;而且对于维度比较高的样本…

C++线代运算库Armadillo配置(Qt CLion VSCode)

目录 1. 前言 2. Armadillo下载 方法1&#xff1a;官网下载 方法2&#xff1a;安装包下载 3. Qt 中 Armadillo 配置 4. CLion 中 Armadillo 配置 5. VSCode 中 Armadillo 配置 1. 前言 工作和学习上一直用着 Armadillo 库中的矩阵运算&#xff0c;极大的提升了 Matlab 代…

Clion 使用 armadillo 配置方法

Clion 使用 armadillo 配置方法 jetbrains 全家桶是我的最爱 但是C的编写网上都是visual studio 的教程&#xff0c;尤其是对于库文件的引用&#xff0c;Clion很少有指导&#xff0c;最近需要将python的程序转为C&#xff0c;用到了armadillo 矩阵库&#xff0c; 但是网上对于…

Armadillo C++ Library

Armadillo 简介 Armadillo C Library是一种C的线性代数库&#xff08;矩阵数学&#xff09;&#xff0c;具有良好的平衡速度与易用性。其底层可以调用不同的BLAS和LAPACK库来提高效率&#xff0c;同时利用模板编程提高了代码的操作性 官网下载链接&#xff1a;点这里下载 Vi…

C++中armadillo矩阵库使用说明

在http://blog.csdn.net/piaoxuezhong/article/details/58055709博文中介绍了eigen矩阵库的使用&#xff0c;这里介绍另一种矩阵库&#xff1a;armadillo~ Armadillo&#xff1a;C下的Matlab替代品 armadillo是目前使用比较广的C矩阵运算库之一&#xff0c;许多Matlab的矩阵操…

armadillo库安装教程

目录 armadillo库功能介绍 armadillo库安装 vs中添加步骤 测试 armadillo库功能介绍 在c编程中&#xff0c;我们在进行一些算法运算经常会面对矩阵计算&#xff0c;c的标准库中是没有关于矩阵运算的库的&#xff0c;在面对矩阵计算我们只能自己编写相关代码进行计算&#xf…

armadillo使用,armadillo提高编译效率和速度

Armadillo是一个全面的、基于模板的 C 线性代数库&#xff0c;设计有 LAPACK 和 ATLAS 库的替代接口。 armadillo使用工具旨在提供速度和易用性&#xff0c;以及类似于 Matlab 的熟悉语法(或 API)。 armadillo使用允许您编写可以集成到组件或应用程序中的各种类型的数学函数。它…

C++ Armadillo矩阵库的安装与基本用法

文章目录 Armadillo安装入门案例直接赋值切片常用函数 Armadillo 安装 Armadillo是一个具有Matlab风格的线性代数包。下载之后解压到任意文件夹&#xff0c;然后对VS工程进行设置。 菜单栏生成->配置管理器&#xff0c;将平台改为x64右键项目名称->属性(快捷键ShiftF4…

一个常见的大数据平台架构

这是一个典型的大数据架构&#xff0c;且对架构进行了「分层」&#xff0c;分为「数据源层」、「数据传输层」、「数据存储层」、「编程模型层」和「数据分析层」&#xff0c;如果继续往上走的话&#xff0c;还有「数据可视化层」和「数据应用层」。