机器学习系列——(十)支持向量机

一、背景

支持向量机(Support Vector Machine,SVM)是一种用于分类、回归和离群点检测等领域的监督学习方法。它最初由Vapnik和Cortes在1995年提出,被认为是机器学习领域中最成功的算法之一。

二、原理

2.1 线性SVM

我们先从最简单的线性支持向量机(Linear SVM)开始。对于一个二分类问题,假设训练数据集为D={(x1​,y1​),(x2​,y2​),...,(xn​,yn​)},其中xi​∈Rd表示第i个样本的d个特征值,yi​∈{−1,1}表示第i个样本的类别标签。我们的目标是构建一个分类器f(x),将样本x划分为正类或负类。线性支持向量机的基本思想是在特征空间中找到一个超平面,将不同类别的样本分开,并且使得超平面与离其最近的样本点之间的距离最大。这个距离也称为“间隔”(Margin)。

其中,w是超平面的法向量,b是截距,x+​和x−​分别表示正类和负类样本离超平面最近的点。它们满足以下条件:

将两式相减可得:

因此,超平面到离其最近的两个点的距离为:

SVM的目标就是最大化这个距离。同时,我们希望超平面能够将不同类别的样本分开,即对于所有i∈[1,n],有:

这个条件可以理解为对于任意一个样本,如果它被正确分类,则它在超平面两侧的距离之和必须大于等于22。这个条件也称为“硬间隔”(Hard Margin)。

但是,在实际问题中,有些样本可能无法被线性分开。

这种情况下,我们可以通过引入松弛变量(Slack Variable)ξi​≥0来允许部分样本分类错误,同时惩罚这些错误分类的样本。具体地,对于样本i,我们希望:

同时,我们最小化所有ξi​的和,即∑i=1n​ξi​。这个条件也称为“软间隔”(Soft Margin)。

综上所述,线性支持向量机的目标就是最小化以下函数:

其中,C是一个超参数,用于平衡较大的间隔和较小的误分类损失。

2.2 非线性SVM

上面介绍了如何使用线性超平面将不同类别的样本分开。但是,如果样本在特征空间中的分布非线性,则无法通过简单的线性超平面进行分割。

这个时候,我们可以使用核函数(Kernel Function)将样本从原始特征空间映射到高维特征空间,然后在高维特征空间中找到一个线性超平面,将不同类别的样本分开。常用的核函数包括线性核、多项式核、径向基函数(Radial Basis Function,RBF)核等。以RBF核为例,它的定义如下:

其中,γ是一个超参数,控制了映射到高维空间后的数据分布。使用核函数的非线性支持向量机的目标可以表示为:

其中,ϕ(x)表示将样本x映射到高维特征空间后的结果。

2.3 求解

上面介绍了支持向量机的基本原理,但是如何求解最优超平面呢?这个问题可以通过拉格朗日对偶性(Lagrange Duality)来解决。具体地,我们可以将优化问题转化为对偶问题,然后通过对偶问题的求解来得到最优超平面的参数。

以线性支持向量机为例,它的对偶问题可以表示为:

其中,α=[α1​,α2​,...,αn​]是拉格朗日乘子向量。通过求解上述对偶问题,我们可以得到最优的α,然后利用以下公式计算权重向量w和截距b:

其中,S表示支持向量的集合。

2.4 核方法

当使用核函数进行非线性分类时,我们需要在高维空间中计算数据点之间的内积,这个计算量很大,不利于模型的实际应用。但是,由于核函数的形式比较简单,我们可以使用核技巧(Kernel Trick)来避免直接计算内积,而是通过计算核函数的值来间接计算内积。具体地,我们将样本集中的每个样本映射到高维特征空间中,并计算它们之间的内积,这样就可以得到核矩阵(Kernel Matrix),然后在求解对偶问题时使用核矩阵代替内积即可,从而避免了直接进行昂贵的高维计算。

三、应用

支持向量机在分类、回归和离群点检测等领域中有着广泛的应用。在分类问题中,SVM被广泛应用于图像分类、文本分类、生物信息学等领域。在回归问题中,SVM可以用于预测连续值的变量,例如房价预测、股票价格预测等。此外,由于支持向量机具有好的泛化性能和鲁棒性,在离群点检测等场景中也经常被使用。

四、总结

支持向量机是一种优秀的监督学习方法,其基本思想是在特征空间中找到一个超平面,将不同类别的样本分开,并且使得超平面与离其最近的样本点之间的距离最大。通过引入松弛变量和核函数等技巧,SVM可以处理线性和非线性分类问题。由于支持向量机具有好的泛化性能和鲁棒性,在实际应用中得到了广泛的应用。

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

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

相关文章

openssl3.2 - use openssl cmd create ca and p12

文章目录 openssl3.2 - use openssl cmd create ca and p12概述笔记实验的openssl环境建立CA生成私钥和证书请求生成CA证书用CA签发应用证书用CA对应用证书进行签名将已经签名好的PEM证书封装为P12证书验证P12证书是否可用END openssl3.2 - use openssl cmd create ca and p12 …

Kafka系列(二)将消息数据写入Kafka系统--生产者【异步发送、同步发送、单线程发送、多线程发送、配置生产者属性、自定义序列化、自定义主题分区】

Kafka系列 发送消息到 Kafka 主题了解异步模式了解同步模式线程发送消息的步骤生产者用单线程发送消息生产者用多线程发送消息 配置生产者属性保存对象的各个属性一序列化序列化一个对象序列化对象的存储格式自己实现 序列化的步骤1. 创建序列化对象2. 编写序列化工具类3. 编写…

企业级大数据安全架构(九)FreeIPA管理员密码忘记后如何修改

