机器学习 | 进阶(二)—— 支持向量机

支持向量机(support vector machines, SVM)是机器学习的一种模型,被用在二分类任务。SVM的求解主要借助凸优化理论,因为SVM的基本型可以通过一些简单的变换,转换成凸优化问题的形式。

1.间隔与支持向量

相关概念

支持向量:每个样本点都有对应的特征向量,距离超平面最近的是支持向量。

间隔:两个不同样本点的支持向量到超平面的距离

在机器学习和统计学中,我们通常会使用超平面来划分数据集中的样本空间,从而进行分类。超平面可以有很多个,但是并非所有的超平面都具有好的泛化能力。

当我们说一个超平面具有"受扰动最小"或者"最具有健壮性"的时候,是指这个超平面在划分样本空间时,尽可能地远离样本点,而不是紧贴着一些样本点。这种超平面通常能够更好地泛化到新的数据点,因为它们不是过度拟合训练数据,而是试图找到一个能够更好地捕捉数据分布的决策边界。

2.对偶问题

SVM基本型通过求解对偶问题来得到模型参数。对偶问题可以通过以下步骤求解:

Step 1. 对每条约束使用拉格朗日乘子。在SVM的对偶问题中,每个约束对应一个拉格朗日乘子。

Step 2. 令拉格朗日函数对模型参数的偏导为0。这是求解对偶问题的必要步骤,因为对偶问题的解是通过最小化拉格朗日函数的值来得到的。

Step 3. 将求出的结果回代入拉格朗日函数。这一步通常用于验证解的正确性,并且可以用于计算模型的预测值。

在求解对偶问题的过程中,需要满足KKT(Karush-Kuhn-Tucker)条件。KKT条件是一组用于判断最优化问题解的必要条件。在SVM的对偶问题中,KKT条件可以确保得到的解是全局最优解,并且满足一定的稀疏性。也就是说,训练完成后,模型只与支持向量有关,而与其他样本点无关。这种稀疏性使得模型更加易于解释和泛化。

3.核函数

3.1 问题引入

有时候,对于分类问题,我们可以采用线性分类:

然而,它不是对所有分类问题都有效,比如:

这时采用多项式结合对数几率回归看似可以解决这样的问题,但随着维度增加,计算量也会增加,因此需要换个策略------使用核函数。
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> k ( x i , x j ) = ϕ ( x i ) T ϕ ( x j ) \mathcal{k}\left(\mathcal{x}\mathcal{i},\mathcal{x}\mathcal{j}\right)={\phi(\mathcal{x}\mathcal{i})}^T\phi(\mathcal{x}\mathcal{j}) </math>k(xi,xj)=ϕ(xi)Tϕ(xj)

它具有以下特点:

  • 绕过显式考虑特征映射
  • 缓解计算高维内积的困难
  • 直接在原始的特征空间计算

3.2 Mercer定理

Mercer定理:若一个对称函数对于任意数据所对应的核矩阵半正定,则它就能作为核函数来使用。这是由于以下原因:

  • 核矩阵的性质:对于核函数,它需要满足Mercer条件,即对于所有的输入向量 <math xmlns="http://www.w3.org/1998/Math/MathML"> x x </math>x和 <math xmlns="http://www.w3.org/1998/Math/MathML"> y y </math>y,它们的内积空间需要是半正定的。如果对称函数的核矩阵半正定,那么它就满足了这个条件。
  • 数据的映射:核函数的主要作用是将原始数据映射到高维空间。对称函数的核矩阵半正定意味着这个对称函数可以将原始数据映射到一个半正定的特征空间,使得数据在这个空间中更容易划分或分析。
  • 算法的稳定性:使用对称函数作为核函数可以保证算法的稳定性。这是因为对称函数可以保证数据在映射后的特征空间中仍然保持对称性,从而避免了一些因为数据不对称而导致的计算问题。

此外,任何一个核函数都隐式地定义了一个再生核希尔伯特空间 (Reproducing kernel Hilbert space, RKHS),因为核函数可以用来定义内积和范数,从而构成一个RKHS。

在RKHS中,核函数 <math xmlns="http://www.w3.org/1998/Math/MathML"> k ( x , y ) k(x, y) </math>k(x,y)扮演了再生核的角色,它定义了内积 <math xmlns="http://www.w3.org/1998/Math/MathML"> x x </math>x与 <math xmlns="http://www.w3.org/1998/Math/MathML"> y y </math>y之间的内积,以及由这些向量形成的向量空间的结构。具体来说,对于任意两个输入向量 <math xmlns="http://www.w3.org/1998/Math/MathML"> x x </math>x和 <math xmlns="http://www.w3.org/1998/Math/MathML"> y y </math>y,核函数 <math xmlns="http://www.w3.org/1998/Math/MathML"> k ( x , y ) k(x, y) </math>k(x,y)计算它们之间的内积。这个内积可以看作是 <math xmlns="http://www.w3.org/1998/Math/MathML"> x x </math>x和 <math xmlns="http://www.w3.org/1998/Math/MathML"> y y </math>y在某种意义上的相似度或相关性。 向量的范数是由核函数和内积定义的。给定一个向量 <math xmlns="http://www.w3.org/1998/Math/MathML"> x x </math>x和一个正数 <math xmlns="http://www.w3.org/1998/Math/MathML"> β β </math>β,范数 <math xmlns="http://www.w3.org/1998/Math/MathML"> ∣ ∣ x ∣ ∣ β ||x||β </math>∣∣x∣∣β是由以下公式定义的:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> ∣ ∣ x ∣ ∣ β = s q r t [ β ] ( Σ [ i = 1 , n ] ∣ α [ i ] ∣ β ) ||x||β = sqrt[β] (Σ[i=1,n] |α[i]|β) </math>∣∣x∣∣β=sqrt[β](Σ[i=1,n]∣α[i]∣β)

