吃瓜教程-Task05

目录

支持向量机

间隔与支持向量

SVM基本型

对偶问题

kkt条件

例子

对偶问题

例子

对偶问题原理解释

软间隔与正则化

 替代损失函数

支持向量回归

 例子


支持向量机

间隔与支持向量

在样本空间中,划分超平面可通过如下线性方程来描述:

样本空间中任意点x到超平面的距离可写为:

SVM基本型

与找到最大间隔,即可写成:


对偶问题

kkt条件

KKT条件(Karush-Kuhn-Tucker条件)是非线性优化问题的必要条件,通常用于解决包含约束条件的优化问题。它包括三个主要部分:

1)原问题的一阶导数为零,

2)松弛变量与约束条件的乘积为零(补充松弛性条件),

3)约束条件小于等于零。

例子

最小化 f(x,y) = x^2 + y^2, 受约束 g(x,y) = x + y - 1 <= 0。

1)原问题的一阶导数为零:df/dx = 2x + λ = 0,df/dy = 2y + λ = 0;

2)补充松弛性条件:λ * g(x,y) = 0;

3)约束条件:g(x,y) = x + y - 1 <= 0。

从1)我们可以得到 x = -λ/2,y = -λ/2,代入约束条件得到 λ = -2。代入回原问题解得到x = y = 1。验证满足所有条件,这是最优解。

对偶问题

对偶问题是一种优化策略,用于解决难以直接解决的原始优化问题。原始问题的对偶问题可以提供原问题解的下界(最小化问题)或上界(最大化问题)。对偶问题在许多优化算法(如支持向量机和线性规划)中被广泛应用,因为它通常具有更简单的数学形式,更易于求解。如果问题满足一些条件(如凸性和约束条件),原问题和对偶问题的解会相等,称为强对偶性。

例子

原始问题是:最小化 f(x) = x^2,满足条件 g(x) = x - 2 >= 0。

首先,构造拉格朗日函数L(x,λ) = f(x) - λg(x) = x^2 - λ(x - 2)。这里的λ是拉格朗日乘子,对应于约束g(x)。这个函数包含了原始问题的目标函数和约束,使得我们能够同时处理它们。

然后,我们构造对偶函数D(λ),它是拉格朗日函数L(x,λ)关于x的最小值。即,对于每个λ,找到最小化L(x,λ)的x。我们可以通过求解L(x,λ)的导数并令其等于零来找到这个x:2x - λ = 0,解出 x = λ / 2。然后,我们用x = λ / 2替换拉格朗日函数中的x,得到D(λ) = (λ/2)^2 - λ(λ/2 - 2) = -λ^2/2 + 2λ。

对偶问题是:最大化 D(λ)。即,找到使D(λ)最大的λ。我们可以通过求解D(λ)的导数并令其等于零来找到这个λ:-λ + 2 = 0,解出 λ = 2。

最后,我们将λ = 2带回原始问题,得到原始问题的解x = λ / 2 = 1。因此,原始问题的最小值是f(x) = (1)^2 = 1。

对偶问题原理解释

原始问题是寻找一个解来最小化目标函数。对于包含约束的最小化问题,我们可以构建拉格朗日函数,然后寻找使这个函数最小的值。然后,我们定义对偶函数,对偶函数是对于每个λ,拉格朗日函数的最小值。

然而,对于某些λ,对偶函数的值可能低于原问题的最优值。为什么会这样呢?这是因为拉格朗日函数包含了原问题的目标函数和约束。在满足所有约束的x值中,原问题的目标函数是有一个最小值的。而在所有x(可能并不满足所有约束)中,拉格朗日函数则可能找到一个更小的值。

对于所有可能的x(包括违反约束的x),在某些λ下,拉格朗日函数可能会比原问题的最优值还要小。这是因为λ * g(x)可能会使得拉格朗日函数减小,即使f(x)并未达到最小值。因此,对偶函数D(λ) = min_x{L(x, λ)}可能会给出一个小于原问题最优值的下界。而我们的目标是找到一个使这个下界尽可能大的λ,即求解max λ {D(λ)}。也就是使得对偶函数的值最大的λ。这就是为什么说对偶问题是寻找原问题最优值下界的最大化问题的原因。这样,我们就能找到最接近原问题最优值的下界,也就找到了原问题的一个近似解

软间隔与正则化

