【机器学习】 15. SVM 支撑向量机 support vector machine,拉格朗日,软边界,核函数

SVM 支撑向量机 support vector machine,拉格朗日,软边界,核函数

  • 1. 超平面边界 margin of hyperplane
  • 2. 边界越大的超平面越好
    • 原因
  • 3. 线性模型通过决策边界分类
  • 4. SVM的问题
  • 5. 拉格朗日乘子与SVM结合求最大边界
  • 6. SVM软边界和硬边界
  • 7. 非线性 SVM
    • 核方法 kernal trick
      • 一些有效的核方法(符合默瑟定理)
  • 8. sklearn 中的C

1. 超平面边界 margin of hyperplane

在这里插入图片描述

  • 超平面中找决策边界,有很多。
  • 支持向量是靠近决策边界的例子;删除它们将改变决策边界。
  • 边缘(margin):边界和最接近的例子之间的距离。
  • 边界在边缘(margin)的中间。

2. 边界越大的超平面越好

  • 具有最大边缘的超平面称为最大边缘超平面。
  • 它是到训练示例的距离最大的超平面。
  • SVM选择最大边缘超平面。

原因

  • 如果边界很小,那么超平面或训练例子在边界上的任何轻微变化都更有可能影响分类,因为允许数据扰动的空间非常小。
  • 小边界更容易过度拟合
  • 另一方面,如果差距很大,就有更多的余地对数据的微小变化保持稳健。
  • 可能有更好的泛化性能。
  • 从统计学习理论也有理由,结构风险最小化原则。

3. 线性模型通过决策边界分类

如果x在决策边界之上:wx +b > 0 class1
如果x在决策边界以下:w
x +b < 0 class2

s i g n ( w ∗ x + b ) sign(w * x + b ) sign(wx+b)

4. SVM的问题

H1: wx +b =1 (2,3 也可以)
H2: w
x +b = -1
设于H1和H2上的点为支持向量
在这里插入图片描述

  • 根据w的方向决定H1和H2,跟w一样方向的是1
  • d = 2 / ||w|| d为H的边际
  • 对于任意一个样本点, 它到超平面的垂直距离为
    ∣ w ∗ x + b ∣ ∣ ∣ w ∣ ∣ \frac{|w*x+b|}{||w||} ∣∣w∣∣wx+b
    代入H1-H2求两个点之间距离得到d
  • 为了最大化边际d,我们需要最小化||w||
    • 这等价于最小化二次函数
      1 2 ∣ ∣ w ∣ ∣ 2 \frac{1}{2}||w||^2 21∣∣w2

5. 拉格朗日乘子与SVM结合求最大边界

拉格朗日乘子法的基本原理是通过引入拉格朗日乘子(λ)将原来的约束优化问题转化为无约束的方程组问题。拉格朗日乘子法的求解过程大致分为以下步骤:

1、原问题描述:求解函数z=f(x, y)在条件φ(x, y)=0条件下的极值。

2、构造函数:F(x, y, λ) = f(x, y) + λ · φ(x, y), 其中λ为拉格朗日乘子。

3、构造函数求偏导,列出方程组。
在这里插入图片描述
4、求出x, y, λ的值, 代入即可得到目标函数的极值。

在这里插入图片描述
在这里插入图片描述
我们可以使用拉格朗日乘数法将约束条件结合到目标函数中, 构造如下:
L ( w , b , λ ) = 1 2 ∣ ∣ w ∣ ∣ 2 − ∑ i = 1 N λ i [ y i ( w ∗ x i + b ) − 1 ] L (w,b,λ) = \frac{1}{2}||w||^2 - \sum^N_{i=1}λ_i[y_i(w*x_i+b)-1] L(w,b,λ)=21∣∣w2i=1Nλi[yi(wxi+b)1]
对w 和 b进行求偏导
得到
w = ∑ i = 1 N λ i y i x i w = \sum_{i=1}^N λ_iy_ix_i w=i=1Nλiyixi
∑ i = 1 N λ i y i = 0 \sum_{i=1}^N λ_iy_i = 0 i=1Nλiyi=0
代入之后得到
m a x L ( w , b , λ ) = ∑ i = 1 N λ i − 1 2 ∑ i = 1 N ∑ j = 1 N λ i λ j y i y j x i . x j max L (w,b,λ) =\sum_{i=1}^N λ_i- \frac{1}{2}\sum^{N}_{i=1}\sum^{N}_{j=1}{λ_iλ_jy_iy_jx_i.x_j} maxL(w,b,λ)=i=1Nλi21i=1Nj=1Nλiλjyiyjxi.xj
这个公式的最大解得到最终的拉格朗日乘数λ,可以使用QP技术等。
得到λ之后就可以计算出w。
λ_i > 0 的点是支撑向量。
假设有多个样本,其中两个样本的λ大于0,其他样本都是0,那么这两个就是支撑向量。根据λ代入w的公式中,得到各自的w