作者:楼高 1重置Directory Server管理员密码 1.1停止directory server服务 [rootipa schema]# start-dirsrv HDP-HADOOP 如果你不知道你的实例名,可以通过如下方式获取 1.2生成一个新的HASH密码 停止服务后使用pwdhash命令生成一个新的HASH密码 [r…

HashMap的put和get流程

一、put流程图 首先进行哈希值的扰动,获取一个新的哈希值。(key null) ? 0 : (h key.hashCode()) ^ (h >>> 16); 判断tab是否位空或者长度为0,如果是则进行扩容操作。 if ((tab table) null || (n tab.length) 0)n (tab resize()).l…

JAVASE进阶:Collection高级(2)——源码剖析ArrayList、LinkedList、迭代器

👨‍🎓作者简介:一位大四、研0学生,正在努力准备大四暑假的实习 🌌上期文章:JAVASE进阶:Collection高级(1)——源码分析contains方法、lambda遍历集合 📚订阅…

Java学习-内部类

内部类概述 1.成员内部类 注意: 2.静态内部类 3.局部内部类(看看就行) 4.匿名内部类 应用场景:通常作为一个参数传给方法 Eg.小猫和小狗都参加游泳比赛

图解支付-金融级密钥管理系统:构建支付系统的安全基石

经常在网上看到某某公司几千万的个人敏感信息被泄露,这要是放在持牌的支付公司,可能就是一个非常大的麻烦,不但会失去用户的信任,而且可能会被吊销牌照。而现实情况是很多公司的技术研发人员并没有足够深的安全架构经验来设计一套…

使用WPS制作三线表

点击边框和底纹点击1、2、3、4并且应用于表格点击确定 再次选中表格点击右键表格属性选择边框和底纹 选中表格第一行右键点击表格属性选择边框和底纹 如果表格中存在虚线

用户访问一个购物网站时TCP/IP五层参考模型中每一层的功能

当用户访问一个购物网站时,网络上的每一层都会涉及不同的协议,具体网络模型如下图所示。 以下是每个网络层及其相关的协议示例: 物理层:负责将比特流传输到物理媒介上,例如电缆或无线信号。所以在物理层,可…

调用其他数据库,事务回滚

1、定时 JDBC 的事务 2、事务提交 3、事务回滚 样例 Transactional(propagation Propagation.REQUIRES_NEW)RequestMapping(value "/ix_work_order", method RequestMethod.POST, consumes MediaType.APPLICATION_JSON_VALUE,produces MediaType.APPLICATION_…

spring boot3x登录开发-上(整合jwt)

⛰️个人主页: 蒾酒 🔥系列专栏:《spring boot实战》 🌊山高路远,行路漫漫,终有归途。 目录 前置条件 jwt简介 导依赖 编写jwt工具类 1.配置项直接嵌入代码,通过类名.静态方法使用 2.配置项写到…

大数据 - Spark系列《三》- 加载各种数据源创建RDD

Spark系列文章: 大数据 - Spark系列《一》- 从Hadoop到Spark:大数据计算引擎的演进-CSDN博客 大数据 - Spark系列《二》- 关于Spark在Idea中的一些常用配置-CSDN博客 目录 3.1🧀加载文件(本地) 1. 加载本地文件路径 🌮使用te…

让IIS支持SSE (Server Sent Events)

本文只探讨IISPython网站的情况,对于asp.net也应该不用这么麻烦。 先上结论:用反向代理: IIS URL Rewrite waitress Waitress是一个纯python编写独立的WSGI服务器,功能比Gunicorn弱一些,但可以运行在windows平台上&…

基于springboot智慧养老平台源码和论文

首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设计。本项…

牛客周赛 Round 31

D. 思路&#xff1a;使用map构造两个链表。 #include <bits/stdc.h> using namespace std;map<int,int> l,r; int main() {int q;cin>>q;int op-1e9-1;int ed1e91;r[op]ed;l[ed]op;while(q--){int a;cin>>a;if(a1){int x,y;cin>>x>>y;int…

echarts使用之饼图(四)

1 基本使用 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Compatible" cont…

【Elasticsearch】从入门到精通

目前java常见的针对大数据存储的方案并不多&#xff0c;常见的就是mysql的分库分表、es存储 这里偏向es存储方案&#xff0c;es不同的版本之间其实差异还挺大的&#xff0c;本篇博文版本Elasticsearch 7.14.0 Springboot整合Easy-Es Easy-Es官方文档 Elasticsearch的初步认识 …

【MATLAB源码-第135期】基于matlab的变色龙群优化算法CSA)机器人栅格路径规划,输出做短路径图和适应度曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 变色龙群优化算法&#xff08;Chameleon Swarm Algorithm&#xff0c;CSA&#xff09;是一种新颖的群体智能优化算法&#xff0c;受到自然界中变色龙捕食和社交行为的启发。变色龙以其独特的适应能力而著称&#xff0c;能够根…

【vue3学习P5-P10】vue3语法;vue响应式实现

0、vue2和vue3对比 框架版本API方式双向绑定原理domFragmentsTree-Shakingvue2选项式API&#xff08;Options API&#xff09;基于Object.defineProperty&#xff08;监听&#xff09;实现&#xff0c;不能双向绑定对象类型的数据【通过Object.defineProperty里面的set和get做…

【Linux网络编程三】Udp套接字编程网络应用场景

【Linux网络编程三】Udp套接字编程网络应用场景 应用场景一&#xff1a;远程命令执行应用场景二&#xff1a;与Windos端相互通信应用场景三&#xff1a;简单聊天1.多线程化2.输入输出分开 应用场景一&#xff1a;远程命令执行 简单的服务器上一篇已经完成&#xff0c;接下来我…
最新文章