【机器学习入门】一文读懂非线性支持向量机SVM

news2024/9/23 15:19:05

前面已经分别介绍了基于硬间隔最大化的线性可分支持向量机、基于软间隔最大化的线性支持向量机,这次来总结下使用核函数来解决非线性可分问题的非线性支持向量机。

  • 【机器学习入门】一文读懂线性可分支持向量机
  • 【机器学习入门】一文读懂线性支持向量机SVM

一 非线性可分问题怎么解决

对于非线性可分问题,我们本着简化问题的思想,自然是希望将其转化为熟悉的线性可分问题进行处理,那么怎么做呢?对于一个在样本的原始空间中不是线性可分的数据,如下左图中的红色样本点和蓝色样本点,如果想要进行分类的话,可以将数据映射到更高维的特征空间中,如果映射的合适的话,就能找到一个超平面将数据分类,如下右图所示:

这种做法是特例还是可以普遍使用的呢?《机器学习》书上说:

如果原始空间是有限维,且属性数有限,那么一定存在一个高维特征空间使样本可分

不过书上并没有解释原因,我们先从低维直观的理解一下,如下图所示:在一维线性不可分的数据,可以映射成在二维线性可分的,在二维线性不可分的数据,可以映射成在三维线性可分的:

在更高的维度也适用吗?实际上,这个论点在理论上是有证明的,即Cover定理,Cover定理可以理解为:当空间的维数D越大时,在该空间的N个数据点间的线性可分的概率就越大。如果固定数据的数量N,维度D小于数据数量N时,特征空间维度越高,越有可能使数据线性可分;在维度超过数据数量时,数据一定线性可分(试想如果我们把每个数据点都映射到不同的坐标轴上,那么可不就是线性可分的了么)。

因此,我们对非线性可分的数据,可以将数据映射至高维空间,然后再用我们熟悉的线性分类器来分类,至此,剩下的问题就是怎么映射呢?这就需要核函数登场了。

二 核函数

2.1 什么是核函数

由于上述的超平面只能解决线性可分的问题,对于线性不可分的问题,例如:异或问题,我们需要使用核函数将其进行推广。一般地,解决线性不可分问题时,常常采用映射的方式,将低维原始空间映射到高维特征空间,使得数据集在高维空间中变得线性可分,从而再使用线性学习器分类。如果原始空间为有限维,即属性数有限,那么总是存在一个高维特征空间使得样本线性可分。若∅代表一个映射,则在特征空间中的划分函数变为:

按照同样的方法,先写出新目标函数的拉格朗日函数,接着写出其对偶问题,求L关于w和b的极大,最后运用SOM求解α。可以得出:

(1)原对偶问题变为:

(2)原分类函数变为:

求解的过程中,只涉及到了高维特征空间中的内积运算,由于特征空间的维数可能会非常大,例如:若原始空间为二维,映射后的特征空间为5维,若原始空间为三维,映射后的特征空间将是19维,之后甚至可能出现无穷维,根本无法进行内积运算了,此时便引出了核函数(Kernel)的概念。

因此,核函数可以直接计算隐式映射到高维特征空间后的向量内积,而不需要显式地写出映射后的结果,它虽然完成了将特征从低维到高维的转换,但最终却是在低维空间中完成向量内积计算,与高维特征空间中的计算等效**(低维计算,高维表现)**,从而避免了直接在高维空间无法计算的问题。引入核函数后,原来的对偶问题与分类函数则变为:

(1)对偶问题:

(2)分类函数:

因此,在线性不可分问题中,核函数的选择成了支持向量机的最大变数,若选择了不合适的核函数,则意味着将样本映射到了一个不合适的特征空间,则极可能导致性能不佳。同时,核函数需要满足以下这个必要条件:

2.2 常用核函数

由于核函数的构造十分困难,通常我们都是从一些常用的核函数中选择,下面列出了几种常用的核函数:

三 基于核函数的非线性支持向量机

因为在映射后的高维空间中,支持向量机还是在解决线性可分的数据,所以原理、目标函数什么的都跟之前是一样的,只是最终的形式上有所不同,最终可得非线性支持向量机模型:

非线性支持向量机的算法过程:

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

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

相关文章

GCViT实战:使用GCViT实现图像分类任务(一)

摘要 GC ViT(全局上下文视觉转换器)是一种创新的深度学习架构,旨在提升计算机视觉任务中的参数和计算效率。它通过将全局上下文自注意力模块与标准的局部自注意力相结合,有效地建模长程和短程空间交互,同时避免了传统…

IJCAI-信也科技杯全球AI大赛-华东师范大学亚军队伍分享

作者:彭欣怡(找不到工作版) 华东师范大学; 马千里(搬砖版) 虾皮; 指导:闫怡搏(科研版) 华东师范大学 比赛链接:https://ai.ppdai.com/mirror/goToMirrorDetailSix?mirrorId34 前言 这是我们首次参加语音领域的比赛,最初只是抱着…

深度学习之 OpenCV 图像边缘检测算法解析及代码演示

引言 在计算机视觉领域,边缘检测是一种重要的图像预处理技术,用于识别图像中对象的边界。边缘检测有助于提取图像的关键特征,这对于后续的图像分析(如物体识别、运动检测等)至关重要。OpenCV 是一个强大的计算机视觉库…

Zabbix 企业级高级应用(Zabbix Enterprise Advanced Application)

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

备忘录1【java环境变量手动更改】

B站视屏链接:https://www.bilibili.com/video/BV1cV8BeCESA?vd_source3e4562475feb55327a8adde111050d4e 1.电脑设置 2.系统-------系统信息 3.高级系统设置 4.环境变量 5.系统变量中,更改之前创建好的JAVA_HOME 版本可以将1.8改成本机安装的其他版本…

