线性可分支持向量机的原理推导 转为拉格朗日函数式 公式解析

devtools/2024/10/25 5:54:33/

本文是将文章《线性可分支持向量机的原理推导》中的公式单独拿出来做一个详细的解析,便于初学者更好的理解。


公式 9-7 引入了拉格朗日乘子法,这是支持向量机(SVM)优化问题的重要步骤,目的是将原来的带有约束条件的优化问题转化为一个更容易求解的无约束优化问题。

公式 9-7 的形式如下:

L ( w , b , α ) = 1 2 ∥ w ∥ 2 − ∑ i = 1 N α i [ y i ( w T x i + b ) − 1 ] L(\mathbf{w}, b, \alpha) = \frac{1}{2} \|\mathbf{w}\|^2 - \sum_{i=1}^{N} \alpha_i \left[ y_i (\mathbf{w}^T \mathbf{x}_i + b) - 1 \right] L(w,b,α)=21w2i=1Nαi[yi(wTxi+b)1]

1. 公式 9-7 的含义

这个公式表示的是拉格朗日函数,它结合了原优化目标(最小化 ∥ w ∥ 2 \|\mathbf{w}\|^2 w2)和分类约束条件,通过引入拉格朗日乘子 α i \alpha_i αi 来处理约束问题。

拉格朗日函数的组成部分:
  • 第一项 1 2 ∥ w ∥ 2 \frac{1}{2} \|\mathbf{w}\|^2 21w2

    • 这是原始的优化目标,即最小化法向量 w \mathbf{w} w 的范数平方。目的是通过最小化这个值来最大化分类间隔。
  • 第二项 − ∑ i = 1 N α i [ y i ( w T x i + b ) − 1 ] - \sum_{i=1}^{N} \alpha_i \left[ y_i (\mathbf{w}^T \mathbf{x}_i + b) - 1 \right] i=1Nαi[yi(wTxi+b)1]

    • 这一项引入了 拉格朗日乘子 α i \alpha_i αi,用于将原约束条件 y i ( w T x i + b ) ≥ 1 y_i (\mathbf{w}^T \mathbf{x}_i + b) \geq 1 yi(wTxi+b)1 结合到目标函数中。通过引入拉格朗日乘子,约束条件变成了优化目标中的一部分。
    • α i ≥ 0 \alpha_i \geq 0 αi0 是拉格朗日乘子,对应于每一个样本点 i i i
    • [ y i ( w T x i + b ) − 1 ] \left[ y_i (\mathbf{w}^T \mathbf{x}_i + b) - 1 \right] [yi(wTxi+b)1] 表示对分类约束的偏离。对于正确分类的点,这个值应该大于或等于 0;否则,分类约束会被违反。

2. 拉格朗日乘子法的作用

支持向量机的优化问题中,我们原本要处理一个带有约束条件的优化问题。为了将这个问题转化为更容易处理的形式,我们使用拉格朗日乘子法将约束条件纳入优化目标中。

  • 原优化问题是:
    min ⁡ w , b 1 2 ∥ w ∥ 2 \min_{\mathbf{w}, b} \quad \frac{1}{2} \|\mathbf{w}\|^2 w,bmin21w2
    subject to y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , … , N \text{subject to} \quad y_i (\mathbf{w}^T \mathbf{x}_i + b) \geq 1, \quad i = 1, 2, \ldots, N subject toyi(wTxi+b)1,i=1,2,,N

  • 通过拉格朗日乘子法,我们将约束条件 y i ( w T x i + b ) ≥ 1 y_i (\mathbf{w}^T \mathbf{x}_i + b) \geq 1 yi(wTxi+b)1 用拉格朗日乘子 α i \alpha_i αi 表示出来,构造了拉格朗日函数 L ( w , b , α ) L(\mathbf{w}, b, \alpha) L(w,b,α)

这使得原始的带约束优化问题变成了一个无约束优化问题,我们可以通过同时对 w , b , α \mathbf{w}, b, \alpha w,b,α 求最优解来处理这个问题。

3. 拉格朗日函数中的每个部分详解

  • 第一项 1 2 ∥ w ∥ 2 \frac{1}{2} \|\mathbf{w}\|^2 21w2

    • 这个部分是原始的目标函数,目的是最小化法向量的范数,以最大化分类间隔。
  • 第二项 ∑ i = 1 N α i [ y i ( w T x i + b ) − 1 ] \sum_{i=1}^{N} \alpha_i \left[ y_i (\mathbf{w}^T \mathbf{x}_i + b) - 1 \right] i=1Nαi[yi(wTxi+b)1]

    • 这里的每个 α i \alpha_i αi 是对应第 i i i 个样本点的拉格朗日乘子。
    • 对于每个 i i i,如果分类约束 y i ( w T x i + b ) ≥ 1 y_i (\mathbf{w}^T \mathbf{x}_i + b) \geq 1 yi(wTxi+b)1 被满足,那么 α i \alpha_i αi 会取 0;如果不满足,拉格朗日乘子 α i \alpha_i αi 会影响最终的优化目标。
    • α i ≥ 0 \alpha_i \geq 0 αi0 表示这个乘子是非负的。对于那些不影响分类间隔的样本点, α i = 0 \alpha_i = 0 αi=0;对于支持向量, α i \alpha_i αi 会大于 0,因为它们对分类结果起到关键作用。

