SVM解决线性不可分问题

news2024/9/20 16:34:03

在一个棋盘上杂糅的摆放着黑白两种棋子,要求我们以最快的速度将它们各自分开,这时我们应该如何做呢?也许喜欢金庸武侠的小伙伴已经想到了答案。

假如你是一位拥有深厚内力的大侠,你直接可以拍盘而起,让棋子们飞起来,同时让黑子飞高一点,白子则相对低一些,这样平面无法线性区分的分类问题,瞬间成了在立体空间内使之分类,此时你以迅雷不及掩耳之势,在它们分开的间隔内插上一张薄纸,就可以轻易地将黑、白两种棋子分开。

注意:上述示例只是类比,示例中的棋子,也只是一个个“样本点”。

回到现实世界中我们只是普通人,并非武侠小说中的大侠,因此不能凭借内力让棋子飞起来。既然不能用内力来解决问题,那么我们应该如何做呢?下面回归到本节的主题——支持向量机,它也是一本武功秘籍,掌握了它,同样可以让“棋子”飞起来。下面就一起来看看支持向量机是如何让“棋子”飞起来的”。

SVM高维映射

宋朝的苏轼有诗云“横看成岭侧成峰,远景高低各不同,不识庐山真面目,只缘身在此山中”诗的前两句指的从不同的角度看待一个事物会得到不一样的结果,用这句诗来引出的“高维映射”这个概念再合适不过了。

支持向量机的三大核心构件分别是最大间隔、高维映射以及核函数,高维映射则是支持向量机的第二个核心构件。我们知道线性分类器最大的特点就是简单,说白了就是“一根筋”,当面对非线性分类问题时不知变通,因此就需要帮助它疏通一下,就像解决 Logostic 逻辑回归问题一样,高维映射就是我们要寻找的方法。

1) 超平面

高维映射主要是用来解决“你中我,我中有你”的分类问题的,也就是前面所说的“线性不可分问题”,所谓高维映射就是站在更高的维度来解决低维度的问题。

我们都知道点线面可以构成三维立体图,比如棋子是棋盘上的“点",“间隔”是棋盘上的一条线,棋盘则是一个“面”,而当我们拍盘而起,棋子飞升就会形成一个多维的立体空间,示意图如下:
 

svm_超平面


图1:超平面示意图


如图所示经过高维映射后,二维分布的样本点就变成了三维分布,而那张恰好分开棋子的纸(图 1 呈现绿色的平面),  SVM 统称其为“超平面”。

通过增加一个维度的方法(给平面增加一个高度,使其变成三维空间),解决“线性不可分的问题”。在上述过程中仍存在一些问题会令你困惑,比如为什么映射到高维后就一定能保证正负类分开,还有一个更令人挠头的问题,这个高维空间应该如何找呢,以及在新的空间中,原有的数据点的位置是如何确定的呢?要想知道答案,不妨继续往下读。

SVM核函数

要想解决上述问题,就必须要了解支持向量机的另外一个重要部件——核函数(Kernel Function)。

核函数是一类功能性函数,类似于 Logistic 函数。SVM 规定,只要能够完成高维映射功能的数学函数都称为“核函数”,它在支持向量机中承担着两项任务,一是增加空间的维度,二是完成现有数据从原空间到高维空间的映射。接下来对其做详细的介绍。

首先我们再次强调 SVM 是一种使用线性方法来处理线性不可分问题的算法。明确了这一点,下面再来看一个实例说明,对于 “你中有我,我中有你”这句话来说,最为经典的案例,当属一类数据包围了另外一类数据。如下图 2 所示:

深蓝色的的球,被另外一种淡蓝色的球体包裹住了,在这种情况下,任何一条直线都不能将它们分开,因此就无法使用线性函数直接实现类别划分。
 

支持向量机案例


图2:SVM核函数应用


现在我们变通一下使用高维映射的思维来解决一下,看看能否找到解决问题的突破口。

接下来,我们将深蓝色的数据点全部映射到一个三维空间内,使之与浅蓝色的数据点形成高度差,这样就可以使用线性函数完成不同样本点的分类了,就如同倒扣的漏斗,深蓝色的数据点全部集中与上方,而浅蓝色的则分布在漏斗底部,此时可以用一个平面(此处平面就是超平面)将它们分开,如图 3 所示中间的分割线。
 

svm支持向量机


图3:SVM高维映射


