支持向量机(SVM)
Coddy 机器学习入门 课程的第 18 课,共 19 课。
支持向量机(SVM)是一种功能强大且用途广泛的监督式机器学习算法,可用于分类和回归任务。不过,它更常用于分类问题。SVM 准确率高,在高维特征空间中表现良好,因此适用于从图像识别到生物信息学等各种应用。

来源:维基百科
SVM 算法的主要目标是在特征空间中找到一个最优超平面(在二维空间中,它是一条直线),以尽可能好地分隔各个类别。SVM 模型将样本表示为空间中的点,并以这样的方式映射它们:不同类别的样本之间由一个尽可能宽的明显间隔分隔。
- 超平面:它本质上是一条用于分隔类别的决策边界。在二维空间中,超平面是一条直线;在更高维度的空间中,它可能更复杂。
- 支持向量:这些是距离超平面最近的数据点,对确定超平面的位置至关重要。SVM 分类器会受到这些点的显著影响,因此得名
Support VectorMachine。 - 间隔:它是不同类别中距离最近的数据点所对应的两条线之间的空隙。可以将它视为类别之间的一种分隔度量。在训练 SVM 时,确保间隔尽可能宽是一个关键目标。
SVM 的类型:
- 线性 SVM:当数据可以线性分离时,我们可以用一条直线来分隔各个类别。这种情况使用线性 SVM。
- 非线性 SVM:当数据无法线性分离时,SVM 会使用一种称为核技巧的方法,将输入空间转换到更高维的空间,在那里可以用超平面进行分隔。核技巧会将数据转换到另一个维度,使不同类别的数据之间形成清晰的间隔。它让 SVM 能够解决非线性问题。常见的核包括:
- 线性核:用于数据可以线性分离的情况。
- 多项式核:将原始特征空间转换为指定次数的多项式特征空间。
- 高斯核:适用于聚集成组的非线性数据。它会将特征空间映射到更高维度。
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
挑战
简单支持向量机(SVM)利用核函数将数据转换到更高维的空间,在这个空间中更容易进行分类。这个过程称为“核技巧”。它能帮助 SVM 高效地解决非线性分类和回归问题。
这里,我们将学习多项式核,它能在数据中形成曲线边界。它会将数据提升到指定的次数 d。当类别标签与属性之间的关系是多项式关系时,这种核特别有用。
来源:维基百科
创建一个名为 polynomial_kernel 的函数,接收两个列表(x、y)、一个次数(d)和一个系数(c),并返回多项式核。
→(
x 的转置与 y 的点积,加上 c)的 d 次方。
亲手试试
import numpy as np
def polynomial_kernel(x, y, d, c):
x_arr = np.array(x)
y_arr = np.array(y)
# 在这里编写你的代码机器学习入门中的所有课
自己练习: Python 在线编译器