其中 <math xmlns="http://www.w3.org/1998/Math/MathML"> α [ i ] α[i] </math>α[i]是 <math xmlns="http://www.w3.org/1998/Math/MathML"> x x </math>x的展开系数。这个范数可以看作是 <math xmlns="http://www.w3.org/1998/Math/MathML"> x x </math>x在某种意义上的重要性或影响力的度量。

通过核函数定义的内积和范数,我们可以构建一个希尔伯特空间。在这个空间中,每个向量 <math xmlns="http://www.w3.org/1998/Math/MathML"> x x </math>x都对应一个函数 <math xmlns="http://www.w3.org/1998/Math/MathML"> f ( x ) f(x) </math>f(x),其中 <math xmlns="http://www.w3.org/1998/Math/MathML"> f ( x ) f(x) </math>f(x)是通过核函数 <math xmlns="http://www.w3.org/1998/Math/MathML"> k ( x , y ) k(x, y) </math>k(x,y)和内积定义的。这个函数 <math xmlns="http://www.w3.org/1998/Math/MathML"> f ( x ) f(x) </math>f(x)可以看作是向量 <math xmlns="http://www.w3.org/1998/Math/MathML"> x x </math>x的泛函表示。

所以说,任何一个核函数都隐式地定义了一个RKHS,这个空间可以用来表示输入向量的泛函表示,并计算它们之间的内积和范数。

思考:核函数的选择对SVM至关重要,那么给定一个代表所有可能的核函数的集合,为什么说找到唯一理想核函数是不太可能的?

核函数的选择取决于数据集的特性,不同的核函数会对不同的数据集产生不同的效果。所以对于一个给定的数据集,很难确定哪个核函数是最理想的。除此之外,不同的核函数之间存在权衡关系,即一个核函数可能在某些方面表现得更好,而在其他方面表现得较差。因此,即使有一个代表所有可能的核函数的集合,也很难确定哪个核函数是最理想的。

4.软间隔与正则化

SVM的软间隔与正则化是指通过在目标函数中增加一个惩罚项来实现的,以解决硬间隔在处理复杂数据时的问题。

4.1 软间隔

在硬间隔SVM中,所有样本必须满足约束条件,即所有样本的预测值必须正确分类。然而,这种约束对于一些复杂数据可能过于严格,容易导致过拟合。软间隔SVM允许某些样本不满足约束条件,即允许支持向量机在一些样本上出错。软间隔SVM通过在目标函数中增加一个惩罚项来平衡分类准确性和样本数量。

4.2 正则化

正则化是一种技术,用于控制模型复杂度和提高模型的泛化能力。在软间隔SVM中,正则化项用于控制模型复杂度,避免过拟合。正则化参数C是一个常数,用于平衡正则化项和分类错误项之间的权衡。当C为无穷大时,会迫使所有样本满足约束条件。

4.3 替代函数

统计学理论分析表明,0/1损失函数是SVM优化模型理想的损失函数。然而,0/1损失函数是数学上很难处理的非凸非连续函数,数学性质不好,因此常采用其它函数来代替,故称为替代函数。

替代损失函数具有良好的数学性质,在最优化时原来的目标也在最优化。这些替代函数包括指数函数、对数函数、hinge函数等。求解替代函数得到的解是否仍是原问题的解,理论上称为替代损失的一致性 (Consistence) 问题。

5.支持向量回归

支持向量回归(Support Vector Regression,SVR)是SVM的回归分析版本。与SVM类似,SVR也是通过使用核函数将输入空间映射到一个高维的特征空间,并在这个特征空间中构建一个最优的超平面来拟合训练数据。SVR的目标是最小化预测值与真实值之间的差距(通常使用平方误差损失函数),并保持间隔最大(即控制模型的复杂度)。