在现实任务往往很难确定合适的核函数使得训练样本在特征空间 中线性可分,所以我们允许支持向量机在一些样本上出错。

 替代损失函数

它们通常是凸的连续函数且是 的上界。

支持向量回归

 例子

from sklearn.svm import SVR
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
from sklearn.datasets import make_regression
import numpy as np

# 创建一个回归问题的数据集
X, y = make_regression(n_samples=100, n_features=1, noise=0.1)

# 将数据集划分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 使用线性核函数创建一个支持向量回归模型
svr = SVR(kernel='linear', epsilon=0.1, C=1.0)

# 在训练集上训练模型
svr.fit(X_train, y_train)

# 在测试集上测试模型
y_pred = svr.predict(X_test)

# 计算并输出均方误差
mse = mean_squared_error(y_test, y_pred)
print('Mean squared error: ', mse)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/64549.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

opencv基础-33 图像平滑处理-中值滤波cv2.medianBlur()

中值滤波是一种常见的图像处理滤波技术&#xff0c;用于去除图像中的噪声。它的原理是用一个滑动窗口&#xff08;也称为卷积核&#xff09;在图像上移动&#xff0c;对窗口中的像素值进行排序&#xff0c;然后用窗口中像素值的中值来替换中心像素的值。这样&#xff0c;中值滤…

分布式测试插件 pytest-xdist 使用详解

目录 使用背景&#xff1a; 使用前提&#xff1a; 使用快速入门&#xff1a; 使用小结&#xff1a; 使用背景&#xff1a; 大型测试套件&#xff1a;当你的测试套件非常庞大&#xff0c;包含了大量的测试用例时&#xff0c;pytest-xdist可以通过并行执行来加速整体的测试过…

Linux tcpdump 命令详解

简介 用简单的话来定义tcpdump&#xff0c;就是&#xff1a;dump the traffic on a network&#xff0c;根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的…

时序预测 | MATLAB实现BO-GRU贝叶斯优化门控循环单元时间序列预测

时序预测 | MATLAB实现BO-GRU贝叶斯优化门控循环单元时间序列预测 目录 时序预测 | MATLAB实现BO-GRU贝叶斯优化门控循环单元时间序列预测效果一览基本介绍模型搭建程序设计参考资料 效果一览 基本介绍 MATLAB实现BO-GRU贝叶斯优化门控循环单元时间序列预测。基于贝叶斯(bayes)…

One-4-All: Neural Potential Fields for Embodied Navigation 论文阅读

论文信息 题目&#xff1a;One-4-All: Neural Potential Fields for Embodied Navigation 作者&#xff1a;Sacha Morin, Miguel Saavedra-Ruiz 来源&#xff1a;arXiv 时间&#xff1a;2023 Abstract 现实世界的导航可能需要使用高维 RGB 图像进行长视野规划&#xff0c;这…

【Windbg】通过网络调试windows内核

环境 windows版本&#xff1a;win10_x64 1901 windbg版本&#xff1a;1.2306.12001.0 HOST 1、windbg软件设置。 点击菜单文件&#xff0c;然后如下图操作。 2、等待连接。 ************* Waiting for Debugger Extensions Gallery to Initialize **************>>&…

“他“是怎么拿offer的?全网最全,性能测试面试题+答案(超全整理)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、什么是负载测试…

BenchmarkSQL 支持 TiDB 驱动以及 tidb-loadbalance

作者&#xff1a; GangShen 原文来源&#xff1a; https://tidb.net/blog/3c274180 使用 BenchmarkSQL 对 TiDB 进行 TPC-C 测试 众所周知 TiDB 是一个兼容 MySQL 协议的分布式关系型数据库&#xff0c;用户可以使用 MySQL 的驱动以及连接方式连接 TiDB 进行使用&#xff0…

了解HTTP代理日志:解读请求流量和响应信息

嗨&#xff0c;爬虫程序员们&#xff01;你们是否在了解爬虫发送的请求流量和接收的响应信息上有过困扰&#xff1f;今天&#xff0c;我们一起来了解一下。 首先&#xff0c;我们需要理解HTTP代理日志的基本结构和内容。HTTP代理日志是对爬虫发送的请求和接收的响应进行记录的文…

基于STM32微控制器的物联网(IoT)节点设计与实现

