支持向量机

支持向量机(SVMs)是一种用于分类、回归和异常检测的有监督学习方法。

支持向量机的优点有:

  1. 在高维空间里也非常有效 对于数据维度远高于数据样本量的情况也有效
  2. 在决策函数中使用训练集的子集(也称为支持向量),因此也是内存高效利用的。
  3. 通用性:可以为决策函数指定不同的核函数。已经提供了通用核函数,但也可以指定自定义核函数。

支持向量机的缺点包括:

如果特征数量远远大于样本数,则在选择核函数和正则化项时要避免过度拟合。

SVMs不直接提供概率估计, 这些计算使用昂贵的五倍交叉验证(见分数和概率)。

how

原理(简述)

比如红色表示"吸烟",黄色表示"不吸烟",那么如何找到一个平面最大化的将两类群体分开。
如上图所示,分开有很多种方式,左侧也可以分开,右侧也能分开。但明显的,右侧会"分的更开",因而如何寻找到这样的一个空间平面,让标签项各类别最为明显的分开,此算法过程即为支持向量机。

将点分开时,离平面最近的点要尽可能的远,比如右侧时A点和B点离平面最近,那么算法需要想办法让该类点尽可能地远离平面,这样就称为"分的更好"。左侧时挨着平面最近的两个点离平面太近,所以右侧的分类更好。

与此同时,理论上可以找到'空间平面',将点彻底完全地分开,但此种情况并没有用,因为它只是数学上彻底地分开,但对真实数据业务并没有帮助,与此同时,数学计算上如果尽可能地让点分开,那么很容易出现'过拟合'现象,即训练数据时模型构建完美,但测试数据上的表现糟糕,因而通过可对此类情况进行惩罚,即设置'误差项惩罚系数值'。

另外,为构建出空间平面,还需要使用到非线性函数,SVM模型时称'核函数',其用用于将特征从低维(比如二维XY轴平面)向高维空间转换,并且对其进行一定参数设置,以寻找较优模型。

核心概念

最大间隔超平面:

SVM的目标是找到能够最大化训练样本间隔的超平面。间隔被定义为到最近训练样本点的距离,这些点被称为支持向量。这种策略的优势在于它提供了一种防止模型过拟合的方法,从而提高了泛化能力。

核技巧:

在实际应用中,许多数据集不是线性可分的,这就需要使用核技巧。核技巧通过一个非线性映射将原始特征空间映射到一个更高维的空间,在这个新空间中,数据更有可能是线性可分的。常用的核函数包括线性核、多项式核、径向基函数(RBF)核等。

软间隔与正则化:

在存在噪声或异常点的数据集中,强制完全分离可能不是最佳选择,因此引入了软间隔的概念。软间隔允许某些数据点违反间隔规则,从而在保持间隔宽度和减少分类误差之间达到平衡。这是通过调整正则化参数C来实现的,C值较小允许更多的违规点,提高模型的灵活性,而C较大则强制更严格的分离,增加模型的约束。

优化问题:

SVM的训练过程本质上是解决一个凸优化问题,目标是最小化一个包含正则化项的损失函数。这通常通过拉格朗日乘数法和序列最小优化(SMO)算法来实现,后者是解决SVM优化问题的一种有效方法。

多类分类:

原始的SVM是一个二分类器。对于多类分类任务,可以采用"一对一"(OvO)或"一对多"(OvR)策略将多类问题分解为多个二分类问题来处理。

where

  1. 图像分类:在ImageNet竞赛中,虽然深度学习模型逐渐占据主导地位,但SVM在早期也取得了显著的成绩。例如,通过结合SIFT等特征提取方法和SVM分类器,可以实现高效的图像分类。
  2. 金融欺诈检测:多家银行和金融机构采用SVM模型进行欺诈检测。这些模型通过分析交易数据、用户行为等特征,能够及时发现并阻止潜在的欺诈行为。【应该属于异常点检测】
  3. 医疗诊断:在医疗领域,SVM被用于多种疾病的诊断。例如,通过分析患者的医疗影像数据,SVM可以辅助医生进行肺癌、乳腺癌等疾病的早期诊断。

需要注意的是,随着技术的不断发展,SVM的应用场景也在不断拓展和深化。同时,SVM也常与其他机器学习算法结合使用,以提高模型的性能和泛化能力。

参考

支持度向量机与深度学习的融合:未来趋势与实践\] https://blog.csdn.net/universsky2015/article/details/137304073 \[sklearn支持向量机说明\] http://scikit-learn.org.cn/view/83.html \[支持向量机通俗导论(理解SVM的三层境界)\] https://blog.csdn.net/v_july_v/article/details/7624837

相关推荐
ZPC8210几秒前
PPO 在ROS2 中训练与推理
人工智能·算法·机器人
IronMurphy1 分钟前
【算法二十五】105. 从前序与中序遍历序列构造二叉树 236. 二叉树的最近公共祖先
java·数据结构·算法
2401_853576501 分钟前
C++中的组合模式变体
开发语言·c++·算法
像污秽一样21 分钟前
算法设计与分析-习题8.2
数据结构·算法·排序算法·dfs·化简
玛卡巴卡ldf21 分钟前
【LeetCode 手撕算法】(子串) 560-和为 K 的子数组
java·数据结构·算法·leetcode
CoovallyAIHub31 分钟前
BMW GenAI4Q:每57秒下线一辆车,AI如何为每辆车定制专属质检清单
数据库·算法·架构
不想看见40433 分钟前
Rotate Image数组--力扣101算法题解笔记
数据结构·算法
仰泳的熊猫40 分钟前
题目 2304: 蓝桥杯2019年第十届省赛真题-特别数的和
数据结构·c++·算法·蓝桥杯
靠沿1 小时前
【优选算法】专题十五——BFS解决FloodFill算法
算法·宽度优先
2401_849644851 小时前
C++代码重构实战
开发语言·c++·算法