支持向量回归的特点包括:

  • 非线性建模能力:通过使用核函数,支持向量回归可以将数据从原始空间映射到一个高维特征空间,从而实现对非线性数据的建模。
  • 控制模型复杂度的超参数:支持向量回归有两个重要的超参数,分别是核函数和正则化参数。这两个参数可以控制模型的复杂度,以避免过拟合或欠拟合。
  • 稀疏解:支持向量回归的解具有稀疏性,即只有少数支持向量(训练数据)被选中用于构建回归模型,这使得模型更加简洁和易于解释。
  • 对噪声和异常值的健壮性:由于支持向量回归采用间隔最大化原则,因此对噪声和异常值的健壮性较强。
  • 用于分类问题:通过构建最大间隔超平面,支持向量回归可以用于分类问题。

在SVR中, <math xmlns="http://www.w3.org/1998/Math/MathML"> ϵ − \epsilon- </math>ϵ−不敏感损失函数被用作误差项,来衡量预测值与真实值之间的差异。当预测值与真实值之间的差异小于或等于 <math xmlns="http://www.w3.org/1998/Math/MathML"> ϵ \epsilon </math>ϵ时,该损失函数的值为0;而当差异大于 <math xmlns="http://www.w3.org/1998/Math/MathML"> ϵ \epsilon </math>ϵ时,该损失函数的值与差异的平方成正比。通过引入 <math xmlns="http://www.w3.org/1998/Math/MathML"> ϵ − \epsilon- </math>ϵ−不敏感损失函数,SVR在训练过程中尝试最小化预测值与真实值之间的差距,同时保持间隔最大。

<math xmlns="http://www.w3.org/1998/Math/MathML"> ϵ − \epsilon- </math>ϵ−不敏感损失函数的一个重要特性是,当数据点位于间隔带内时,损失函数的值为0,这使得模型不会对这部分数据点进行过度拟合。同时,当数据点位于间隔带外时,损失函数开始发挥作用,惩罚那些远离间隔带的预测值。这种特性使得SVR对于噪声数据和异常值具有较好的健壮性。
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> ℓ ϵ ( z ) { 0 , i f ∣ z ∣ ≤ ϵ ; ∣ z ∣ − ϵ , o t h e r w i s e . \ell_\epsilon(\mathcal{z}) \begin{cases} 0, & if |z|≤ϵ; \\ |z|-ϵ, & otherwise. \end{cases} </math>ℓϵ(z){0,∣z∣−ϵ,if∣z∣≤ϵ;otherwise.

比如:对于2-不敏感损失,当自变量取值为10时,损失为8。

总结

在SVM中,原问题是通过求解一个二次优化问题来寻找一个最优的分类超平面,而对偶问题则是通过求解一个线性规划问题来找到一个最优的拉格朗日乘子。对偶问题的解可以直接用于求解原问题,并且可以避免求解一个复杂的二次优化问题。核函数是SVM中用于计算样本之间相似度或相关性的函数。通过将输入空间映射到一个高维的特征空间,核函数可以使得SVM能够更好地处理复杂的非线性分类问题。软间隔SVM允许支持向量机在一些样本上出错。在软间隔SVM中,正则化项用于控制模型复杂度,避免过拟合。通过将 <math xmlns="http://www.w3.org/1998/Math/MathML"> ϵ − \epsilon- </math>ϵ−不敏感损失函数引入SVR,可以有效地解决回归问题中的间隔最大化和预测误差最小化之间的平衡问题。

参考资料

[1] 周志华《机器学习》,第六章.

[2]【吃瓜教程】《机器学习公式详解》(南瓜书)与西瓜书公式推导直播合集

www.bilibili.com/video/BV1Mh...

相关推荐
余炜yw8 分钟前
【LSTM实战】跨越千年,赋诗成文:用LSTM重现唐诗的韵律与情感
人工智能·rnn·深度学习
莫叫石榴姐24 分钟前
数据科学与SQL:组距分组分析 | 区间分布问题
大数据·人工智能·sql·深度学习·算法·机器学习·数据挖掘
如若1231 小时前
利用 `OpenCV` 和 `Matplotlib` 库进行图像读取、颜色空间转换、掩膜创建、颜色替换
人工智能·opencv·matplotlib
YRr YRr1 小时前
深度学习:神经网络中的损失函数的使用
人工智能·深度学习·神经网络
ChaseDreamRunner1 小时前
迁移学习理论与应用
人工智能·机器学习·迁移学习
Guofu_Liao1 小时前
大语言模型---梯度的简单介绍;梯度的定义;梯度计算的方法
人工智能·语言模型·矩阵·llama
我爱学Python!1 小时前
大语言模型与图结构的融合: 推荐系统中的新兴范式
人工智能·语言模型·自然语言处理·langchain·llm·大语言模型·推荐系统
果冻人工智能1 小时前
OpenAI 是怎么“压力测试”大型语言模型的?
人工智能·语言模型·压力测试
日出等日落1 小时前
Windows电脑本地部署llamafile并接入Qwen大语言模型远程AI对话实战
人工智能·语言模型·自然语言处理
麦麦大数据1 小时前
Python棉花病虫害图谱系统CNN识别+AI问答知识neo4j vue+flask深度学习神经网络可视化
人工智能·python·深度学习