【ML】支持向量机(SVM)

支持向量机(support vector machines, SVM)
b站入门讲解
b站详细讲解
文档讲解

在数据点间选择一个使两类数据点之间间隔最大的超平面,这个间隔被称为最大间隔。位于最大间隔边界的数据点称为支持向量。

只有支持向量决定超平面位置,其他数据点不影响。

支持向量机(SVM)的完整算法流程可以分为以下几个步骤:

  1. 选择核函数
    • 根据数据的特性选择合适的核函数。如果数据是线性可分的,可以选择线性核;如果数据非线性,可以选择RBF核、多项式核或sigmoid核等。
  2. 构建模型
    • 初始化SVM模型,设置核函数、惩罚参数C(用于控制误分类和间隔大小之间的权衡)和其他参数(如核函数的参数)。
  3. 优化问题
    • 构建一个优化问题,目标是最大化间隔,同时允许一定的误分类(软间隔SVM)。
  4. 求解优化问题
    • 使用序列最小优化(SMO)算法、梯度下降法或其他优化技术求解上述优化问题,得到最优的权重向量。
  5. 找到支持向量
    • 在训练完成后,识别出支持向量,这些是位于最大间隔边界上的样本点。
  6. 构建决策函数
    • 使用找到的权重向量和偏置项构建决策函数

Q&A

SVM是一种什么类型的机器学习算法?
 SVM是一种监督学习算法,用于分类和回归问题。它是一种基于最大间隔原则的分类器,旨在找到能够最好地分隔数据集的超平面。

SVM的主要目标是什么?
SVM的主要目标是找到一个超平面,使得不同类别的数据点之间的间隔最大化,同时最小化分类错误。

SVM如何处理非线性可分的数据? 
SVM通过使用核技巧将数据映射到高维特征空间,从而在新的空间中找到一个可以分隔数据的超平面。这种方法允许SVM处理非线性可分的数据。

什么是支持向量? 
支持向量是指那些影响到超平面位置的训练样本。在SVM中,只有支持向量对模型的决策边界有影响,其他样本点则不影响。

SVM中的核函数是什么作用? 
核函数在SVM中用于将输入数据映射到高维空间,以便在那里可以找到一个分隔超平面。核函数允许SVM在原始特征空间中执行计算,而不需要显式地计算高维特征空间中的坐标。

常见的SVM核函数有哪些? 
常见的SVM核函数包括线性核(linear)、多项式核(poly)、径向基函数核(RBF,也称为高斯核)、和sigmoid核。

SVM中的超参数C代表什么? 
超参数C在SVM中是一个惩罚参数,用于控制误分类的宽容度。C值大意味着分类器会选择一个较小的间隔,以减少训练样本上的错误分类。C值小则意味着分类器会选择一个较大的间隔,允许更多的错误分类。

SVM中的软间隔是什么意思? 
软间隔是SVM中的一种概念,它允许一些样本不满足硬间隔的要求(即不一定要所有样本都正确分类)。软间隔通过引入一个超参数C来平衡模型的复杂度和训练错误率。

SVM和逻辑回归有什么区别? 
SVM和逻辑回归都是分类算法,但它们有不同的目标函数和决策边界。SVM尝试最大化数据点之间的间隔,而逻辑回归则直接建模分类概率。SVM的决策边界由支持向量决定,而逻辑回归的决策边界由系数确定。

SVM对于不平衡数据集如何处理? 
SVM本身不直接处理不平衡数据集。但是,可以通过调整超参数C或使用不同的权重来给不同类别的错误分类以不同的惩罚,从而间接处理不平衡问题。

SVM如何进行多分类任务? 
SVM通过一对多(one-vs-rest)或一对一(one-vs-one)的策略进行多分类。在一对多策略中,为每个类训练一个分类器,将那个类与其他类分开。在一对一策略中,为每对类训练一个分类器,最终通过投票决定最终的类别。

SVM的训练时间复杂度如何? 
SVM的训练时间复杂度取决于训练样本的数量和特征维度。对于线性SVM,时间复杂度是O(n^2)到O(n^3),其中n是样本数量。使用核函数的SVM可能更慢,因为需要计算核函数和解决一个二次规划问题。

如何选择SVM的核函数和超参数? 
选择核函数和超参数通常涉及交叉验证和网格搜索。交叉验证用于评估不同参数组合的性能,而网格搜索则是在参数空间中系统地尝试不同的参数组合。

SVM在哪些应用场景中表现较好? 
SVM在中小规模的复杂数据集上表现较好,尤其是在特征维度高和样本数量不是非常巨大的情况下。它也适用于图像识别、文本分类和生物信息学等领域。

SVM有哪些主要的变种? 
SVM的主要变种包括软间隔SVM、支持向量回归(SVR)、最小二乘SVM(LS-SVM)和多类SVM。每个变种都针对特定类型的问题或性能改进而设计。
赞赏