【机器学习】12.十大算法之一支持向量机(SVM - Support Vector Machine)算法原理讲解

news2024/9/27 21:22:59

【机器学习】12.十大算法之一支持向量机(SVM - Support Vector Machine)算法原理讲解

  • 一·摘要
  • 二·个人简介
  • 三·基本概念
  • 四·支持向量与超平面
      • 4.1 超平面(Hyperplane)
      • 4.2 支持向量(Support Vectors)
      • 4.3 核技巧(Kernel Trick)
      • 4.4 软间隔与正则化
  • 五·SVM算法原理
      • 5.1 点到超平面的距离公式
      • 5.2 最大间隔的优化模型
  • 六·松弛变量
      • 6.1 松弛变量的定义
      • 6.2 优化模型的修改
      • 6.3 软间隔与硬间隔
      • 6.4 核技巧与松弛变量
  • 七·核函数
      • 7.1 核函数的基本概念
      • 7.2 常用的核函数
      • 7.3 核函数的作用

一·摘要

在这里插入图片描述

支持向量机(SVM)是一种高效的监督学习算法,广泛应用于分类和回归问题。它通过在特征空间中寻找一个最优的超平面来区分不同类别的数据点,目标是最大化两类数据点之间的间隔,从而提高模型的泛化能力。SVM的关键概念包括超平面、间隔、支持向量以及核函数,其中核函数允许SVM处理非线性问题,通过将数据映射到更高维的空间来寻找线性可分的超平面。此外,软间隔和正则化技术用于处理数据的非完全线性可分性,同时控制模型复杂度,防止过拟合。SVM的实现涉及选择合适的核函数,构建并求解一个凸二次规划问题,以及评估和应用训练好的模型。它的优点在于模型简单、易于实现,且具有良好的泛化能力,但计算复杂度高,对核函数和参数选择敏感,且在处理大规模数据集时可能会遇到性能瓶颈。

二·个人简介

🏘️🏘️个人主页:以山河作礼。
🎖️🎖️:Python领域新星创作者,CSDN实力新星认证,CSDN内容合伙人,阿里云社区专家博主,新星计划导师,在职数据分析师。

💕💕悲索之人烈焰加身,堕落者不可饶恕。永恒燃烧的羽翼,带我脱离凡间的沉沦。

在这里插入图片描述

🐘 希望大家能持续支持,共同向前迈进!😁
如果您觉得文章有价值,
欢迎留言💬,点赞👍,收藏🔖并关注我们➕🤝。
🪐💫💫💫💫💫💫💫热门专栏💫💫💫💫💫💫💫🪐
类型专栏
Python基础Python基础入门—详解版
Python进阶Python基础入门—模块版
Python高级Python网络爬虫从入门到精通🔥🔥🔥
Web全栈开发Django基础入门
Web全栈开发HTML与CSS基础入门
Web全栈开发JavaScript基础入门
Python数据分析Python数据分析项目🔥🔥
机器学习机器学习算法🔥🔥
人工智能人工智能

三·基本概念

支持向量机(Support Vector Machine, SVM)是一种强大的机器学习算法,主要用于解决分类和回归问题。它基于统计学习理论中的结构风险最小化原则,通过在特征空间中寻找一个最优的决策边界,即超平面,来区分不同的数据类别。这个超平面的选择旨在最大化数据点到超平面的最短距离,这个距离被称为间隔(margin)。间隔越大,模型的泛化能力通常越好。

SVM的核心是支持向量,这是一组对确定超平面位置和方向至关重要的数据点,它们是距离超平面最近的点。如果数据不是线性可分的,SVM通过引入核函数将原始数据映射到一个更高维的空间,在这个新空间中寻找线性可分的超平面。常用的核函数包括线性核、多项式核、径向基函数(RBF)核等。

为了处理数据中的噪声和异常点,SVM引入了软间隔的概念,允许一些数据点被错误分类,以换取更好的泛化性能。同时,通过正则化项控制模型的复杂度,避免过拟合。SVM的训练过程通常涉及到求解一个凸二次规划问题,以找到最优的超平面参数。

见下图,在一个二维环境中,其中点R,S,G点和其它靠近中间黑线的点可以看作为支持向量,它们可以决定分类器,也就是黑线的具体参数。
在这里插入图片描述