上述高维映射过程是通过核函数(或称映射函数)来实现的,通过这个函数就可以找到一个三维空间,并确定数据点分布,至于能否保证样本点完全分开,这也是由核函数决定的。那么这个核函数要怎么确定呢,这就要通过实际案例的分析、运算才能得到。

在 Pyhthon Sklearn 库提供了多种核函数,使用不同的核函数会对最终的分类效果带来不同程度影响,因此要选择使得分类效果最优的核函数。

因此高维映射和核函数看似是两个分开的部件,其实是一个整体,高维映射的核心就是“核函数”。更通俗地讲,高维映射只是一种指导思想,而核函数才是具体实践者。

总结

通过这两节的学习,我们认识了 SVM 重要组部分间隔最大化和高维映射(将它与核函数看做一体),下面对已经学习的知识做简单总结:

SVM 算法是用来解决线性不可分的“非线性”问题, 从而突破线性分类的局限性,使得线性分类器依然可以适用于“非线性”问题。在这个过程中起到关键作用的就是“高维映射”。而“间隔最大化”可以看做支持向量机的损失函数,它衡量分类效果是否最佳的“标尺”,让间隔达到最大就是 SVM 追求的至臻境界,要实现这个目标就要不断地训练模型,使模型的泛化能力最佳。

最后对 SVM 算法进行分类的大致过程进行总结,大致分为以下三步:

  • 选取一个合适的数学函数作为核函数;
  • 使用核函数进行高维映射,解决样本点线性不可分的问题;
  • 最后用间隔作为度量分类效果的损失函数,找到使间隔最大的超平面,最终完成分类的任务。

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

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

相关文章

secExample靶场之java反序列化漏洞复现

我是使用kali虚拟机搭建的靶场,具体搭建步骤可以看我之前的博客内容。 访问靶机地址,打开java反序列化的 点进去后是如图的页面,随便输入一信息。 可以看到敏感信息直接显示在了页面上。 访问192.168.189.141:8080/cors1,可以看到…

揭秘律师界的“超能力”:AI如何让繁琐工作变轻松?

律师朋友们,你们是否也曾为文书堆成山、法规更新追不上、案例分析耗时久而头疼?我懂你们的痛,毕竟,咱也是从那个“人肉检索机”时代走过来的。不过,今天我要分享一个秘密武器——AI工具,它们真的能帮咱们把…

由浅入深的了解进程(3)

进程状态 进程状态1、Linux中的进程状态1、1、进程状态R和S1、2、进程状态T/t1、3、进程状态D1、4、进程状态X和Z 2、僵尸进程3、孤儿进程4、bash概括5、进程的阻塞,挂起和运行5、1、运行5、2、阻塞5、3、挂起 进程状态 任何一个进程都要有自己的代码和数据一样&am…

CSS雷达光波效果(前端雷达光波效果)

前言 CSS雷达光波效果是一种视觉动画效果,常用于模仿雷达扫描或检测的视觉反馈。这种效果通常涉及到动态的圆形或弧形图案,它们从一个中心点向外扩散,类似于水面上的涟漪或雷达扫描线。以下是创建CSS雷达光波效果的一些关键技术和步骤&#…

[C++] 容器适配器:深入理解Stack与Queue的底层原理

文章目录 容器适配器简介deque的缺陷为什么使用deque作为stack和queue的底层默认容器 stack和queue的简单讲解Stack(栈)栈的操作图示栈的相关接口 Queue(队列) Stack和Queue的模拟实现Stack(栈)作为容器适配…

新时代的北斗时空智能:助力节能减排,共筑低碳未来

随着全球环境问题日益加剧,节能减排和低碳生活成为了全世界共同的目标。中国作为一个崛起中的大国,在这一领域肩负着重要的责任。近年来,中国的北斗卫星导航系统(BDS)异军突起,其时空智能技术在多个方面特别…

盘点国内ERP系统,看看你都用过哪一款?

在数字化转型的浪潮中,企业资源计划(ERP)系统已成为企业提升管理效率、优化资源配置的关键工具。国内市场上,众多优秀的ERP软件产品如雨后春笋般涌现,为企业提供了丰富多样的选择。 本文将为您深度盘点10款国产高端ERP软件,重点围绕公司背景、专业实力、产品核心能力、解…

【机器学习】逻辑损失函数的基本概念和探索为什么平方误差损失函数不适用于逻辑回归以及探索逻辑损失函数

引言 在机器学习中,逻辑损失函数(Logistic Loss Function)是用于训练逻辑回归模型的一种损失函数。逻辑回归是一种广泛用于分类问题的模型,特别是用于二分类问题,它的目标是预测一个实例属于两个类别中的一个的概率 文…

