【支持向量机(SVM)】:算法原理及核函数

news2024/11/20 18:37:35

文章目录

  • 1 SVM算法原理
    • 1.1 目标函数确定
    • 1.2 约束条件优化问题转换
    • 1.3 对偶问题转换
    • 1.4 确定超平面
    • 1.5 计算举例
    • 1.6 SVM原理小节
  • 2 SVM核函数

1 SVM算法原理

1.1 目标函数确定

SVM思想:要去求一组参数(w,b),使其构建的超平面函数能够最优地分离两个集合
在这里插入图片描述
样本空间中任意点x到超平面(w,b)的距离可写成:
在这里插入图片描述
欲找到具有最大间隔的划分超平面,也就是要找到能满足下式中约束的参数w和b,使得间隔γ最大。
在这里插入图片描述

  • y为正例的时候取值为1,y为负例的时候取值为-1
    距离超平面最近的几个训练样本点使上式等号成立,他们被称为“支持向量”,两个异类支持向量到超平面的距离之和为:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.2 约束条件优化问题转换

在这里插入图片描述

1.3 对偶问题转换

在这里插入图片描述
在这里插入图片描述

此时,求解当 α 是什么值时,该值会变得很大,当求出 α 值,再求解 w, b 值。此时,就变成了极大极小值问题。

1.4 确定超平面

在这里插入图片描述

1.5 计算举例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.6 SVM原理小节

  1. 支持向量机公式推导最主要找到 w、b 的求解方法
  2. α 非0的样本为支持向量

2 SVM核函数

2.1 核函数的作用

核函数将原始输入空间映射到新的特征空间,从而,使原本线性不可分的样本可能在核空间可分。
在这里插入图片描述

2.2 核函数分类

当存在线性不可分的场景时,我们需要使用核函数来提高训练样本的维度、或者将训练样本投向高维
在这里插入图片描述

  1. 线性核:一般是不增加数据维度,而是预先计算内积,提高速度
  2. 多项式核:一般是通过增加多项式特征,提升数据维度,并计算内积
  3. 高斯核(RBF、径向基函数):一般是通过将样本投射到无限维空间,使得原来不可分的数据变得可分。高斯核函数使用的最多。

在这里插入图片描述
SVM 默认使用 RBF 核函数,将低维空间样本投射到高维空间,再寻找分割超平面。

2.3 高斯核函数

高斯核 Radial Basis Function Kernel (径向基函数,又称RBF核)
在这里插入图片描述

  • γ = 1 2 σ 2 \gamma=\frac {1}{2\sigma^2} γ=2σ21
  • γ \gamma γ是超参数,作用与标准差相反
  • γ \gamma γ越大,高斯分布越窄,数据越集中; γ \gamma γ越小,高斯分布越宽,数据越分散

在这里插入图片描述

2.3 高斯核函数API

from sklearn.svm import SVC
SVC(kernel="rbf",gamma=gamma)
from sklearn.datasets import make_moons
import matplotlib.pyplot as plt
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from plot_util import plot_decision_boundary


# 获取数据
x,y=make_moons(noise=0.15)
plt.scatter(x[y==0,0],x[y==0,1])
plt.scatter(x[y==1,0],x[y==1,1])
plt.show()

# 构建函数
def RBFsvm(gamma=0.1):
    return Pipeline(
        [
            ('std_scalar',StandardScaler()),
            ('svc',SVC(kernel='rbf',gamma=gamma))
        ]
    )

# 实验
# svc1 =RBFsvm(0.5)
# x_std=svc1['std_scalar'].fit_transform(x)
# svc1.fit(x_std,y)
# plot_decision_boundary(svc1,axis=[-3,3,-3,3])
# plt.scatter(x_std[y==0,0],x_std[y==0,1])
# plt.scatter(x_std[y==1,0],x_std[y==1,1])
# plt.show()

svc1 =RBFsvm(1.0)
svc1.fit(x,y)
plot_decision_boundary(svc1,axis=[-1.5,2.5,-1,1.5])
plt.scatter(x[y==0,0],x[y==0,1])
plt.scatter(x[y==1,0],x[y==1,1])
plt.show()


