当前位置: 首页 > backend >正文

python学智能算法(二十九)|SVM-拉格朗日函数求解中-KKT条件

引言

前序学习进程中,对拉格朗日函数执行了初步求导,并获得了简化后的拉格朗日函数极值计算式:
L(w,b,α)=∑i=1mαi−12∑i,j=1mαiαjyiyjxiTxjL(w,b,\alpha)=\sum_{i=1}^{m}\alpha_{i}-\frac{1}{2}\sum_{i,j=1}^{m}\alpha_{i}\alpha_{j}y_{i}y_{j}x_{i}^Tx_{j}L(w,b,α)=i=1mαi21i,j=1mαiαjyiyjxiTxj
这个计算式遵循的约束是:
∑i=1mαiyi=0\sum_{i=1}^{m}\alpha_{i}y_{i}=0i=1mαiyi=0
上述结果其实还有一个专用名称:乌尔夫对偶。
不过我们就不对这个名称进行细说,因为还有大事要办:理解KKT条件。

KKT条件

对于寻找最佳分割超平面的拉格朗日函数: L(w,b,α)=12∥w∥2−∑i=1mαi[yi(w⋅xi+b−1)]L(w,b,\alpha)=\frac{1}{2}{\left\|w\right\|}^2-\sum_{i=1}^{m}\alpha_{i}[y_{i}(w\cdot x_{i}+b-1)]L(w,b,α)=21w2i=1mαi[yi(wxi+b1)]
首先我们证明它是个凸优化问题:
凸优化问题满足两个条件,第一个是目标函数为凸函数,第二个是约束条件是凸集。
凸函数,最经典的形式为抛物线函数y=x2y=x^2y=x2,满足函数图像上任取两个点后连线,这两个点之间的所有函数取值都在这条线下方;
凸集,函数的取值范围内,取任意两个点连线后,这条线上的所有点依然在函数的取值范围内。
然后,回到拉格朗日函数,第一部分12∥w∥2\frac{1}{2}{\left\|w\right\|}^221w2是典型的抛物线函数,是凸函数;
第二部分yi(w⋅xi+b−1)=w⋅(yixi)+byi−yiy_{i}(w\cdot x_{i}+b-1)=w\cdot(y_{i}x_{i})+by_{i}-y{i}yi(wxi+b1)=w(yixi)+byiyi,因为变量是wwwbbb,所以实际看下来这是一条关于wwwbbb的线性函数(二维的时候理解为就是一根直线),线性函数既是凸函数也是非凸函数,而这一部分属于约束条件,所以约束条件是凸集。综合上述分析可知寻找最佳分割超平面的拉格朗日函数是个凸优化函数。
解决凸优化函数是在求解凸优化问题,找凸优化问题的极值要用到KKT条件。
平稳性条件:拉格朗日函数关于原始变量(w,b)(w,b)(w,b)的梯度为0,
∂L∂w==w−∑i=1mαiyixi=0\frac{\partial L}{\partial w}==w-\sum_{i=1}^{m}\alpha_{i}y_{i}x_{i}=0wL==wi=1mαiyixi=0
∂L∂b=−∑i=1mαiyi=0\frac{\partial L}{\partial b}=-\sum_{i=1}^{m}\alpha_{i}y_{i}=0bL=i=1mαiyi=0互补松弛条件:对于每个样本,拉格朗日乘子与约束的松弛量乘积为0,
αi[yi(w⋅xi+b)−1]=0\alpha_{i}[y_{i}(w\cdot x_{i}+b)-1]=0αi[yi(wxi+b)1]=0这表明,
αi=0\alpha_{i}=0αi=0,样本对超平面无影响;

αi>0\alpha_{i}>0αi>0,样本必须满足yi(w⋅xi+b)=1y_{i}(w\cdot x_{i}+b)=1yi(wxi+b)=1,样板刚好在超平面上;
原问题可行条件,样本必须满足分类约束:
yi(w⋅xi+b≥1)(i=1,2,...,m)y_{i}(w\cdot x_{i}+b≥1)(i=1,2,...,m)yi(wxi+b1)(i=1,2,...,m)
对偶可行条件,拉格朗日橙子非负,
αi≥0(i=1,2,...,m)\alpha_{i}≥0(i=1,2,...,m)αi0(i=1,2,...,m)
KKT条件是判断拉格朗日函数存在最优解的核心准则,最优解一定满足KKT条件,满足KKT条件一定是最优解。

总结

初步学习了KKT条件。

http://www.xdnf.cn/news/16089.html

相关文章:

  • Python爬虫--Xpath的应用
  • 分布式限流算法与组件
  • jenkins 入门指南:从安装到启动的完整教程
  • 分布式系统中的缓存设计与应用
  • 网络调制技术对比表
  • 算法竞赛备赛——【图论】拓扑排序
  • 关于网络安全等级保护的那些事
  • 重磅发布:Oracle ADG 一键自动化搭建脚本
  • java设计模式 -【策略模式】
  • 为什么本地ip记录成0.0.0.1
  • 扫地机产品--同理心地图的方法,展现一个功能的痛点提炼
  • 智能营销革命:AI如何重塑个性化广告的创作逻辑
  • 汽车电子架构
  • LeetCode热题100--24. 两两交换链表中的节点--中等
  • 视频孪生赋能数字住建:构建智慧城市新蓝图​
  • TDengine 的 HISTOGRAM() 函数用户手册
  • 如何在 npm 上发布 Element Plus 二次封装组件
  • 算法竞赛备赛——【图论】最小生成树
  • 关于针对 DT_REG 出现红色波浪线的问题(编译错误/IDE警告),以下是 精准解决方案,保持你的代码功能完全不变:
  • 基于数据挖掘的短视频点赞影响因素分析【LightGBM、XGBoost、随机森林、smote】
  • 如何在macOS上修改iPhone的定位
  • uniapp拦截返回事件
  • Android Multidex 完全解析:解决64K方法数限制
  • LLM 幻觉一般是由于什么产生的,在模型什么部位产生
  • 编程与数学 03-001 计算机组成原理 21_服务器计算机组成实例解析
  • Django学习之旅--第13课:Django模型关系进阶与查询优化实战
  • STM32 基础知识 定时器【概念】
  • Go语言实现DNS解析与域名服务:从基础到生产实践
  • SOLIDWORKS2025教育版集成了电气与自动化设计功能
  • 内存飙升但无 OOM?用 eBPF 捕获隐性内存泄漏事件