6. SVM软边界和硬边界

软边际=允许在正超平面和负超平面之间存在一些样本点.
在这里插入图片描述
边际的距离上B1远胜B2, 但是B1中正负超平面之间存在两个错误分类的样本点。
一般情况下, 边际的距离更重要, 因为大的边际距离能够让模型更少受噪音干扰, 防止过拟合.

在硬边际分类问题中, 我们要最小化
∣ ∣ w ∣ ∣ ||w|| ∣∣w∣∣
而在软边界中,增加了一个参数C
∣ ∣ w ∣ ∣ + C ∑ ξ i ||w|| + C\sumξ_i ∣∣w∣∣+Cξi
ξ是每个样本的额外允许的误差当C变大的时候, 会使得更加注重减小分类错误, 而不是增加边际距离.

  • 当C为无穷大时,为了保证目标函数取得最小值,需要要求ξ=0,即所有样本严格满足硬间隔约束条件;
  • 当C取有限值时,允许部分样本不满足约束条件。

7. 非线性 SVM

解决了线形不可分的问题,数据的特征空间转换:当数据在其原始特征空间中不是线性可分的时,我们可以考虑将其转换到⼀个新的特征空间中,这样在新的空间⾥数据可能会变得线性可分。⾮线性转换到更⾼维度:通过⾮线性变换,我们可以将数据映射到⼀个更⾼的维度。在这个更⾼维度的空间中,数据有更⼤的可能性是线性可分的。想象⼀下,⼀组在⼆维平⾯上不可分的数据点,可能在三维空间中可以被⼀个平⾯完美地分隔。
在这里插入图片描述
在这里插入图片描述

  • 将数据从其原始特征空间转换为一个新的空间,线性边界可以用来分离数据

  • 如果转换是非线性的,并向更高的维度空间,它更有可能比线性的决策边界可以在其中找到。

  • 在新特征空间中学习到的线性决策边界被映射回原始特征空间,导致原始空间中的非线性决策边界

核方法 kernal trick

能够直接计算⾼维空间中两个数据点的点积,⽽⽆需显式地将数据点映射到那个⾼维空间。

通过使⽤核函数,绕过在⾼维空间中进⾏显式计算的需求,从⽽有效地处理⾮线性问题,

避免了⾼维度带来的计算复杂性。在⽀持向量机(SVM)中,这种技巧尤为关键,因为SVM的⼯作原理是基于数据点之间的点积。

使⽤核技巧,我们可以直接计算这些点积,从⽽实现⾮线性分类,⽽不需要在⾼维空间中处理数据。

