拉格朗日函数-带约束条件的优化问题如何去做?

article/2025/10/24 10:06:00

1.我们已知SVM损失函数是带有约束条件的损失函数,对于无约束条件的损失函数求最小我们知道可以对x求导等于0求得x等于多少时y最小,但是如果我们给定一个约束条件,那么下相应的结果也会改变。

2.对于SVM带有约束条件的损失函数,我们如何求W?

用拉格朗日函数解决带有约束条件的最优化问题。

我们要求一个函数的最优解,求这个函数最小的时候所对应的x是何值,这个函数有带有两个约束条件,c_{i}(x)<=0,i=1,2,3...h_{j}(x)=0,i=1,2,3...l,只要问题可以写成这种形式(使用拉格朗日函数须满足的形式),那么就可以用拉格朗日函数去解决这样的问题。

 3.因为SVM损失函数是带有约束条件的最优化问题,我们就将SVM写成拉格朗日需要满足的形式

SVM约束条件可以写成1-y_{i}(W^{t}+b)<=0,i = 1, 2, 3...m 这个式子符合拉格朗日原始问题里面的c_{i}(x)<=0,i=1,2,3...

前面SVM损失函数没有等式约束条件,所以h_{j}(x)=0,i=1,2,3...l不用考虑。

4. 拉格朗日函数

 

 f(x)原始问题,c_{i}(x)不等式约束条件,a_{i}乘子,前面加和:k个不等式约束条件加和

后面是等式约束条件,因为没有等式约束条件,所以不考虑,等于0

拉格朗日函数相当于把有约束条件的最优化问题变成无约束条件的最优化问题。把f(x)和约束条件整合在一起,变成一个式子再进行优化。也就相当于对带有约束条件的原始问题进行优化。

5.拉格朗日函数特性

拉格朗日函数a_{i}乘子必须大于等于0

如果我们对拉格朗日函数求最大,我们就会得到原始问题f(x)

我们对拉格朗日函数求最大,因为a_{i}>=0,c_{i}(x)<=0,所以   \sum_{i=1}^{m}a_{i}c_{i}(x)<=0,又因为h_{j}(x)=0,i=1,2,3...l,所以h_{j}(x)乘子部分相乘等于零。

所以对拉格朗日取最大的时候就是\sum_{i=1}^{m}a_{i}c_{i}(x)=0时,那么拉格朗日公式就是变成了原始问题f(x)+0=f(x)。

我们在对求最大后的f(x)求最小,就是我们最终要求的二次优化问题。min[maxL(x,\alpha ,\beta )]=minf(x)

6.对偶问题

 对于min[maxL(x,\alpha ,\beta )]=minf(x),我们可以先求最小再求最大

当f(x)和ci函数是凸函数,hj函数是仿射函数,就可以将min max变成max min

 这里的x就是w。

7.KKT条件

 8.把SVM损失函数原始问题转换成拉格朗日函数的形式。再用对偶问题把求解最小最大变成求最大最小。

 得到两个中间结果w=\sum_{i=1}^{m}a_{i}y_{i}x_{i},      \sum_{i=1}^{m}a_{i}y_{i}=0

 

 得到结果\sum_{i=1}^{m}a_{i}-\frac{1}{2}\sum_{i=1,j=1}^{m}\alpha _{i}\alpha _{j}y_{i}y_{j}x_{i}^{T}x_{j}

 通常使用 SMO 算法进行求解,可以求得一组α* 使得函数最优化。

 9.得到最终超平面

假设已经通过 SMO 算法,求得α*,此时求 w*很容易:

 根据KKT条件

因为a>0,所以要满足以上KKT条件y_{i}(W^{T}x_{i} + b)-1 =0,

所以y_{i}(W^{T}x_{i} + b)=1,由此可以看出a>0时所对应的x,y正是支持向量的x,y

那么通过SMO算法求得的m个a,我们就可以找一下这m个a中有几个>0,对应的x,y

就是支持向量的x,y

又因为支持向量有

 带入求得的支持向量x,y就能求出b的值。

知道W和b之后,我们就能确定好分割超平面


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

相关文章

推导抛物线插值的拉格朗日插值公式