四·支持向量与超平面

支持向量和超平面是支持向量机(SVM)算法中的核心概念。下面我将详细解释这两个概念:

4.1 超平面(Hyperplane)

在数学中,超平面是一个线性子空间,其维度比它所在的空间低一维。例如,在二维空间中,超平面是一条直线;在三维空间中,它是平面;在更高维空间中,它仍然是一个线性边界,但可能难以直观理解。

在SVM中,超平面用于将数据分为不同的类别。对于二维空间,你可以想象超平面是一条直线,将空间分为两部分,每部分包含一个类别的数据点。对于更高维度的空间,超平面是一个更高维的线性边界,同样用于分隔数据点。

4.2 支持向量(Support Vectors)

支持向量是那些位于距离超平面最近的数据点。它们是SVM在训练过程中用来确定超平面位置的关键数据点。如果从这些点中移除任何一个,都会改变超平面的位置和方向。

支持向量之所以重要,是因为它们定义了数据点之间的边界(即间隔)。SVM的目标是找到这样一个超平面,使得最近的这些支持向量(即距离超平面最近的数据点)与超平面之间的距离(间隔)最大化。这个间隔的大小是衡量模型泛化能力的一个重要指标。

4.3 核技巧(Kernel Trick)

在实际应用中,数据可能不是线性可分的。这时,SVM可以使用核技巧来处理非线性问题。核函数可以将原始数据映射到一个更高维的空间,在新的空间中寻找一个线性可分的超平面。常用的核函数包括线性核、多项式核、径向基函数(RBF)核等。

4.4 软间隔与正则化

在处理实际数据时,可能无法找到一个完美的超平面来完全分开所有数据点。这时,SVM引入了软间隔的概念,允许一些数据点被错误分类,以换取更好的泛化能力。同时,通过正则化项(通常是法向量的范数)来控制模型的复杂度,避免过拟合。

在这里插入图片描述

五·SVM算法原理

5.1 点到超平面的距离公式

点到超平面的距离公式用于计算一个点到给定超平面的最短距离。超平面在n维空间中可以用以下方程式表示:
在这里插入图片描述
其中:
w 是一个n维的法向量,垂直于超平面。
x 是一个n维的点,位于空间中。
b 是超平面的偏置项。
点 x 到这个超平面的垂直距离 d 可以通过以下公式计算:
在这里插入图片描述
这个公式的几何意义是:从点 𝑥 向超平面作垂线,垂足到点 𝑥的距离就是𝑑这个距离也代表了点 𝑥到超平面的“间隔”。在支持向量机中,间隔的大小是非常重要的,因为它与模型的泛化能力有关。SVM的目标是找到这样一个超平面,使得间隔最大化,即所有数据点到这个超平面的距离之和最大。

5.2 最大间隔的优化模型

线性可分情况下的优化模型
当数据是线性可分的,即存在一个超平面能够完美地将不同类别的数据点分开,SVM的目标是找到一个超平面,使得距离最近的两个数据点(即支持向量)到超平面的距离最大化。这个距离被称为间隔(margin)。
超平面可以表示为:
在这里插入图片描述
最大间隔优化问题
SVM的目标函数是最大化间隔,可以表示为:
在这里插入图片描述
在这里插入图片描述引入拉格朗日乘子
在这里插入图片描述
对偶问题
在这里插入图片描述

六·松弛变量

在支持向量机(SVM)中,松弛变量(Slack Variables)是引入的一种机制,用于处理数据集中的非线性可分情况。在理想情况下,如果数据是线性可分的,SVM可以找到一个超平面将不同类别的数据点完全分开,同时最大化间隔。然而,在现实世界中,很多数据集并不是完全线性可分的,这就需要使用松弛变量来允许一些数据点被错误分类,从而提高模型的泛化能力。在这里插入图片描述

6.1 松弛变量的定义

在这里插入图片描述

6.2 优化模型的修改

在这里插入图片描述
这里的 𝐶是一个正的调节参数,用于控制模型对误分类的惩罚程度。𝐶的值越大,模型对误分类的惩罚越重,越倾向于找到没有误分类的解;𝐶的值越小,模型对误分类的容忍度越高,越容易找到间隔更大的解,即使这意味着更多的误分类。

