【Python机器学习】支持向量机——寻找最大间隔

如何求解数据集的最佳分隔直线?如下图中:

分隔超平面的形式可以写成,要计算点A到分隔超平面的距离,就必须给出点到分隔面的法线或垂线的长度,该值为。这里的常数b类似于Logistic回归中的截距。这里的向量w和常数b一起描述了所给数据的分隔线或超平面。

分类器求解的优化问题

分类器的工作原理:输入数据给分类器会输出一个类别标签,这相当于一个类似于Sigmoid的函数在作用。下面使用类似海维赛德阶跃函数的函数为作用得到f(),其中当u<-时f(u)输出-1,反之则输出+1。

这里不用1和0的原因是+1和-1仅仅相差一个符号,方便数学上的处理

当计算数据点到分隔面的距离并确定分隔面的放置位置时,间隔通过来计算。如果数据点处于正方向(即+1类)并且离分隔超平面很远的位置时,会是一个很大的正数,同时也会是一个很大的正数。而如果数据点处于反方向(即-1类)并且离分隔超平面很远的位置时,此时由于类别标签为-1,仍然是一个很大的正数。

现在的目标就是找出分类器定义的w和b。为此,我们必须找到具有最小间隔的数据点,而这些数据点也就是前面提到过的支持向量。一旦找到具有最小间隔的数据点,我们就需要对该间隔最大化。这就可以写作:

直接求解上述问题很困难,所以将它转换成另一种更容易求解的形式。首先要做的是固定其中一个因子而最大化其他因子。如果另所有支持向量的都为1,那么就可以通过求的最大值来得到最终解。但是,并非所有数据点的都等于1,只有那些离分隔超平面最近的点得到的值才为1。而离超平面越远的点,其的值也就越大。

在上述优化问题中,给点了一些约束条件然后求最优值,因此该问题是一个带约束条件的优化问题。这里的约束条件就是>=1.0。对于这种优化问题,有一个非常著名的求解方法,即拉格朗日乘子法。通过引入拉格朗日乘子,我们就可以基于约束条件来表述原来的问题。这里的约束条件都是基于数据点的,因为我们就可以将超平面写成数据点的形式。于是,优化目标函数最后可以写成:

其约束条件为:

,和

这里有个假设:数据必须100%线性可分。我们可以通过引入所谓松弛变量,来允许有些数据点可以处于分隔面的错误一侧。这样我们的优化目标就能保持仍然不变,但是此时新的约束条件变为:

,和

这里的常数C用于控制"最大化间隔"和"保证大部分点的函数间隔小于1.0"这两个目标的权重。在优化算法的实现代码中,常数C是一个参数,因此我们就可以通过调节该参数得到不同的结果,一旦求出了所有的alpha,那么分隔超平面就可以通过这些alpha来表达。这一结论十分直接,SVM中的主要工作就是求解这些alpha。

SVM应用的一般框架

SVM的一般流程:

1、收集数据:可以使用任意方法

2、准备数据:需要数值型数据

3、分析数据:有助于可视化分隔超平面

4、训练算法:SVM的大部分时间都源自训练,该过程主要实现两个参数的调优

5、测试算法

6、使用算法:几乎所有的分类问题都可以使用SVM,SVM本身是一个二类分类器,对多类问题应用SVM需要对代码做一些修改。

相关推荐
奔跑中的小象15 分钟前
统信UOS + 天数AI卡部署SGLang服务手册
人工智能·uos·sglang·天数智芯
DevSecOps选型指南18 分钟前
中国版Mythos,为何是悬镜安全灵脉CodeAI?
人工智能·安全
Shockang28 分钟前
LangGraph 状态机实战
人工智能
lueluelue4730 分钟前
LeetCode:链表
算法·leetcode·链表
DLYSB_33 分钟前
存储运维实战:基于 Ceph Event 监听与 Python 适配器的分布式存储健康度物理声光响应架构
运维·ceph·python·报警灯
刹那芳华199240 分钟前
循环神经网络的从零开始实现(RNN)
人工智能·rnn·深度学习
阿童木写作1 小时前
跨境图片翻译工具多合一,批量图片视频字幕翻译加智能抠图
人工智能·python·音视频·语音识别
科技之门1 小时前
AI3D从建模到贴图、绑骨和动画的完整流程怎么做?V2Fun完整工作流指南
人工智能·3d·贴图
宇宙第一小趴菜1 小时前
二、机器学习的应用领域和发展史
人工智能·机器学习
前端开发江鸟1 小时前
我写过 MCP Server,却一直以为 MCP 只有 Tool
人工智能