简⽽⾔之,核技巧的核⼼是利⽤核函数来“欺骗”算法,使其“认为”它在⾼维空间中⼯作,⽽实际上我们只是在原始空间中计算点积。这使得计算更加⾼效和实⽤。

  1. 映射关系: 当我们想将数据从原始空间转移到⼀个⾼维空间时,通常需要定义⼀个映射函数(例如ϕ(x)这个映射函数的作⽤是将数据点从原始特征空间映射到⼀个更⾼的维度。
  2. ⾼维空间中的计算: 在⾼维空间中,我们可能需要计算两个映射后的数据点的点积,即ϕ(xi)ϕ(xj) 。直接进⾏这样的计算可能会⾮常耗时,特别是当映射到的维度⾮常⾼时。
  3. 核函数的作⽤: 核函数 的作⽤就是直接计算⾼维空间中的点积,⽆需显式地计算映射 。这意味着我们可以得到⾼维空间中的点积值,但不需要明确地执⾏映射过程,最终提⾼计算效率
    ϕ ( u ) ∗ ϕ ( v ) = ( u ∗ v ) 2 ϕ(u) * ϕ(v) = (u*v)^2 ϕ(u)ϕ(v)=(uv)2
    以上这个公式简要概括了核函数的作用,不需要计算高维空间的映射ϕ,而是直接用核函数算出高维空间点积。

一些有效的核方法(符合默瑟定理)

Mercer定理:一个核函数K(u,v)如果满足特定条件, 那么这个核函数一定对应着某一个映射函数
在这里插入图片描述

8. sklearn 中的C

通过上述讲解,在sklearn中掉包的时候,C已经有了清晰的认知。
超参数C控制模型对误分类点的惩罚强度

  • 当C很小的时候, 允许更多的点被误分类, 因此决策边界更加平滑, 接近线性, 适用于防止过拟合, 我们可以看左上角的图, 边界基本上是线性的了;
  • 当C很大的时候, 模型更加关注误分类的点, 导致决策边界弯曲, 以捕捉到更多的细节, 如果数据复杂, 模型可能会过拟合。
    所以,过拟合的时候应该减小C,欠拟合的时候应该再增加C
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot获取resources目录下的文件

在 Spring Boot 项目中&#xff0c;获取 resources 目录中的文件路径通常涉及到访问类路径资源&#xff08;classpath resources&#xff09;。Spring Boot 提供了一些工具类和方法&#xff0c;可以方便地访问这些资源。以下是一些常见的方法&#xff1a; 首先&#xff0c;我们…

GitLab代码仓管理安装配置使用

Gitlab介绍 GitLab是一个基于Git的开源项目管理工具&#xff0c;它集成了版本控制、代码审查、持续集成&#xff08;CI&#xff09;/持续部署&#xff08;CD&#xff09;、自动化测试等多种功能&#xff0c;是一个完整的DevOps平台。以下是对GitLab的详细介绍&#xff1a; 一…

C#/WinForm 基于ffmpeg视频流转GIF

源码&#xff1a;https://gitee.com/feng-cai/screenshot-recording

Pinctrl子系统pinctrl_desc结构体进一步介绍

往期内容 本专栏往期内容&#xff1a; Pinctrl子系统和其主要结构体引入 input子系统专栏&#xff1a; 专栏地址&#xff1a;input子系统input角度&#xff1a;I2C触摸屏驱动分析和编写一个简单的I2C驱动程序 – 末片&#xff0c;有往期内容观看顺序 I2C子系统专栏&#xff1a;…

基于OSS搭建在线教育视频课程分享网站

OSS对象存储服务是海量、安全、低成本、高持久的存储服务。适合于存储大规模非结构化数据&#xff0c;如图片、视频、备份文件和容器/虚拟机镜像等。 安装nginx wget https://nginx.org/download/nginx-1.20.2.tar.gz yum -y install zlib zlib-devel gcc-c pcre-devel open…

研究轮腿运动学方案的看法

本文学习自电科中山柳同学的方案分享 遇到的问题&#xff1a; 1、轮毂输出力矩不足以配合腿部收敛机体姿态&#xff08;即腿部关节输出和轮毂输出都被LQR拉大了&#xff0c;但是轮毂最大力矩不够用了&#xff09; 可以引入MPC对LQR输出的反馈增益矩阵K 进行反向增益&#xf…

Linux学习_11

第十章管理Linux的联网 主要包括配置网络&#xff0c;通过域名访问主机&#xff0c;从网站瞎子啊文件&#xff0c;VMware三种网络模式 配置网络 概念 网络接口是指网络中的计算机或网络设备与其他设备实现通讯的进出口&#xff0c;一般是指计算机的网络接口即网卡设备 从RHEL7开…

VBto Converter是一款功能强大的工具,可让您快速轻松地将Microsoft Visual Basic 6.0项目转换

VBto Converter是一款功能强大的工具&#xff0c;可让您快速轻松地将Microsoft Visual Basic 6.0项目转换 1、简介2、官方网站3、本站下载&#xff08;已汉化&#xff09; 1、简介 VBto Converter V2.90 版本&#xff0c;是一款功能强大的工具&#xff0c;可让您快速轻松地将M…

巨好看的登录注册界面源码

展示效果 源码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"widthdevic…

突破挑战,创新前行 | 生信科技SOLIDWORKS 2025新品发布会·合肥站精彩回顾

2024年10月18日&#xff0c;由生信科技举办的首场SOLIDWORKS 2025新产品发布会在安徽合肥圆满落幕。现场邀请到制造业的专家学者们一同感受SOLIDWORKS 2025最新功能&#xff0c;探索制造业数字化转型之路。 合肥站活动日&#xff0c;由生信科技副总经理徐建开场。他以智造无界&…

【解决方案】微信小程序如何使用 ProtoBuf 进行 WebSocket 通信

前言 故事背景 简单说下背景&#xff0c;项目中需要用 ProtoBuf 协议转换请求参数&#xff0c;并通过 WebSocket 进行双向通信。重点&#xff01;一个是 web端&#xff08;Vue3 TS&#xff09;&#xff0c;一个是微信小程序端&#xff08;原生 JS&#xff09;。 剧情发展 …

Copilot一又成编程助手Top1,GitHub官宣接入Claude+Gemini!OpenAI的Canvas沦为备胎

Copilot一又成编程助手Top1&#xff0c;GitHub官宣接入ClaudeGemini&#xff01;OpenAI的Canvas沦为备胎 &#x1f31f; &#x1f44b; 大家好&#xff0c;我是猫头虎&#xff01;今天带大家来深度解读GitHub Copilot 的最新动态&#xff01;在第十届 GitHub 开发者大会上&…

三周精通FastAPI:24 OAuth2 实现简单的 Password 和 Bearer 验证

官网文档&#xff1a;https://fastapi.tiangolo.com/zh/tutorial/security/simple-oauth2/ OAuth2 实现简单的 Password 和 Bearer 验证 本章添加上一章示例中欠缺的部分&#xff0c;实现完整的安全流。 获取 username 和 password 首先&#xff0c;使用 FastAPI 安全工具获…

Hugging Face | 个人使用笔记

一、网站介绍 模型和数据集都是开源的 搜索模型是默认按照趋势排序的 二、模型具体页面 三、调用API小练习 模型网站&#xff1a;flux-RealismLora 1.点击View Code 获取参考代码 2.创建一个python文件复制进一个代码编辑器 注意&#xff1a;需要补充最后一行保存代码 …

用unity XR interaction Toolkit 制作垃圾分类虚拟仿真项目

项目效果演示&#xff1a; 垃圾分类虚拟仿真项目演示 1.环境配置 选择universal 3D(通用渲染管道)项目&#xff08;不然导入素材包会丢失材质&#xff09;。 选择Window->Package Manager,安装其中的XR interaction Toolkit。 选择其中的Samples,导入Starter Assets。 选择…

基于web的便捷饭店点餐小程序的设计与实现(lw+演示+源码+运行)

摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对高校教师成果信息管理混乱&#xff0c;出错率高&#xff0c;信息安全…

快速入门HTML

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗 如有错误&#xff0c;欢迎指出~ 目录 第一个html文件 标签 h1~h6 p >段落标签 br > 换行标签 img >图片标签 a >超链接标签 表格标签 表单标签 表单控件 form表单 ⽆语义标签:div&span 综…

【简道云 -注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

C#与C++交互开发系列(十七):线程安全

前言 在跨平台开发和多线程编程中&#xff0c;线程安全是不可忽视的重要因素。C和C#中提供了各自的线程同步机制&#xff0c;但在跨语言调用中&#xff0c;如何确保数据一致性、避免数据竞争和死锁等问题&#xff0c;是开发人员必须考虑的重点。 本文将介绍在C#和C交互开发中确…

docker-minio启动参数

完整命令 docker run -p 9000:9000 -p 9090:9090 -v /opt/minio/data:/data -d --name minio -d --restartalways -e "MINIO_ACCESS_KEYminio" -e "MINIO_SECRET_KEYminioadmin123" minio/minio server --console-address ":9090" -address &…