机器学习-基于支持向量机的分类预测

时间:2025-01-18 17:15:58

一、SVM的介绍

支持向量机(Support Vector Machine,SVM)是一个非常优雅的算法,具有非常完善的数学理论,常用于数据分类,也可以用于数据的回归预测中,由于其其优美的理论保证和利用核函数对于线性不可分问题的处理技巧,在上世纪90年代左右,SVM曾红极一时。

二、Demo实践

  • Step1:库函数导入
  • Step2:构建数据集并进行模型训练
  • Step3:模型参数查看
  • Step4:模型预测
  • Step5:模型可视化

2.1 库函数导入

在这里插入图片描述

2.2 构建数据集并进行模型训练

在这里插入图片描述

2.3 模型参数查看

在这里插入图片描述
运行结果:
在这里插入图片描述

2.4 模型预测

在这里插入图片描述
运行结果:
在这里插入图片描述

2.5 模型可视化

在这里插入图片描述
在这里插入图片描述
可以对照之前的逻辑回归模型的决策边界,我们可以发现两个决策边界是有一定差异的(可以对比两者在X,Y轴上的截距),这说明这两个不同在相同数据集上找到的判别线是不同的,而这不同的原因其实是由于两者选择的最优目标是不一致的。接下来我们进行SVM的一些简单介绍。

三、支持向量机的介绍

我们常常会碰到这样的一个问题,首先给你一些分属于两个类别的数据
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
现在需要一个线性分类器,将这些数据分开来。
我们可能会有多种分法:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
那么现在有一个问题,两个分类器,哪一个更好呢?
为了判断好坏,我们需要引入一个准则:好的分类器不仅仅是能够很好的分开已有的数据集,还能对未知数据集 进行两个的划分。
假设,现在有一个属于红色数据点的新数据
在这里插入图片描述
[<.Line2D at 0x7ff7fea7d748>]
在这里插入图片描述
可以看到,此时黑色的线会把这个新的数据集分错,而蓝色的线不会。
我们刚刚举的例子可能会带有一些主观性。
那么如何客观的评判两条线的健壮性呢?
此时,我们需要引入一个非常重要的概念:最大间隔。
最大间隔刻画着当前分类器与数据集的边界,以这两个分类器为例:
在这里插入图片描述
< at 0x7ff7ff40c518>
在这里插入图片描述
可以看到, 蓝色的线最大间隔是大于黑色的线的。
所以我们会选择蓝色的线作为我们的分类器。
在这里插入图片描述
< at 0x7ff7ff363b38>
在这里插入图片描述
那么,我们现在的分类器是最优分类器吗?
或者说,有没有更好的分类器,它具有更大的间隔?
答案是有的。
为了找出最优分类器,我们需要引入我们今天的主角:SVM
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
< at 0x7ff7fe55a048>
在这里插入图片描述
带黑边的点是距离当前分类器最近的点,我们称之为支持向量。
支持向量机为我们提供了在众多可能的分类器之间进行选择的原则,从而确保对未知数据集具有更高的泛化性。

3.1 软间隔

在这里插入图片描述
< at 0x7ff7fe07c240>
在这里插入图片描述
这种情况并不容易找到这样的最大间隔。
于是我们就有了软间隔,相比于硬间隔而言,我们允许个别数据出现在间隔带中。
我们知道,如果没有一个原则进行约束,满足软间隔的分类器也会出现很多条。
所以需要对分错的数据进行惩罚,SVC 函数中,有一个参数 C 就是惩罚参数。
惩罚参数越小,容忍性就越大。
以 C=1 为例子,比如说:
在这里插入图片描述
< at 0x7ff7fddd24a8>
在这里插入图片描述
惩罚参数 C=0.2 时,SVM 会更具包容性,从而兼容更多的错分样本:
在这里插入图片描述
< at 0x7ff7f9b67cf8>
在这里插入图片描述

3.2 超平面

在这里插入图片描述
[<.Line2D at 0x7ff7f8adb780>,
<.Line2D at 0x7ff7f8849e80>]
在这里插入图片描述
我们可以将二维(低维)空间的数据映射到三维(高维)空间中。
此时,我们便可以通过一个超平面对数据进行划分
所以,我们映射的目的在于使用 SVM 在高维空间找到超平面的能力。
在这里插入图片描述
<mpl_toolkits.mplot3d.art3d.Poly3DCollection at 0x7ff7f64fc390>
在这里插入图片描述

在 SVC 中,我们可以用高斯核函数来实现这以功能:kernel=‘rbf’在这里插入图片描述
在这里插入图片描述
此时便完成了非线性分类。