一文详尽之支持向量机算法!

本文详细介绍了支持向量机(SVM)的理论,包括间隔最大化、超平面概念,以及如何确定最优分离超平面。通过实例解释了线性与非线性SVM,还探讨了SVM在多分类问题上的应用。最后,展示了SVM在乳腺癌诊断数据集上的实战应用,强调了特征工程和模型选择的重要性。

 Datawhale干货 

作者:小一,Datawhale优秀学习者

寄语:本文介绍了SVM的理论,细致说明了“间隔”和“超平面”两个概念;随后,阐述了如何最大化间隔并区分了软硬间隔SVM;同时,介绍了SVC问题的应用。最后,用SVM乳腺癌诊断经典数据集,对SVM进行了深入的理解。

支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机。

SVM的的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。SVM的的学习算法就是求解凸二次规划的最优化算法。

下图为SVM的分类效果显示,可以发现,不管是线性还是非线性,SVM均表现良好。

学习框架

后台回复 SVM 可下载SVM学习框架高清导图

SVM理论

支持向量机(Support Vector Machine:SVM)的目的是用训练数据集的间隔最大化找到一个最优分离超平面。

下边用一个例子来理解下间隔和分离超平面两个概念。现在有一些人的身高和体重数据,将它们绘制成散点图,是这样的:

如果现在给你一个未知男女的身高和体重,你能分辨出性别吗?直接将已知的点划分为两部分,这个点落在哪一部分就对应相应的性别。那就可以画一条直线,直线以上是男生,直线以下是女生。

问题来了,现在这个是一个二维平面,可以画直线,如果是三维的呢?该怎么画?我们知道一维平面是点,二维平面是线,三维平面是面。

对的,那么注意,今天的第一个概念:超平面是平面的一般化:

  • 在一维的平面中,它是点

  • 在二维的平面中,它是线

  • 在三维的平面中,它是面

  • 在更高的维度中,我们称之为超平面

注意:后面的直线、平面都直接叫超平面了。

继续刚才的问题,我们刚才是通过一个分离超平面分出了男和女,这个超平面唯一吗?很明显,并不唯一,这样的超平面有若干个。

那么问题来了,既然有若干个,那肯定要最好的,这里最好的叫最优分离超平面。如何在众多分离超平面中选择一个最优分离超平面?下面这两个分离超平面,你选哪个?绿色的还是黑色的?

对,当然是黑色的,可是原理是什么?很简单,原理有两个,分别是:

  • 正确的对训练数据进行分类

  • 对未知数据也能很好的分类

黑色的分离超平面能够对训练数据很好的分类,当新增未知数据时,黑色的分离超平面泛化能力也强于绿色。深究一下,为什么黑色的要强于绿色?原理又是什么?

其实很简单:最优分离超平面其实是和两侧样本点有关,而且只和这些点有关。怎么理解这句话呢,我们看张图:

其中当间隔达到最大,两侧样本点的距离相等的超平面为最优分离超平面。注意,今天的第二个概念:对应上图,Margin对应的就是最优分离超平面的间隔,此时的间隔达到最大。

一般来说,间隔中间是无点区域,里面不会有任何点(理想状态下)。给定一个超平面,我们可以就算出这个超平面与和它最接近的数据点之间的距离。那么间隔(Margin)就是二倍的这个距离。

如果还是不理解为什么这个分离超平面就是最优分离超平面,那你在看这张图。

在这张图里面间隔MarginB小于上张图的MarginA。当出现新的未知点,MarginB分离超平面的泛化能力不如MarginA,用MarginB的分离超平面去分类,错误率大于MarginA

总结一下

支持向量机是为了通过间隔最大化找到一个最优分离超平面。在决定分离超平面的时候,只有极限位置的那两个点有用,其他点根本没有大作用,因为只要极限位置离得超平面的距离最大,就是最优的分离超平面了。 

如何确定最大化间隔

如果我们能够确定两个平行超平面,那么两个超平面之间的最大距离就是最大化间隔。看个图你就都明白了:

左右两个平行超平面将数据完美的分开,我们只需要计算上述两个平行超平面的距离即可。所以,我们找到最大化间隔:

  • 找到两个平行超平面,可以划分数据集并且两平面之间没有数据点

  • 最大化上述两个超平面

1. 确定两个平行超平面

怎么确定两个平行超平面?我们知道一条直线的数学方程是:y-ax+b=0,而超平面会被定义成类似的形式:

推广到n维空间,则超平面方程中的w、x分别为:

如何确保两超平面之间没有数据点?我们的目的是通过两个平行超平面对数据进行分类,那我们可以这样定义两个超平面。

对于每一个向量xi:满足:

属于类别

或者

参考资源链接:[CNN-SVM-GA图像分类系统设计与实现详解](https://wenku.youkuaiyun.com/doc/2xvhypdh2g?utm_source=wenku_answer2doc_content) 针对您的问题,我们推荐您参考这篇详尽的学术论文:《CNN-SVM-GA图像分类系统设计与实现详解》。在这篇论文中,研究者展示了如何结合深度学习和遗传算法来优化SVM参数,从而提高图像分类任务的准确性。 首先,使用卷积神经网络提取图像特征向量。在数据预处理阶段,您需要对CIFAR-10数据集进行归一化处理,并划分成训练集和测试集。接着,利用CNN模型(在MacBookPro上使用PyCharm进行代码编写和调试)进行特征提取,并使用PCA进行特征降维以减少SVM的计算量。 在参数优化阶段,遗传算法用于优化SVM的参数g和c。具体实施步骤如下: 1. 初始化一个包含不同参数组合的SVM模型的种群。每个个体代表了一组具体的参数值(g, c)。 2. 计算种群中每个个体的适应度,这通常基于分类的准确性或交叉验证的分数。 3. 根据适应度选择较优的个体进行繁殖,这可以通过轮盘赌选择或锦标赛选择实现。 4. 通过交叉和变异操作产生新的个体,以增加种群的多样性。 5. 使用新生成的个体替换当前种群中表现不佳的个体。 6. 重复步骤2到步骤5,直到满足终止条件(如达到最大迭代次数或适应度阈值)。 最终,选择适应度最高的个体作为最优参数,应用于SVM模型中进行图像分类。 通过这种方法,您可以有效地优化SVM的参数,提升分类准确率。如果您希望深入学习CNN和SVM在图像分类中的应用,以及遗传算法在优化问题中的具体运用,建议您查阅《CNN-SVM-GA图像分类系统设计与实现详解》一文。这篇论文不仅提供了理论分析,还包括了详细的代码实现,是您深入理解和实践CNN-SVM-GA系统的重要资源。 参考资源链接:[CNN-SVM-GA图像分类系统设计与实现详解](https://wenku.youkuaiyun.com/doc/2xvhypdh2g?utm_source=wenku_answer2doc_content)
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值