svc2 =RBFsvm(100)
svc2.fit(x,y)
plot_decision_boundary(svc2,axis=[-1.5,2.5,-1,1.5])
plt.scatter(x[y==0,0],x[y==0,1])
plt.scatter(x[y==1,0],x[y==1,1])
plt.show()

svc3 =RBFsvm(0.1)
svc3.fit(x,y)
plot_decision_boundary(svc3,axis=[-1.5,2.5,-1,1.5])
plt.scatter(x[y==0,0],x[y==0,1])
plt.scatter(x[y==1,0],x[y==1,1])
plt.show()

在这里插入图片描述

2.4 超参数 γ \gamma γ

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自动驾驶系列—告别眩光烦恼:智能大灯如何守护夜间行车安全

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…

无插件H5播放器EasyPlayer.js RTSP播放器chrome/edge等浏览器如何使用独立显卡

随着互联网的快速发展和视频内容的日益丰富,HTML5视频播放器已成为网页视频播放的主流技术。EasyPlayer.js播放器视频播放技术不仅支持多种浏览器和设备,还提供了丰富的功能和更好的用户体验。 那么chrome/edge等浏览器如何使用独立显卡? 在…

@Autowired 和 @Resource思考(注入redisTemplate时发现一些奇怪的现象)

1. 前置知识 Configuration public class RedisConfig {Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {RedisTemplate<String, Object> template new RedisTemplate<>();template.setConnectionFactory(facto…

STM32低功耗设计NFC与无线距离感应智能钥匙扣-分享

目录 目录 前言 一、本设计主要实现哪些很“开门”功能&#xff1f; 二、电路设计原理图 1.电路图采用Altium Designer进行设计&#xff1a; 2.实物展示图片 三、程序源代码设计 四、获取资料内容 前言 智能钥匙扣作为一种小巧而实用的智能设备&#xff0c;凭借其便携性…

微服务day09

DSL查询 快速入门 GET /items/_search {"query": {"match_all": {}} } 叶子查询 GET /items/_search {"query": {"match_all": {}} }GET /items/_search {"query": {"multi_match": {"query": "脱…

Golang语言整合jwt+gin框架实现token

1.下载jwt go get -u github.com/dgrijalva/jwt-go2.新建生成token和解析token文件 2.1 新建common文件夹和jwtConfig文件夹 新建jwtconfig.go文件 2.2 jwtconfig.go文件代码 /* Time : 2021/8/2 下午3:03 Author : mrxuexi File : main Software: GoLand */ package jwtC…

Orcad 输出有链接属性的PDF

安装adobe pdf安装Ghostscript修改C:\Cadence\SPB_16.6\tools\capture\tclscripts\capUtils\capPdfUtil.tcl ​ 设置默认打印机为 Adobe PDF ​ 将Ghostscript的路径修改正确 打开cadence Orcad &#xff0c;accessories->candece Tcl/Tk Utilities-> Utilities->PD…

Java读取WPS excel.xlsx嵌入图片

1. 背景&原因 经常有读取Excel文件的需求&#xff0c;开发者大多使用apache poi或者基于此的工具进行excel内容读取&#xff0c;前不久遇到了一个需求&#xff0c;读取每一行内容&#xff0c;但每一行都包含图片文件&#xff0c;发现无法通过已封装的工具读取excel的图片内…

Elasticsearch 查询时 term、match、match_phrase、match_phrase_prefix 的区别

Elasticsearch 查询时 term、match、match_phrase、match_phrase_prefix 的区别 keyword 与 text 区别term 查询match 查询match_phrase 查询match_phrase_prefix 查询写在最后 在讲述 es 查询时 term、match、match_phrase、match_phrase_prefix 的区别之前&#xff0c;先来了…

ERROR TypeError: AutoImport is not a function

TypeError: AutoImport is not a function 原因&#xff1a;unplugin-auto-import 插件版本问题 Vue3基于Webpack&#xff0c;在vue.config.js中配置 当unplugin-vue-components版本小于0.26.0时&#xff0c;使用以下写法 const { defineConfig } require("vue/cli-se…

iOS 18 导航栏插入动画会导致背景短暂变白的解决

问题现象 在最新的 iOS 18 系统中,如果我们执行导航栏的插入动画,可能会造成导航栏背景短暂地变为白色: 如上图所示:我们分别向主视图和 Sheet 弹出视图的导航栏插入了消息,并应用了动画效果。可以看到,前者的导航栏背景会在消息插入那一霎那“变白”,而后者则没有任何…

PHP屏蔽海外IP的访问页面(源代码实例)

PHP屏蔽海外IP的访问页面&#xff08;源代码实例&#xff09;&#xff0c;页面禁用境外IP地址访问 <?php/*** 屏蔽海外ip访问* 使用ip2long函数得到ip转为整数的值&#xff0c;判断值是否在任一一个区间中* 以下是所有国内ip段* 调用方法&#xff1a;IschinaIp($ALLIPS)* …

SpringBoot 增量部署发布(第2版)

一、背景介绍 书接上一篇《SpringBoot 增量部署发布_springboot增量部署-CSDN博客》&#xff0c;上一篇内容实现了将静态资源与jar分离&#xff0c;但是即使是打包成**-exec.jar&#xff0c;解压jar文件&#xff0c;可以看到里面包含了static&#xff0c;resource目录&#xf…

单片机智能家居火灾环境安全检测-分享

目录 前言 一、本设计主要实现哪些很“开门”功能&#xff1f; 二、电路设计原理图 电路图采用Altium Designer进行设计&#xff1a; 三、实物设计图 四、程序源代码设计 五、获取资料内容 前言 传统的火灾报警系统大多依赖于简单的烟雾探测器或温度传感器&#xff0c;…

C++:指针和引用

指针的基础 数据在内存当中是怎么样被存储的 数据在内存中的存储方式取决于数据的类型和计算机的体系结构 基本数据类型 整数类型&#xff1a;整数在内存中以二进制补码的形式存储。对于有符号整数&#xff0c;最高位为符号位&#xff0c;0 表示正数&#xff0c;1 表示负数。…

MySQL更换瀚高语法更换

MySQL更换瀚高语法更换 一、前言二、语句 一、前言 水一篇,mysql更换瀚高之后&#xff0c;一些需要更换的语法介绍 > 二、语句 MySQL瀚高MySQL用法瀚高用法说明ifnull(x,y)coalesce(x,y)相同相同用于检查两个表达式并返回第一个非空表达式。如果第一个表达式不是 NULL&…

亚马逊云服务器(AWS):功能、优势与使用指南

亚马逊云服务器&#xff08;AWS&#xff09;概述 亚马逊云服务器&#xff08;Amazon Web Services&#xff0c;简称AWS&#xff09;是全球领先的云计算平台&#xff0c;提供一系列强大且灵活的云服务&#xff0c;帮助企业和开发者通过云基础设施实现数据存储、计算、分析和机器…

国产三维CAD 2025新动向:推进MBD模式,联通企业设计-制造数据

本文为CAD芯智库原创整理&#xff0c;未经允许请勿复制、转载&#xff01; 上一篇文章阿芯分享了影响企业数字化转型的「MBD」是什么、对企业优化产品设计流程有何价值——这也是国产三维CAD软件中望3D 2024发布会上&#xff0c;胡其登先生&#xff08;中望软件产品规划与GTM中…

小试牛刀-Anchor安装和基础测试

目录 一、编写目的 二、安装步骤 2.1 安装Rust 设置rustup镜像 安装Rust 2.2 安装node.js 2.3 安装Solana-CLI 2.4 安装Anchor CLI 三、Program测试 四、可能出现的问题 Welcome to Code Blocks blog 本篇文章主要介绍了 [Anchor安装和基础测试] 博主广交技术好友&…

如何在 Ubuntu 上安装 Emby 媒体服务器

Emby 是一个开源的媒体服务器解决方案&#xff0c;它能让你整理、流媒体播放和分享你的个人媒体收藏&#xff0c;包括电影、音乐、电视节目和照片。Emby 帮你集中多媒体内容&#xff0c;让你无论在家还是在外都能轻松访问。它还支持转码&#xff0c;让你能够播放各种格式的内容…