推导抛物线插值的拉格朗日插值公式 发现历程 ​ 在数值分析中&#xff0c;拉格朗日插值法是以法国十八世纪数学家约瑟夫路易斯拉格朗日命名的一种多项式插值方法。许多实际问题中都用函数来表示某种内在联系或规律&#xff0c;而不少函数都只能通过实验和观测来了解。如对实践…

机器人拉格朗日动力学应用公式详解

拉格朗日动力学 动力学总公式动能部分势能部分M(q)部分 c ( q , q ˙ ) c(q,\dot{q}) c(q,q˙​)部分g(q)部分 PR机械臂例题Matlab代码实现相关资料 请务必先看此处&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 本文没有理论分析&#xff0c;是直接开干&…

拉格朗日手工求解和编程求解

目录 一、问题二、拉格朗日乘数法的基本思想三、拉格朗日手工求解三、拉格朗日 python 求解四、小结五、参考资料 一、问题 二、拉格朗日乘数法的基本思想 作为一种优化算法&#xff0c;拉格朗日乘子法主要用于解决约束优化问题&#xff0c;它的基本思想就是通过引入拉格朗日乘…

表格(拉格朗日插值法)

众所周知&#xff0c;Logx精通Excel。 他觉得表格只有单调的白色非常无聊&#xff0c;他决定将一些单元格涂黑。 在一个n行m列的表格里&#xff0c;刚开始所有单元格都是白的。 Logx打算在这个表格选出三个不同的单元格A(x1,y1),B(x2,y2),C(x3,y3)&#xff0c;并将选中的三个单…

[计算机数值分析]拉格朗日插值公式

Spring-_-Bear 的 CSDN 博客导航 实际问题中碰到的函数 f ( x ) f(x) f(x) 是各种各样的&#xff0c;有的表达式很复杂&#xff0c;有的甚至给不出数学式子&#xff0c;只提供了一些离散数据&#xff0c;譬如某些点上的函数值和导数值。 由于问题的复杂性&#xff0c;直接研…

高斯-拉格朗日(Gauss-Legendre )Ⅱ型求积公式 数值分析 勘误 P111

教材信息&#xff1a; 数值分析(第二版) 李红 华中科技大学出版社 Gauss-Legendre Ⅱ型求积公式 [a,b]区间上的3点高斯-拉格朗日&#xff08;Gauss-Legendre&#xff09;复化求积公式 X k 2 X_{k2} Xk2​推导说明 QA为什么复化高斯-拉格朗日(Gauss-Legendre)求积公式不需要像牛…

三个三维矢量叉乘公式(拉格朗日矢量公式)推导(非坐标法)

0 简单情况 先从简单的情况开始推导&#xff0c;考虑三个向量 a ⃗ , b ⃗ , c ⃗ \vec{a},\vec{b},\vec{c} a ,b ,c 在同一个平面&#xff0c;其中 c ⃗ ⊥ a ⃗ \vec{c} \perp \vec{a} c ⊥a &#xff0c;如下图所示&#xff0c;求取 ( a ⃗ b ⃗ ) c ⃗ (\vec{a} \times \…

拉格朗日乘子法 latex手打公式 良心推导

文章目录 拉格朗日乘数法简介等式约束问题明确问题基础知识推导构造求极值 不等式约束问题明确问题问题转化 拉格朗日乘数法 简介 简单概括一下拉格朗日乘子法用来解决具有约束的最值问题。 那么其中主要有两个比较重要的问题需要解决&#xff1a; 等式约束问题不等式约束问…

计算方法学习笔记——插值方法,拉格朗日插值公式

插值方法 插值方法是用来处理和分析数据的方法&#xff0c;所谓插值就是在所给数据的基础上再插入一些所需的值&#xff0c;但这些值不是随便给出的&#xff0c;而是在已有数据的基础上进行分析&#xff0c;给出的近似值。 插值方法要解决的问题 首先当我们遇到一堆数据(如表…

机器学习数学基础二:泰勒公式与拉格朗日

建议如果是大一大二的同学想提前学习机器学习的话可以提前看看我这个专栏的文章&#xff0c;说实话&#xff0c;专门做这个学习机器学习前置知识的博主没多少&#xff0c;至少我当时学的时候没找到多少&#xff0c;不得不学习我很厌恶的一个人讲的课&#xff0c;听得我浑身难受…

