为了更好的理解支持向量机模型,本文我们延伸学习和理解一下和支持向量机相关的一些概念,这些概念都是偏理论和数学的知识,比较抽象和复杂,而且需要一定的高等数学知识。大家可以先明白其所包含的意义,然后逐步深入理解,未必一步到位,但可以循序渐进、逐步攻克。
一、SMO(Sequential Minimal Optimization)高效优化算法
支持向量机的目标函数可以通过 SMO 等优化方法得到全局最优解,因此比其他分类器的学习效率更高。此外,支持向量机的决策函数只依赖于支持向量, 与训练样本总数无关,分类速度比较快。
SMO(Sequential Minimal Optimization)是一种专门用于求解支持向量机对偶问题的高效优化算法。其核心思想是将原本需要同时优化成千上万个拉格朗日乘子的大规模二次规划问题,分解成最小的子问题,每次只优化两个乘子。
1. SMO的基本思想
-
对偶问题的结构
支持向量机的对偶问题是一个凸二次规划问题,其形式为:约束条件为:
-
最小化子问题
SMO方法的关键在于:一次只选择两个拉格朗日乘子进行优化。为什么两个?因为两个变量可以满足平衡约束通过适当的调整。对于这两个变量,其余乘子保持不变,这样整个问题就被简化为一个二元问题,而这个二元问题可以通过解析方法求得精确解。
2. SMO的工作流程
-
选择两个变量:
SMO算法从所有乘子中选择一对,通常依据违反KKT条件的程度来选择,以便能有较大更新。 -
求解二元子问题:
-
更新乘子与参数:
得到最优解后,更新这两个乘子的值,并更新相应的决策函数参数(如 w 和 b),然后继续选择下一对变量进行优化。 -
迭代收敛:
重复上述步骤,直到所有乘子满足KKT条件,此时对偶问题达到最优解,SVM的参数也就确定了。
3. SMO的优势与特点
-
计算效率高:
每次仅优化两个变量,避免了直接求解大规模二次规划问题的高计算成本。 -
简单易实现:
每个子问题都可以解析求解,无需调用通用的二次规划求解器,从而在内存和计算资源上更节省,适合大规模数据集。 -
全局最优保证:
对于支持向量机的凸优化问题,SMO能保证收敛到全局最优解(在适当的条件下)。 -
扩展性:
SMO方法可以与核技巧结合,应用于非线性分类问题,具有很强的灵活性和实用性。
4. 举例说明
假设我们有一个小型二分类问题,数据集由4个样本组成,标签为 ±1。支持向量机对偶问题涉及4个乘子,但 SMO 每次只选其中两个进行优化。
-
初始状态:
所有乘子 α1,α2,α3,α4 初始设为0。 -
选择变量:
发现某个乘子违反了KKT条件,于是SMO选择 α1 和 α2 作为一对进行优化。 -
求解二元问题:
在固定其他乘子的情况下,构造针对 α1 和 α2 的优化问题,并通过解析推导求出最优的 α1^* 和 α2^*。 -
更新参数:
根据新求得的乘子,更新权重向量 w 和偏置 b。
然后继续选择其他违反KKT条件的乘子对,重复这一过程。
经过若干轮迭代后,所有乘子都满足KKT条件,对偶问题达到最优,从而确定了SVM的全局最优参数。
SMO优化方法通过将支持向量机对偶问题分解成一系列仅含两个变量的子问题,并解析求解这些子问题,极大地简化了计算过程。它的优势在于高效、易实现,并能保证在凸优化问题中收敛到全局最优解。这使得SMO成为训练支持向量机时常用且成功的算法。
二、上面提到的KKT如何理解?
KKT 指的是 Karush–Kuhn–Tucker 条件,是一种在求解带有不等式约束的非线性优化问题时用到的必要条件。简单来说,KKT 条件扩展了拉格朗日乘数法,使其不仅适用于等式约束,也适用于不等式约束。满足 KKT 条件的解在一定的正则条件下(比如 Slater 条件)可以保证是局部最优解,有时甚至是全局最优解。
主要内容
-
原始问题:
考虑一个优化问题:受约束:
-
构造拉格朗日函数:
引入拉格朗日乘数 λi≥0(对于不等式约束)和 μj(对于等式约束),构造拉格朗日函数: -
KKT 条件包括:
如何理解
-
理论意义:
KKT 条件为解决带有不等式约束的优化问题提供了一组必要(在某些条件下也是充分)的最优性条件。满足 KKT 条件的点,是最优解的候选者。 -
几何直观:
在最优点,目标函数的变化方向受到了约束的制约,目标函数的梯度与约束函数的梯度在某种意义上是“平行”的。KKT 条件正是捕捉了这种平行关系。 -
在 SVM 中的应用:
在支持向量机的对偶问题求解过程中,KKT 条件保证了只有那些违反条件的点(即支持向量)对最终的决策边界有贡献,其余点的拉格朗日乘数为0,从而使得问题得以简化和高效求解。
KKT 条件是处理带不等式约束优化问题的关键工具,它将目标函数和约束条件的最优性联系起来,为证明和求解最优解提供了必要条件。在机器学习中,例如在 SVM 的优化过程中,KKT 条件起到了确保解正确性和解释支持向量的重要作用。
三、核函数
支持向量机还有一个重要的优点是可以使用核函数(Kernel Function)隐式地将样本从原始特征空间映射到更高维的空间,并解决原始特征空间中的线 性不可分问题。
(一)常见的核函数有:
-
线性核(Linear Kernel)
- 定义:
- 特点:
不进行非线性映射,适用于原始数据线性可分或特征维度非常高的情况。 - 举例:
用于文本分类问题,当数据已经在高维空间中(如TF-IDF向量),常常直接使用线性核。
- 定义:
-
多项式核(Polynomial Kernel)
- 定义:
, 其中 γ>0 是缩放参数,r 是常数,d 是多项式的次数。
- 特点:
能够捕捉数据之间的多项式关系,适用于一些非线性问题。 - 举例:
在图像分类中,如果图像特征之间存在非线性但可通过多项式关系近似描述的情况,可以尝试多项式核。
- 定义:
-
径向基函数核(Radial Basis Function, RBF Kernel)
- 定义:
, 其中 γ>0 控制高斯函数的宽度。
- 特点:
这是最常用的核函数之一,能够将数据映射到无限维空间,对非线性问题具有很强的拟合能力。 - 举例:
在手写数字识别、语音识别等任务中,经常采用RBF核处理非线性数据,使得SVM能有效区分不同类别。
- 定义:
-
Sigmoid核(也称为双曲正切核,Tanh Kernel)
- 定义:
, 其中 γ 和 r 是参数。
- 特点:
这种核函数与神经网络中的激活函数类似,适用于某些非线性关系,但在使用时较少见,因为其表现可能不如RBF稳定。 - 举例:
在某些特定的非线性分类任务中,可以尝试使用Sigmoid核来捕捉数据的复杂关系,不过一般需要仔细调参。
- 定义:
(二)举例说明
例子1:文本分类(线性核)
假设我们有大量新闻文本数据,并用TF-IDF方法将每篇新闻转换为高维向量。由于文本特征通常维度很高且线性可分性较好,直接使用线性核即可:
这种情况下,SVM将直接在高维空间中寻找一个线性决策边界,将不同类别的新闻分开。
例子2:手写数字识别(RBF核)
手写数字识别任务中,每个图像经过预处理后转换为特征向量,但数字的形状和书写风格存在较大的非线性差异。使用RBF核:
SVM可以将数据映射到一个无限维的特征空间,在该空间中,原本非线性可分的数字图像数据可能变得线性可分,从而实现高准确率的分类。
支持向量机可以使用多种核函数,包括线性核、多项式核、RBF核和Sigmoid核等。每种核函数都有其适用场景:
- 线性核适用于数据本身在高维空间中近似线性可分的情况;
- 多项式核和RBF核适用于非线性问题,其中RBF核应用最广;
- Sigmoid核则在某些情况下模拟神经网络的非线性映射。
通过选择合适的核函数,SVM能够在不同问题上实现有效分类,提升模型的表现。
四、软间隔
在支持向量机的优化问题中,约束条件比较严格.如果训练集中的样本在特 征空间中不是线性可分的,就无法找到最优解.为了能够容忍部分不满足约束的 样本,我们可以引入松弛变量(Slack Variable)𝜉,将优化问题变为
软间隔支持向量机(Soft Margin SVM)是支持向量机的一种扩展,专门用于处理那些数据集并非完全线性可分的情况。
1. 为什么需要软间隔
在理想情况下,支持向量机假设数据是线性可分的,因此可以找到一个超平面将所有样本正确分开,并且最大化两侧的间隔(margin)。但在实际应用中,数据常常存在噪声、重叠或异常值,导致数据不可能完全线性可分。为了解决这个问题,引入软间隔概念,即允许一定程度的误分类或违反间隔约束,同时在优化目标中对这种“违规”进行惩罚。
2. 软间隔的原理
软间隔 SVM 的原理主要包括:
-
引入松弛变量(Slack Variables)
为每个样本引入松弛变量 ξi≥0,它衡量了该样本违反分类约束的程度。
原始的硬间隔约束是:而软间隔中放宽为:
其中 ξi 表示样本 i 违反约束的“程度”。如果 ξi=0,说明样本满足硬间隔条件;如果 0<ξi≤1,样本仍被正确分类,但距离决策边界较近;如果 ξi>1,样本就被错误分类了。
-
优化目标的调整
3. 举例说明
例子:二维数据分类
通过这个优化,SVM 在保证大部分数据尽量正确分类的同时,尽可能地保持较大的间隔。这样,即使数据集存在噪声和重叠部分,模型仍能取得较好的泛化能力。
例如,假设在一个图像分类问题中(如区分猫和狗),部分图像由于噪声或模糊可能导致误分类。软间隔 SVM 允许这部分图像的松弛变量不为零,从而避免过分追求完美分类而导致决策边界过于贴合训练数据,从而提升模型在新图像上的表现。
软间隔支持向量机的基本原理在于:
- 引入松弛变量 ξi 来允许一定程度的约束违反;
- 通过优化目标
实现间隔最大化与误分类惩罚之间的平衡。
这种方法使得 SVM 能够应对实际中常见的非线性可分、存在噪声和异常值的情况,从而提高模型的泛化能力和鲁棒性。