6.3 软间隔与硬间隔

  • 硬间隔(Hard Margin):没有引入松弛变量的SVM,要求所有数据点都在间隔边界的外侧或边界上,即不允许任何误分类。
  • 软间隔(Soft Margin):引入了松弛变量的SVM,允许一些数据点在间隔边界的内侧,即允许一定程度的误分类。 核技巧与松弛变量.

6.4 核技巧与松弛变量

即使在非线性可分的情况下,通过使用核技巧将数据映射到高维空间,结合松弛变量,SVM仍然可以找到具有最大间隔的超平面。

七·核函数

核函数(Kernel Function)是支持向量机(SVM)中的一种重要工具,它允许SVM在高维空间中有效地处理非线性问题。核函数的基本思想是通过映射将原始数据从低维空间映射到高维空间,在这个高维空间中寻找数据的线性可分性。
在这里插入图片描述

7.1 核函数的基本概念

在这里插入图片描述

7.2 常用的核函数

在这里插入图片描述

7.3 核函数的作用

  1. 处理非线性问题:通过映射到高维空间,核函数使得原本在低维空间中线性不可分的数据在高维空间中线性可分。
  2. 提高模型表达能力:不同的核函数可以捕捉数据的不同特征,提高模型的表达能力。
  3. 减少计算复杂度:使用核函数可以避免直接在高维空间中进行计算,从而减少计算复杂度。

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

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

相关文章

数据结构实操代码题~考研