拉格朗日插值公式详解

一&#xff0e;线性插值(一次插值&#xff09; 已知函数f(x)在区间[xk ,xk1 ]的端点上的函数值yk f(xk ), yk1 f(xk1 ),求一个一次函数yP1 (x)使得yk f(xk ),yk1 f(xk1 ), 其几何意义是已知平面上两点(xk ,yk ),(xk1 ,yk1 ),求一条直线过该已知两点。 1. 插值函数和插…

【拉格朗日差值法】 公式

拉格朗日插值法 给出对于给定的若n1个点的坐标&#xff08;x0,y0)&#xff0c;(x1,y1)…&#xff0c;(xn,yn)&#xff0c;对应于它们的次数不超过n的拉格朗日多项式只有一个。 应用&#xff1a;给出平面上n1个点&#xff0c;求一条穿过这n1个点的n次多项式&#xff0c;或这个多…

拉格朗日乘子法的分析基础篇

拉格朗日乘子法&#xff08;Lagrange Multiplier)在在求取有约束条件的优化问题时使用的算法。约束条件又分为等式和不等式方法。这里只用等式方法作为例子分析算法的含义原理&#xff08;自己理解的&#xff09;。 首先看拉格朗日的计算式子&#xff1a;L(a, x) f(x) a*g(x…

拉格朗日(Lagrange)插值

问题 给定 n n n 个点&#xff0c;可确定一个多项式 y f ( x ) yf(x) yf(x) &#xff0c;要求确定这个多项式并求出 f ( k ) f(k) f(k) 拉格朗日&#xff08;Lagrange&#xff09;插值公式 搬运 令 L n ( x ) f ( x ) L_n(x)f(x) Ln​(x)f(x) n1 有 由点斜式可以得…

oracle手动锁表

[转载]oracle手动锁表 手工锁表&#xff1a; lock table tbl_t1 in row share mode nowait; --2 lock table tbl_t1 in share update mode nowait; --2 lock table tbl_t1 in row exclusive mode nowait; --3 lock table tbl_t1 in sha…

Oracle数据库锁表解决办法

1.输入查锁语句 SELECT s.sid, s.serial#,b.object_name, s.username, s.schemaname, s.osuser, s.process, s.machine, s.terminal, s.logon_time, l.type FROM v$session s, v$lock l,v$locked_object a,dba_objects b WHERE s.sid l.sid and b.object_id a.object_id and …

Oracle数据库锁表解决

PLSQL不会用,Oracle数据库不了解&#xff0c;哈哈哈,直接闹出了笑话, 由于多次的事务没有提交,导致多个会话没有关闭 造成Oracle数据库表锁死 报 ORA-00054错误 即多个会话没有关闭,Oracle不然你操作了 解决办法 1.查所有被锁的sessionid 用户 哪张表被锁 select l.sessio…

Oracle锁表解决方法

锁表或锁超时相信大家都不陌生&#xff0c;经常发生在DML语句中&#xff0c;产生的原因就是数据库的独占式封锁机制&#xff0c;当执行DML语句时对表或行数据进行锁住&#xff0c;直到事务提交或回滚或者强制结束当前会话。 对于我们的应用系统而言锁表大概率会发生在SQL执行慢…

centos7 升级 gcc 版本

GNU Mirror List 查看动态库版本 strings /usr/lib64/libstdc.so.6 | grep CXXABI查找gcc生成的最新动态库 find / -name "libstdc.so*"一、升级 gcc&#xff1a; 1、查看当前gcc版本 #默认4.8.5 g -v 或者 gcc --version2、下载gcc源码&#xff08;10.2.0&…

环境搭建—3.0 Linaro gcc

一、gcc gcc&#xff0c;GNU Compiler Collection&#xff0c;GNU编译器套件&#xff0c;它最初是专门给GNU操作系统开发的&#xff0c;随着时间推移&#xff0c;现在已经成为了嵌入式领域应用最广泛的c/c编译器工具。不管是单片机开发还是linux开发&#xff0c;都离不开gcc。主…