4. 拉格朗日对偶问题

构造拉格朗日函数的目的是将带有约束条件的优化问题转化为一个无约束优化问题。接下来,我们通过拉格朗日对偶问题来进一步简化求解过程。

  • 原始问题(Primal Problem):

    • 即公式 9-6 中的带约束的最小化问题。
  • 对偶问题(Dual Problem):

    • 通过构造拉格朗日函数并对 w , b \mathbf{w}, b w,b 求解对偶问题(即找到最优的 w , b \mathbf{w}, b w,b),我们可以将原问题的复杂度大大降低。对偶问题中的优化变量变为拉格朗日乘子 α \alpha α,这将使得问题的求解更加高效。

5. 公式 9-7 的求解步骤

  • 第一步:构造拉格朗日函数,如公式 9-7 所示,将优化目标与约束条件结合起来。
  • 第二步:通过对 w \mathbf{w} w b b b 求导,找到拉格朗日对偶问题。
  • 第三步:通过对拉格朗日乘子 α \alpha α 进行优化,最终求得支持向量机的最优解。

6. 公式 9-7 的作用

公式 9-7 是支持向量机求解过程中的关键一步,它通过拉格朗日乘子法将原有的带约束的优化问题转化为无约束优化问题,并且将分类约束通过拉格朗日乘子的形式整合到目标函数中。这样一来,我们可以更有效地处理这个问题,并通过求解拉格朗日对偶问题找到最优的分类超平面。

总结

  • 公式 9-7 引入了拉格朗日函数,目的是将支持向量机的带约束优化问题转化为无约束问题。
  • 拉格朗日乘子 α i \alpha_i αi 用来处理分类约束,确保样本点被正确分类且间隔最大化。
  • 通过对拉格朗日函数求解对偶问题,我们可以找到支持向量机的最优解,并构造出最终的分类超平面。

http://www.ppmy.cn/devtools/128608.html

相关文章

修改huggingface的缓存目录以及镜像源

执行以下语句查看当前配置 huggingface-cli env默认输出应该如下 (py39-transformers) PS D:\py_project\transformers_demo> huggingface-cli envCopy-and-paste the text below in your GitHub issue.- huggingface_hub version: 0.26.1 - Platform: Windows-10-10.0.22…

文理学院数据库应用技术实验报告0

文理学院数据库应用技术实验报告0 实验内容 打开cmd,利用MySQL命令连接MySQL服务器。 mysql -u root -p查看当前MySQL服务实例使用的字符集(character)。 SHOW VARIABLES LIKE character_set_server;查看当前MySQL服务实例支持的字符序(collation)。 SHOW VARIABLES LIKE c…

洛谷 P2319 [HNOI2006] 超级英雄(匈牙利算法)

题目传送门 解题思路 将题目和锦囊妙计建边&#xff0c;然后对于每一个问题&#xff0c;都跑一次匈牙利&#xff0c;如果当前问题找不到与之配对的锦囊妙计&#xff0c;那么直接停止&#xff08;因为题目说了答不出就不能往下答了&#xff09;。 代码 #include<bits/stdc.…

【VTK随笔】VTK9 在三维场景中显示中文

最近刚接触VTK,有个需求需要再三维中渲染中文的字符,开始用 vtkVectorText 将给定的文本字符串转换为vtkPolyData的多边形模型来绘制,但是最后渲染出来的结果中,中文字符无法识别,不显示。查阅官方文档 vtkVectorText generates vtkPolyData from an input text string. B…

2024-10-24 学习人工智能的Day14 pandas(1)

一、基础 1、概述 Pandas 是一个开源的第三方 Python 库&#xff0c;从 Numpy 和 Matplotlib 的基础上构建而来Pandas 名字衍生自术语 “panel data”&#xff08;面板数据&#xff09;和 “Python data analysis”&#xff08;Python 数据分析&#xff09;Pandas 已经成为 P…

Lua中的goto语句

软考鸭微信小程序 过软考,来软考鸭! 提供软考免费软考讲解视频、题库、软考试题、软考模考、软考查分、软考咨询等服务 在Lua编程语言中&#xff0c;goto语句是一种跳转语句&#xff0c;用于将程序的执行流程无条件地转移到程序中的另一个位置。这个位置由一个标签&#xff08;…

C++贪心算法

贪心算法 贪心的基本原理:每一步都选择局部最优解而尽量不考虑对后续的影响&#xff0c;最终达到全局最优解。 贪心的局限性:贪心算法不能保证获得全局最》解&#xff0c;但在某些问题上具有高效性。 贪心的特征:贪心选择性质()、最优子结构性质(根据我的观察&#xff0c;很多…

百度文心一言接入流程-java版

百度文心一言接入流程-java版 一、准备工作二、API接口调用-java三、百度Prompt工程参考资料: 百度文心一言:https://yiyan.baidu.com/百度千帆大模型:https://qianfan.cloud.baidu.com/百度千帆大模型文档:https://cloud.baidu.com/doc/WENXINWORKSHOP/index.html千tokens…