经验模态分解 (EMD) 及其在信号降噪中的应用

引言 在信号处理领域,处理非线性和非平稳信号是一个重要的挑战。传统的信号处理方法,如傅里叶变换和小波变换,虽然在处理线性和稳态信号方面表现出色,但在面对复杂信号时往往力不从心。经验模态分解 (Empirical Mode Decompositi…

【IO】 对于fread,fwrite,time_t,fseek等操作,写日志文件,完成文件的拷贝,对bmp图像进行读写操作;

目录 1>写一个日志文件,将程序启动后,每一秒的时间写入到文件中 ​编辑 2>使用fread、fwrite完成两个文件的拷贝 3>实现对bmp图像的读写操作 1>写一个日志文件,将程序启动后,每一秒的时间写入到文件中 1、2024-7…

mysql排查锁等待

排查锁等待步骤 最近线上碰到了几次mysql锁等待的问题,一个事务线程长期占用锁资源,导致其他事务无法获取到锁,为了快速解决问题,我们把线程kill掉了,但后面就定位不到具体的问题了,这里我总结整理一下我的…

【C语言】qsort详解——能给万物排序的神奇函数

🦄个人主页:小米里的大麦-CSDN博客 🎏所属专栏:https://blog.csdn.net/huangcancan666/category_12718530.html 🎁代码托管:qsort的使用和模拟实现 a96cdd4 黄灿灿/C语言 - Gitee.com ⚙️操作环境:Visual Studio 2022 目录 一、引言 二、…

java编程练习(初学者)每日练题

一、前言(目前java的就业环境) Java仍然是IT行业中最受欢迎和广泛使用的编程语言之一,特别是在企业级应用、后端服务、金融系统、大型网站、游戏开发等领域。Java岗位的需求依然强劲,体现在多个方面:1.企业级应用&…

Linux通过Docker安装Microsoft Office+RDP远程控制

之前写过一篇使用KVM虚拟机安装Microsoft OfficeRDP远程控制的文章,根据B站的教程安装后,发现有远程控制延迟的问题,比如拖动Office窗口时会延迟,搜狗输入法扫一下就闪退,插入形状后无法调整大小,无法调整图…

十七、【人工智能】【机器学习】【非监督学习】- K-均值 (K-Means)

系列文章目录 第一章 【机器学习】初识机器学习 第二章 【机器学习】【监督学习】- 逻辑回归算法 (Logistic Regression) 第三章 【机器学习】【监督学习】- 支持向量机 (SVM) 第四章【机器学习】【监督学习】- K-近邻算法 (K-NN) 第五章【机器学习】【监督学习】- 决策树…

热门超声波清洗机有哪些?值得入手的超声波清洗机品牌推荐

相信大家对超声波清洗机并不陌生,每次眼镜脏了,去眼镜店清洗时,店员使用的就是超声波清洗机。这种机器通过超声波的原理,能深入清洁物品内部,清洁效果非常好。相比于手动清洗,超声波清洗机可以在清洁过程中…

PHP健身微信小程序系统源码

🏋️‍♀️健身新潮流!解锁“健身微信小程序”的全方位塑形秘籍 📱开篇:掌中健身房,随时随地动起来 你还在为找不到合适的健身场地或教练而烦恼吗?是时候告别这些束缚,拥抱“健身微信小程序”…

身在职场,要认清的3个真理,让你把同事远远甩在身后

总有人被一些表面的现象所以蒙蔽,还沾沾自喜以为自己掌握了“真理”。职场上从来不缺“好心人”,总是用所谓的经验来告诫别人,应该如何做事。 大家都在说的事情,就一定是对的?那么为什么大多数人还活不成自己想成为的…

基于“日志审计应用”的 DNS 日志洞察实践

作者:羿莉 (萧羿) 基础背景 DNS(Domain Name System) [ 1] 是任何网络活动的基础。它将易于记忆的域名转换为机器能够理解的 IP 地址。监控 DNS 服务可以帮助用户识别网络活动并保持系统安全。出于合规和安全性的考虑,公司通常要求对网络日志进行存储和…

手撕算法题3 (附源码和思路)

算法 1.有效的括号2.用队列实现栈3.用栈实现队列3.设计循环队列 1.有效的括号 有效的括号 思路 借助栈这样的数据结构,将所有左括号进行入栈,所有右括号与出栈的括号比较,相同循环继续,不同直接返回false。循环结束后检查栈是否为…