【深度学习入门_机器学习理论】支持向量机(SVM)

本部分主要为机器学习理论入门_支持向量机(support vector machines, SVM),书籍参考 " 统计学习方法(第二版)"。

学习目标: 理解决策边界、支持向量、决策/正/负超平面方程式、损失成本、软/硬间隔、核技巧升维转换。

工作之余有时间,继续填坑...

一、支持向量机(SVM)定义

支持向量机(Support Vector Machine,SVM)是一种用于分类和回归的监督学习算法,特别适用于分类问题。它的核心思想是找到一个最优超平面,将不同类别的数据分开,并最大化类别之间的边界(即"间隔")。对于线性可分的数据,SVM通过寻找一个超平面来实现分类;对于线性不可分的数据,SVM通过核函数将数据映射到高维空间,使其在高维空间中线性可分。

一般的来说,当数据集线性可分时,存在多个能够正确分类的超平面。

对比一下感知机算法:

  • 感知机:利用误分类最小的策略,解有无穷多个,不唯一。

  • 支持向量机:利用间隔最大化策略,解唯一。

支持向量机主要包含以下三大类:

  • 线性可分支持向量机:针对数据线性可分,通过硬间隔最大化来学习
  • 线性支持向量机:针对数据近似线性可分(含噪),通过软间隔最大化来学习
  • 非线性支持向量机:针对数据线性不可分,通过核技巧及软间隔最大化来学习

二、支持向量机定义

2.1 超平面

说白了,就是所要求的解平面,也就是能够分隔数据的解集合。

超平面是分割输入变量空间的线。在SVM中,选择超平面以最佳地将输入变量空间中的点与它们的类(0级或1级)分开。在二维中,您可以将其视为一条线,并假设我们的所有输入点都可以被这条线完全分开。SVM学习算法找到导致超平面最好地分离类的系数。

其定义为:在n维空间中,超平面是一个n-1维的子空间,用于分隔数据。对于新的、未知的样本,SVM可以根据它们与超平面的相对位置来判断其所属类别。

超平面方程为:

其中w是权重,b是截距,训练数据就是训练得到权重和截距。

对于二维空间来说,其就是一条直线,如下图所示:

根据样本,可以分为正/负超平面,如下图所示。

2.2 间隔

超平面与最近数据点之间的距离就是间距。SVM的目标就是最大化这个间隔,如下图:

当然了,可能会存在一些误差样本,这个时候就需要给处理掉,那么不去掉误差样本的数据间隔就是软间隔,如下图所示:

去掉误差样本的数据间隔就是硬间隔

2.3 间隔最大化(Margin Maximization)

核心思想:SVM的目标是找到一个超平面,使得该平面到最近样本点(支持向量)的距离最大。这种间隔最大化策略旨在提高模型的鲁棒性,减少过拟合风险。

2.4 核函数

当数据线性可分时,SVM能够直接在原始特征空间中寻找一个最优的超平面,这个超平面能够将不同类别的数据分隔开来,并且保证不同类别之间的间隔最大化;若非线性可分,传统的线性超平面无法有效地区分不同类别的数据。为了解决这个问题,SVM引入了核函数的概念,其实和齐次坐标的作用差不多。

用于将数据映射到高维空间的函数,常见的核函数包括线性核、多项式核和径向基函数(RBF)核。

其中,核技巧就是对不可分数据进行升维度,然后来求解超平面的过程。

三、通过优化求解SVM

3.1 拉格朗日乘数法

3.2 KKT条件

在优化理论中,KKT(Karush-Kuhn-Tucker)条件是一组必须满足的条件,以便一个点成为凸优化问题的局部最小值,特别是对于有不等式约束的问题。

3.3 优化求解



四、SVM的优缺点

优点:

  • 可以解决高维问题,即大型特征空间;
  • 解决小样本下机器学习问题;
  • 能够处理非线性特征的相互作用;
  • 无局部极小值问题;(相对于神经网络等算法)
  • 无需依赖整个数据;
  • 泛化能力比较强;

缺点:

  • 当观测样本很多时,效率并不是很高;
  • 对非线性问题没有通用解决方案,有时候很难找到一个合适的核函数;
  • 对于核函数的高维映射解释力不强,尤其是径向基函数;
  • 常规SVM只支持二分类;
  • 对缺失数据敏感;
相关推荐
IT古董29 分钟前
【漫话机器学习系列】149.ROC 曲线(Receiver Operating Characteristic Curve)
人工智能·机器学习
hnmpf1 小时前
基于peft的lora进行模型qwen0.5的微调、合并、转换为.gguf
人工智能·深度学习
CH3_CH2_CHO1 小时前
【机器学习】算法分类
算法·机器学习·强化学习·无监督学习·半监督学习·有监督学习
明明真系叻1 小时前
2025.3.23机器学习笔记:文献阅读
人工智能·笔记·机器学习
C66668881 小时前
CogColorMatchTool工具
机器学习·计算机视觉·视觉检测
前端阿森纳2 小时前
使用 Conda + Pip 创建 Python 开发环境的完整教程
人工智能·python·机器学习
练习AI两年半3 小时前
机器学习——KNN超参数
人工智能·深度学习·机器学习
练习AI两年半3 小时前
机器学习——KNN数据集划分
人工智能·机器学习
朱剑君4 小时前
算法系列——有监督学习——5.支持向量机(核方法)
学习·算法·支持向量机