作者主页: 知孤云出岫 目录 数据结构实操代码题题目一:实现栈(Stack)题目二:实现队列(Queue)题目三:实现二叉搜索树(BST)题目四:实现链表(Linked…

Gitlab CI/CD介绍

基本概念 GitLab CI/CD(持续集成/持续部署)流水线是GitLab平台提供的一项强大功能,旨在通过自动化构建、测试和部署过程,提高开发团队的效率和软件发布的质量。 CI(Continuous Integration):持续…

【驱动篇】龙芯LS2K0300之spi设备驱动

实验介绍 GC9A01是一款小巧(1.28寸)、彩色(分辨率为 240 * 240 RGB)圆形TFT屏幕,它采用4线 SPI的控制方式,电源供电电压为3.3V,有7个控制引脚;本次实验将使用它来验证龙芯SOC的SPI通…

从汇编层看64位程序运行——程序中的栈(Stack)结构及其产生的历史原因

大纲 传统栈程序栈X86体系栈反向的原因参考资料 如果要讲程序在系统层的运行,一个绕不开的名词就是“栈”。所以深入理解“栈”是这个系列重要的基础。本文也将深入浅出,只讲明白程序运行中使用的栈是什么。 传统栈 有计算机基础的同学都知道栈的特点&…

开源浏览器引擎对比与适用场景:WebKit、Chrome、Gecko

WebKit与Chrome的Blink引擎对比 起源与关系: WebKit最初由苹果公司开发,用于Safari浏览器。后来,WebKit逐渐成为一个独立的开源项目,被多个浏览器厂商采用。Blink是Google基于WebKit项目分支出来的一个浏览器引擎,用于…

实现Android夜间模式主题:从入门到精通

实现Android夜间模式主题:从入门到精通 随着用户对夜间模式的需求越来越高,Android开发者需要掌握如何在应用中实现夜间模式。本文将详细介绍在Android中实现夜间模式的步骤,包括配置、实现、以及一些最佳实践,帮助开发者创建更具吸引力和用户友好的应用。 夜间模式的优势…

文献翻译与阅读《Integration Approaches for Heterogeneous Big Data: A Survey》

CYBERNETICS AND INFORMATION TECHNOLOGIES’24 论文原文下载地址:原文下载 目录 1 引言 2 大数据概述 3 大数据的异构性 4 讨论整合方法 4.1 大数据仓库(BDW) 4.2 大数据联盟(BDF) 5 DW 和 DF 方法的比较、分…

逻辑回归中的损失函数

目录 一、损失函数介绍:二、简化上述损失函数: 一、损失函数介绍: 与回归问题成本函数不同的是,逻辑回归模型(解决分类问题)的成本函数在获得损失J的时候不再用真实值y与预测值y^的差值计算损失&#xff0…

adminPage-vue3依赖FormPage说明文档,表单页快速开发,使用思路及范例(Ⅱ)formConfig基础配置项

adminPage-vue3依赖FormPage说明文档,表单页快速开发,使用思路及范例(Ⅱ)formConfig配置项 属性: formConfig(表单项设置)keylabelnoLabeldefaultValuebindchildSlottypeString类型数据(除 time…

探索GitHub上的两个革命性开源项目

在数字世界中,总有一些项目能够以其创新性和实用性脱颖而出,吸引全球开发者的目光。今天,我们将深入探索GitHub上的两个令人惊叹的开源项目:Comic Translate和GPTPDF,它们不仅改变了我们处理信息的方式,还极…

为什么说https访问是网站的标配

在互联网时代,数据安全和隐私保护成为了不可忽视的重要议题。随着网络攻击、数据泄露等事件频发,用户对在线活动的安全性要求越来越高。HTTPS协议作为HTTP协议的加密版本,已经成为现代网站的标配,其重要性和必要性不言而喻。下面从…

【数据结构】初探数据结构面纱:栈和队列全面剖析

【数据结构】初探数据结构面纱:栈和队列全面剖析 🔥个人主页:大白的编程日记 🔥专栏:数据结构 文章目录 【数据结构】初探数据结构面纱:栈和队列全面剖析前言一.栈1.1栈的概念及结构1.2栈的结构选择1.3栈的…

Xilinx FPGA:vivado fpga与EEPROM的IIC通信,串口显示数据,含使用debug教程

一、实验要求 实现FPGA与EEPROM的通信,要求FPGA对EEPROM实现先“写”后“读”,读出的值给uart发送端并显示到电脑上,按下按键1让fpga对EEPROM写入数据;按下按键2让fpga读出对EEPROM写入过的数据。 二、信号流向图 三、程序设计 …

Spring-Spring、IoC、DI、注解开发

1、Spring是什么 Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器(框架)。 Spring整体架构 Spring优点: Spring属于低侵入设计。IOC将对象之间的依赖关系交给Spring,降低组件之间的耦合,实现各个层之间的解耦,让我们更专注于业务…

Day1每日编程题日记:数字统计、两个数组的交集、点击消除

前言:该篇用于记录自看。曾回看昨天的做题代码,竟然会觉得陌生,这竟然是我写的,细细读了一下,原来我当时是这么想的。因此我觉得记代码没有实际用处,重点是领悟了思想,这样子代码就在心中&#…

怎样将aac转换mp3格式?推荐四个aac转MP3的方法

怎样将aac转换mp3格式?当需要将aac格式音频转换为MP3格式时,有几种方法可以轻松实现这一目标。MP3是一种广泛支持的音频格式,几乎所有设备和平台都能播放MP3文件,包括各种音乐播放器、手机、平板电脑和汽车音响系统。而且它也提供…

MQTT协议网关解决方案及实施简述-天拓四方

MQTT协议网关是一个中间件,负责接收来自不同MQTT客户端的消息,并将这些消息转发到MQTT服务器;同时,也能接收来自MQTT服务器的消息,并将其转发给相应的MQTT客户端。MQTT协议网关的主要功能包括协议转换、消息过滤、安全…

YOLOv10改进 | 主干/Backbone篇 | 利用RT-DETR特征提取网络PPHGNetV2改进YOLOv10

一、本文介绍 本文给大家带来利用RT-DETR模型主干HGNet去替换YOLOv10的主干,RT-DETR是今年由百度推出的第一款实时的ViT模型,其在实时检测的领域上号称是打败了YOLO系列,其利用两个主干一个是HGNet一个是ResNet,其中HGNet就是我们…

会声会影分割音频怎么不能用 会声会影分割音频方法 会声会影视频制作教程 会声会影下载免费中文版2023

将素材中的音频分割出来,对声音部分进行单独编辑,是剪辑过程中的常用操作。会声会影视频剪辑软件在分割音频后,还可以对声音素材进行混音编辑、音频调节、添加音频滤镜等操作。有关会声会影分割音频怎么不能用,会声会影分割音频方…

加密软件|让数据传输更安全

加密软件在当今数字化时代扮演着至关重要的角色,它们通过先进的加密算法和技术,确保数据在存储、传输和分享过程中的安全性,从而保护个人隐私和企业机密。一、加密软件的基本作用数据加密:加密软件通过应用复杂的加密算法&#xf…