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

news2024/11/28 1:44:40

一、背景

支持向量机(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.coloradmin.cn/o/1432855.html

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

相关文章

django+flask网上购物商城系统的设计与实现python-vue

全球经济在快速的发展,中国更是进步飞速,这使得国内的互联网技术进入了发展的高峰时期,这让中外资本不断转向互联网这个大市场[3]。在这个信息高度发达的现在,利用网络进行信息管理改革已经成为了人们追捧的一种趋势。“网上购物系…

Qt案例 在对QGraphicsView视图修改和撤销修改图元操作时,使用命令模式实现。

当项目中有QGraphicsView视图直接修改图元的功能时,常会有CtriZ和CtrlY这种执行与撤销图元修改的功能,以便于在修改图元后能够进行一个还原/执行操作,此时就适合使用命令模式设计来实现这个功能。 以下示例在WINDOWS系统,Qt Creat…

【蓝桥杯冲冲冲】动态规划学习 [NOIP2003 提高组] 加分二叉树

【蓝桥杯冲冲冲】动态规划学习 [NOIP2003 提高组] 加分二叉树 蓝桥杯备赛 | 洛谷做题打卡day24 文章目录 蓝桥杯备赛 | 洛谷做题打卡day24[NOIP2003 提高组] 加分二叉树题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示数据规模与约定思路 题解代码我的一些话 [NOI…

MySQL如何实时同步数据到ES?试试阿里开源的Canal

前言 前几天在网上冲浪的时候发现了一个比较成熟的开源中间件—— Canal 。在了解了它的工作原理和使用场景后,顿时产生了浓厚的兴趣。今天,就让我们跟随我的脚步,一起来揭开它神秘的面纱吧。 目录 前言 简介 工作原理 MySQL主备复制…

两种方式实现文本超出指定行数显示展开收起...

需要实现这样一个功能 默认高度下文本超出隐藏&#xff0c;点击展开可查看所有内容&#xff0c;点击收起可折叠 方法一&#xff1a;通过html和css实现 代码部分 html:<div className"expand-fold"><input id"check-box" type"checkbox&qu…

(4)【Python数据分析进阶】Machine-Learning模型与算法应用-回归、分类模型汇总

线性回归、逻辑回归算法应用请参考: https://codeknight.blog.csdn.net/article/details/135693621https://codeknight.blog.csdn.net/article/details/135693621本篇主要介绍决策树、随机森林、KNN、SVM、Bayes等有监督算法以及无监督的聚类算法和应用PCA对数据进行降维的算法…

2024年生成式AI芯片市场规模将达500亿美元

1月24日&#xff0c;德勤发布《2024科技、传媒和电信行业预测》中文版报告&#xff0c;2024年是科技、传媒和电信行业关键的一年&#xff0c;不少科技公司正利用生成式AI升级软件和服务&#xff0c;预计今年全球生成式人工智能芯片销售额可能达到500亿美元以上。 2024年将有许…

量子计算帮助解锁对衰老和疾病的理解

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

初探unity中的ECS

ECS是一种软件架构模式&#xff0c;就像MVC一样。ECS最早在游戏《守望先锋》中提及到的相关链接。ECS具体是指实体&#xff08;entity&#xff09;、 组件&#xff08;component&#xff09;和系统&#xff08;system&#xff09;&#xff1a; 实体&#xff1a;实体是一个ID&a…

IDEA如何进行远程Debug调试(二)解决jar包运行报错的问题

一、解决jar包运行报错的问题 上文提到在进行debug远程调试的时候&#xff0c;打包后的jar包本地无法运行&#xff0c;报如下的错误 ​​​​​​​IDEA如何进行远程Debug调试-CSDN博客 查看报错是找不到对应的类&#xff0c;那么我们使用jd-gui的反编译工具&#xff0c;看看…

opencv中使用cuda加速图像处理

opencv大多数只使用到了cpu的版本&#xff0c;实际上对于复杂的图像处理过程用cuda&#xff08;特别是高分辨率的图像&#xff09;可能会有加速效果。是否需要使用cuda需要思考&#xff1a; 1、opencv的cuda库是否提供了想要的算子。在CUDA-accelerated Computer Vision你可以…

Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(三)

原文&#xff1a;Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第六章&#xff1a;决策树 决策树是多功能的机器学习算法&#xff0c;可以执行分类和回归任务&#xff0c;甚至多输出任务。它们…

Android BitmapShader setLocalMatrix缩放Bitmap高度重新onMeasure,Kotlin

Android BitmapShader setLocalMatrix缩放Bitmap高度重新onMeasure&#xff0c;Kotlin <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://sc…

Kubernetes基础(十一)-CNI网络插件用法和对比

1 CNI概述 1.1 什么是CNI&#xff1f; Kubernetes 本身并没有实现自己的容器网络&#xff0c;而是借助 CNI 标准&#xff0c;通过插件化的方式来集成各种网络插件&#xff0c;实现集群内部网络相互通信。 CNI&#xff08;Container Network Interface&#xff0c;容器网络的…

JavaScript原型和原型链是什么

JavaScript原型和原型链是Web前端技术中的重要概念&#xff0c;了解它们可以帮助开发者更好地理解JavaScript对象的创建和继承机制。本文将深入探讨JavaScript原型和原型链&#xff0c;并提供相关的示例代码和解析。 首先&#xff0c;让我们了解一下JavaScript中的原型。每个J…

ubuntu 18.04修改网卡名称

1.原来网卡配置 现在要把enp3s0的名称改为eth0 2. 总共修改三个文件 第一个修改 sudo vi /etc/default/grub 添加最后一行 GRUB_CMDLINE_LINUX"net.ifnames0 biosdevname0" 第二个修改sudo vi /etc/udev/rules.d/70-persistent-net.rules 如果没有就新建文件&a…

用通俗易懂的方式讲解:12 个大模型 RAG 痛点及解决方案

受 Barnett 等人的论文《工程检索增强生成系统时的七个失败点》启发&#xff0c;让我们在本文中探讨论文中提到的七个失败点以及开发 RAG 管道时的五个常见痛点。 论文&#xff1a;https://arxiv.org/pdf/2401.05856.pdf 更重要的是&#xff0c;我们将深入探讨这些 RAG 痛点的…

vue基本语法总结大全

vue基本语法 文章目录 vue基本语法基本用法内容渲染指令属性绑定指令使用js表达式事件绑定指令条件渲染指令v-else和v-else-if指令列表渲染指令v-for中的key 组件化开发安装详细讲解 第三方组件1. 组件间的传值2. element-ui介绍3. 组件的使用4. 图标的使用 Axios网络请求1. Ax…

Redis-缓存问题及解决方案

本文已收录于专栏 《中间件合集》 目录 概念说明缓存问题缓存击穿问题描述解决方案 缓存穿透问题描述解决方案 缓存雪崩问题描述解决方案提高缓存可用性过期时间配置熔断降级 总结提升 概念说明 Redis是一个开源的内存数据库&#xff0c;也可以用作缓存系统。它支持多种数据结构…

网络攻防模拟与城市安全演练 | 图扑数字孪生

在数字化浪潮的推动下&#xff0c;网络攻防模拟和城市安全演练成为维护社会稳定的不可或缺的环节。基于数字孪生技术我们能够在虚拟环境中进行高度真实的网络攻防模拟&#xff0c;为安全专业人员提供实战经验&#xff0c;从而提升应对网络威胁的能力。同时&#xff0c;在城市安…