Java进阶13讲__第九讲

Stream流 1. 案例初体验 package cn.hdc.oop9.stream.using;import java.util.LinkedList; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream;public class t1 {public static void main(String[] args) {LinkedList<String&g…

认知杂谈30

今天分享 有人说的一段争议性的话 I I 《豁然开朗&#xff1a;男性成长的关键转折》 在男人的人生旅程当中啊&#xff0c;最金贵的可不是那些让人眼馋的钱财啥的&#xff0c;也不是啥惊天动地的事儿&#xff0c;更不是偶尔碰到的贵人帮忙。真正无价的宝贝呢&#xff0c;是在…

培训第四十一天(docker-compose一键部署项目,haproxy容器代理多个web或java容器)

# 创建脚本&#xff0c;可以在java环境中运行任何的jar包或者war包#!/bin/bash/usr/local/jdk/bin/java -jar /java/src/*.?ar 一、思路分析&#xff1a; &#xff08;1&#xff09;nginx 1、下载镜像&#xff0c;将本地的dist项目的目录挂载在容器的/usr/share/nginx/html…

论文解读:Visual Prompt Tuning

Comment: ECCV2022 摘要 当前调整预训练模型的方法需要更新backbone的全部参数&#xff0c;即完全微调。本文提出了一种高效的方法VPT&#xff0c;成为视觉中大规模transformer模型完全微调的替代方案。从微调大规模语言模型中吸取经验&#xff0c;VPT仅在输入空间中引入少数…

【C语言】通讯录的实现(详解)

通讯录的实现 主要用到的知识&#xff1a; 1.结构体相关知识 2.枚举 3.多文件 在学习完结构体和枚举后就可以利用学过的知识去实现一个通讯录了 1.通讯录要求 用C语言所学知识实现下面这样一个通讯录 1.通讯录100个联系人 2.姓名 性别 年龄 电话 地址 3.添加联系人 4.删除指…

SQL server数据库实现远程跨服务器定时同步传输数据

项目背景 公司新建项目&#xff0c;需要访问生产数据&#xff0c;但是规定不能直接访问生产数据库服务器&#xff0c;所以得考虑通过中间库的形式实现。经过评估项目需求 &#xff0c;以及当前拥有的环境。 需求&#xff1a; 1.用户不需要实时获取生产数据 2.用户只需要指定的…

Python青少年简明教程:函数

Python青少年简明教程&#xff1a;函数 在Python中&#xff0c;函数是一段可重用的代码块&#xff0c;用于执行特定的任务。函数能够接受输入参数&#xff0c;执行特定的操作&#xff0c;并返回结果。 Python提供了许多内置函数&#xff0c;如print()、len()、eval()等&#x…

Java基于微信小程序的校园兼职小程序

博主介绍&#xff1a;✌stormjun、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&…

shadertoy-sdf 操作

vec3 col getBackgroundColor(uv); float d1 sdCircle(uv, 0.1, vec2(0., 0.)); float d2 sdSquare(uv, 0.1, vec2(0.15, 0));float res; // result1、union res min(d1, d2); // union2、intersection res max(d1, d2); // intersection3、subtraction res max(-d1, d…

Python实战案例数据合并订单表和商品价格表数据

有如下数据&#xff0c;订单表和商品价格表&#xff0c;进行数据合并&#xff0c;输出客户需要的效果。 数据样例&#xff1a;&#x1f447; 订单表: 商品价格表: 最终效果&#xff1a; 01实现思路 目的是将订单数据和商品价格数据按照商品id和时间进行匹配&#xff0c;以…

基于nodejs+vue+uniapp的学习资料销售平台小程序

开发语言&#xff1a;Nodejs框架&#xff1a;expressuniapp数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;VS Code 系统展示 管理员登录 管理员主界面 用户管理 学习资料管理 订单管理 系统管理 用户…

未来已来:2024年远程控制行业的新星工具推荐

个人用户对于设备管理的便捷需求&#xff0c;远程控制软件都以其独特的优势&#xff0c;搭建起一座座沟通的桥梁。今天&#xff0c;我们就来探索一款集高效性、安全性与易用性于一体的远程控制软件。为了软件得到的方便我会介绍比如能从向日葵远程控制官网、TD官网、GH官网能直…

用RPC Performance Inspector 优化你的区块链

目录 什么是RPC&#xff1f; RPC Performance Inspector 是做什么的&#xff1f; 为什么需要这个工具&#xff1f; 如何使用它&#xff1f; 适合谁用&#xff1f; 如何使用&#xff1f; 什么是RPC&#xff1f; RPC Performance Inspector 是一个专门用于测试和分析RPC性能…

C语言 动态内存管理 #动态内存函数的介绍 #常见的动态内存错误 #C\C++ 程序的内存开辟 #柔性数组

文章目录 前言 一、为什么存在动态内存分配 二、动态内存函数的介绍 1、malloc 2、free 3、calloc 4、realloc realloc 的工作原理&#xff1a; 三、常见的动态内存错误 1、对NULL指针的解引用操作 2、对动态开辟空间的越界访问 3、对非动态开辟的空间使用 free 来释…

数学建模强化宝典(8)粒子群算法

前言 粒子群算法&#xff08;Particle Swarm Optimization, PSO&#xff09;是一种基于群体智能的优化算法&#xff0c;它源于对鸟群捕食行为的研究。通过模拟鸟群中的个体相互协作和信息共享来寻找最优解&#xff0c;粒子群算法已被广泛应用于函数优化、神经网络训练、模糊系统…