支持向量机

支持向量机(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

相关推荐
强哥之神8 分钟前
Nexa AI发布OmniAudio-2.6B:一款快速的音频语言模型,专为边缘部署设计
人工智能·深度学习·机器学习·语言模型·自然语言处理·音视频·openai
18号房客12 分钟前
一个简单的深度学习模型例程,使用Keras(基于TensorFlow)构建一个卷积神经网络(CNN)来分类MNIST手写数字数据集。
人工智能·深度学习·机器学习·生成对抗网络·语言模型·自然语言处理·tensorflow
DARLING Zero two♡16 分钟前
【优选算法】Pointer-Slice:双指针的算法切片(下)
java·数据结构·c++·算法·leetcode
数据分析能量站20 分钟前
神经网络-LeNet
人工智能·深度学习·神经网络·机器学习
游是水里的游1 小时前
【算法day19】回溯:分割与子集问题
算法
不想当程序猿_1 小时前
【蓝桥杯每日一题】分糖果——DFS
c++·算法·蓝桥杯·深度优先
南城花随雪。1 小时前
单片机:实现FFT快速傅里叶变换算法(附带源码)
单片机·嵌入式硬件·算法
dundunmm2 小时前
机器学习之scikit-learn(简称 sklearn)
python·算法·机器学习·scikit-learn·sklearn·分类算法
古希腊掌管学习的神2 小时前
[机器学习]sklearn入门指南(1)
人工智能·python·算法·机器学习·sklearn
波音彬要多做2 小时前
41 stack类与queue类
开发语言·数据结构·c++·学习·算法