基于STM32微控制器的物联网(IoT)节点的设计和实现。我们讨论物联网节点的基本概念和功能,并详细介绍了STM32微控制器的特点和优势。然后,我们将探讨如何使用STM32开发环境和相关的硬件模块来设计和实现一个完整的物联网节点。最后,我们将提供一个示例代码,展示如何在STM3…

QToolButton内存提前释放导致mouseReleaseEvent崩溃问题

QToolButton内存提前释放导致mouseReleaseEvent崩溃问题 1、问题现象及原因分析 1.1、问题现象 如图所示&#xff0c;mouseReleaseEvent接口this指针地址为空&#xff0c;导致了Qt内部发生了Access violation异常。 1.2、问题原因 在项目中&#xff0c;使用该QToolButton…

图扑软件入选 2023 中国信通院“铸基计划”全景图

7 月 27 日&#xff0c;由中国信通院主办的“2023 数字生态发展大会”暨中国信通院“铸基计划”年中会议在北京召开。本次大会重磅发布了《高质量数字化转型产品及服务全景图&#xff08;2023 上半年度&#xff09;》。图扑软件凭借自研 HT for Web 数字孪生可视化产品成功入选…

Swagger技术-自动生成测试接口

简介 前端资源和后端资源分开&#xff0c;前端通过nginx运行&#xff0c;后端通过tomcat运行 前端技术框架&#xff1a; Swagger 作用&#xff1a;生成各种样式的接口文档&#xff0c;以及在线接口调试页面等 kinfe4j是基于mvc框架继承swagger生成api文档的增强解决方案 …

在oracle SQL中创建返回表的函数

这是我的职责 create or replace FUNCTION split(i_str IN VARCHAR2,i_delim IN VARCHAR2 DEFAULT : ) RETURN TABLE AS BEGINRETURN SELECT trim(regexp_substr(i_str, [^||i_delim||], 1, LEVEL)) str FROM projetCONNECT BY instr(i_str, i_delim, 1, LEVEL - 1) …

赛码网-Light 100%AC代码(C++)

———————————————————————————————————— ⏩ 大家好哇&#xff01;我是小光&#xff0c;嵌入式爱好者&#xff0c;一个想要成为系统架构师的大三学生。 ⏩最近在准备秋招&#xff0c;一直在练习编程。 ⏩本篇文章对赛码网的 Light 题目做一个…

QT 使用单例模式

目录 1. 单例模式介绍 2.单例模式实现 1. 单例模式介绍 有些时候我们在做 qt 项目的时候,要用到很多类. 例如我们用到的类有 A,B,C,D. 其中,A 是 B,C,D 中都需要用到的类,A 类非常的抢手. 但是,A 类非常的占内存,定义一个 A 对象需要 500M 内存,假如在 B,C,D 中都定义一个 A 类…

爬虫获取电影数据----以沈腾参演电影为例

数据可视化&分析实战 1.1 沈腾参演电影数据获取 文章目录 数据可视化&分析实战前言1. 网页分析2. 构建数据获取函数2.1 网页数据获取函数2.2 网页照片获取函数 3. 获取参演影视作品基本数据4. 电影详细数据获取4.1 导演、演员、描述、类型、投票人数、评分信息、电影海…

e6zzseo:外贸独立站怎么推广

外贸独立站的推广需要一系列综合性的策略和方法&#xff0c;以吸引目标市场的访问者&#xff0c;并将他们转化为潜在客户。以下是一些推广外贸独立站的建议&#xff1a; 1. 搜索引擎优化&#xff08;SEO&#xff09;&#xff1a; e6zzseo认为优化网站可以适应搜索引擎的要求&a…

elementUi select下拉框触底加载异步分页数据

在Element UI中&#xff0c;可以通过监听select下拉框的visible-change事件来实现触底加载下一页的效果。 方式一&#xff1a;利用elementUi的事件 具体步骤如下&#xff1a; 首先&#xff0c;在select组件中设置&#xff1a;visible-change"handleVisibleChange"…

MySQL数据库基础

目标&#xff1a; 1.数据库操作&#xff1a;创建数据库&#xff0c;删除数据库 2.常用数据类型 3.表的操作&#xff1a;创建表&#xff0c;删除表 数据库操作 &#xff08;1&#xff09;显示数据库 show databases&#xff1b; &#xff08;2&#xff09;创建数据库 创建一个…