线性模型 - 支持向量机

支持向量机(SVM)是一种用于分类(和回归)的监督学习算法,其主要目标是找到一个最佳决策超平面,将数据点分为不同的类别,并且使得分类边界与最近的数据点之间的间隔(margin)最大化,从而提高模型对新数据的泛化能力。

在学习支持向量机之前,我们需要弄清楚一些数学概念和公式。

一、什么是超平面

超平面是指在 n 维空间中,维度为 n-1 的仿射子空间。换句话说,超平面是一个"平坦"的空间,它比所在空间的维度低1。具体来说:

  • 二维空间:超平面是1维的直线。
  • 三维空间:超平面是2维的平面。
  • n维空间:超平面是 n−1 维的空间。

通常,超平面可以用一个线性方程来表示,例如在 nn 维空间中,一个超平面可以写为:

w^T x + b = 0,

其中 w 是一个 n 维向量(称为法向量),b 是一个偏置项,而 x 是 n 维输入向量。这个方程表示所有满足此关系的点构成的集合,也就是超平面。

超平面在机器学习中非常重要,例如支持向量机(SVM)就是利用超平面将数据分为不同类别。

二、什么是法向量

法向量是一个向量,它与给定平面或超平面中的所有向量都垂直。换句话说,如果我们有一个平面或超平面,那么平面内任意一个向量与该平面的法向量的内积都为零。法向量不仅描述了平面或超平面的方向,还在计算点到平面的距离、确定超平面方程以及各种几何变换中起关键作用。

举例说明:

  • 在二维平面中,一个直线可以表示为 ax + by + c = 0。其中,向量 (a, b) 就是这条直线的法向量,因为它与直线上任意两个点构成的向量都垂直。

  • 在三维空间中,一个平面的方程可以写成 ax + by + cz + d = 0,此时 (a, b, c) 就是该平面的法向量。

总结来说,法向量为我们提供了描述平面方向的工具,是理解和操作几何对象的重要概念。

三、什么是向量的模

向量的"模"(或称为"范数")指的是向量的大小或长度。最常用的度量是欧几里得范数,其计算公式为:

  • 几何意义

    可以把向量看作从原点指向空间中某个点的箭头,向量的模就是这根箭头的长度。

  • 示例

    对于二维向量 v = (3, 4),其模为

    这表示这个向量的长度为5。

四、点到超平面的距离

1. 公式

2. 几何定义

样本 x(n) 到超平面 w^Tx+b=0 的距离,是该点到超平面的最短距离(垂直距离)。

3. 推导过程

步骤 1:任取超平面上一点 x′,满足 w^Tx′+b=0。

五、超平面到超平面的距离

考虑两个平行超平面,其方程分别为

这两个超平面平行,因为它们具有相同的法向量 w。

为了求两个超平面之间的距离,我们可以任选一个在第一个超平面上的点,然后计算它到第二个超平面的距离。

六、现在我们切入本文的主题:支持向量机

支持向量机(Support Vector Machine,SVM)是一个经典的二分类算法, 其找到的分割超平面具有更好的鲁棒性,因此广泛使用在很多任务上,并表现出 了很强优势。

支持向量机(SVM)是一种监督学习算法,主要用于解决分类问题,尤其是二分类问题。其核心思想是通过寻找一个最优的决策边界(在二维空间中就是一条直线,在更高维空间中则是一个超平面),使得正类和负类数据点之间的间隔(margin)最大化。

(一)基本概念

给定一个二分类器数据集

如果两类样本是线性可分的,即存在一个超平面 w^T x + b = 0,

我们定义间隔(Margin)𝛾 为整个数据集 𝐷 中所有样本到分割超平面的最短距离。

如果间隔 𝛾 越大,其分割超平面对两个数据集的划分越稳定,不容易受噪声等因素影响。

支持向量机的目标是寻找一个超平面使得 𝛾 最大。

(二)这里先弄清楚上面提到的一个关键点:两类样本线性可分时,则每个样本满足 y(w^Tx+b)>0

1. 超平面的定义

在二分类问题中,超平面是决策边界,形式为:

w^Tx+b=0

其中:

  • w 是超平面的法向量(决定方向)。

  • b 是偏置项(决定超平面与原点的距离)。

2. 线性可分性

若两类样本线性可分,则存在一个超平面,使得:

  • 正类样本(y=+1)满足 w^Tx+b>0。

  • 负类样本(y=−1)满足 w^Tx+b<0。

3. 统一表达

将两类样本的条件合并为:

y(w^Tx+b)>0

  • 当 y=+1 时,w^Tx+b>0,乘积为正。

  • 当 y=−1 时,w^Tx+b<0,乘积仍为正。

因此,所有样本均满足 y(w^Tx+b)>0

(三)核心思想与基本概念

  • 决策超平面

    在 n 维空间中,一个超平面可以表示为

    w^T x + b = 0,

    其中 w 是超平面的法向量,b 是偏置。支持向量机寻找这样一个超平面,将正负类数据分隔开。

  • 最大化间隔
    SVM 不仅要求决策超平面能够分隔两类数据,还要求该超平面与数据中最近的点之间的距离(称为"间隔")尽可能大。直观上,间隔越大,模型对噪声和数据变化的容忍度就越高,泛化能力也就越强。

    结合前面的点到超平面的距离公式,对于线性可分的情况,间隔可以证明是: ​,因此最大化间隔等价于最小化

对于一个线性可分的数据集,其分割超平面有很多个,但是间隔最大的超平面是唯一的,下面放一张图辅助理解:

  • 支持向量

    那些位于决策边界附近的训练样本被称为"支持向量"。这些点决定了决策超平面的最终位置和方向。换句话说,只要知道支持向量的信息,就可以确定最优的超平面。

  • 非线性扩展

    当数据在原始空间中线性不可分时,SVM 可以使用"核技巧"(Kernel Trick)将数据映射到一个高维空间,在高维空间中数据可能变得线性可分,再在高维空间中找到最佳决策超平面。常见的核函数包括径向基函数(RBF)、多项式核等。

(四)间隔的推导过程如下:

  • 点到超平面的距离公式

对于任意点 x_0​ 到超平面的距离公式是:

  • 计算支持向量到决策边界的距离
  • 两个边界超平面之间的间隔

两个边界超平面之间的距离就是这两个距离的和,即:

(五)优化目标

因此,SVM 的目标是求解如下的优化问题:

约束条件为:

这里注意思考:为什么优化目标是

**** 关于支持向量机参数的学习,鉴于篇幅,下一篇博文再做介绍。

(六)相关概念

1.线性可分 vs 非线性可分
  • 线性可分:存在一个超平面完美分隔两类数据(如二维平面上的直线)。

  • 非线性可分:需通过 核技巧(Kernel Trick)将数据映射到高维空间,使其线性可分。

2. 核函数(Kernel Function)
  • 作用:隐式计算高维空间的内积,避免显式映射。

  • 常见核函数

3. 软间隔(Soft Margin)

(七)SVM的优缺点

优点 缺点
高维数据有效(核技巧) 计算复杂度高(大规模数据不适用)
泛化能力强(间隔最大化) 需要谨慎调参(如CC、γγ)
支持线性和非线性分类 多分类需额外策略(OvR/OvO)

(八)代码示例

python 复制代码
from sklearn import svm
from sklearn.datasets import make_classification
import matplotlib.pyplot as plt

# 生成线性可分数据
X, y = make_classification(n_features=2, n_redundant=0, n_informative=2, random_state=42)

# 训练SVM
model = svm.SVC(kernel='linear', C=1.0)
model.fit(X, y)

# 可视化决策边界
plt.scatter(X[:,0], X[:,1], c=y, cmap='bwr')
ax = plt.gca()
xlim = ax.get_xlim()
ylim = ax.get_ylim()

# 生成网格点
xx = np.linspace(xlim[0], xlim[1], 30)
yy = np.linspace(ylim[0], ylim[1], 30)
YY, XX = np.meshgrid(yy, xx)
xy = np.vstack([XX.ravel(), YY.ravel()]).T
Z = model.decision_function(xy).reshape(XX.shape)

# 绘制超平面和间隔
ax.contour(XX, YY, Z, colors='k', levels=[-1, 0, 1], linestyles=['--', '-', '--'])
ax.scatter(model.support_vectors_[:,0], model.support_vectors_[:,1], s=100, facecolors='none', edgecolors='k')
plt.show()
相关推荐
小杨40430 分钟前
python入门系列十四(多进程)
人工智能·python·pycharm
阿坡RPA15 小时前
手搓MCP客户端&服务端:从零到实战极速了解MCP是什么?
人工智能·aigc
用户277844910499315 小时前
借助DeepSeek智能生成测试用例:从提示词到Excel表格的全流程实践
人工智能·python
机器之心15 小时前
刚刚,DeepSeek公布推理时Scaling新论文,R2要来了?
人工智能
算AI17 小时前
人工智能+牙科:临床应用中的几个问题
人工智能·算法
凯子坚持 c18 小时前
基于飞桨框架3.0本地DeepSeek-R1蒸馏版部署实战
人工智能·paddlepaddle
你觉得20519 小时前
哈尔滨工业大学DeepSeek公开课:探索大模型原理、技术与应用从GPT到DeepSeek|附视频与讲义下载方法
大数据·人工智能·python·gpt·学习·机器学习·aigc
8K超高清19 小时前
中国8K摄像机:科技赋能文化传承新图景
大数据·人工智能·科技·物联网·智能硬件
hyshhhh19 小时前
【算法岗面试题】深度学习中如何防止过拟合?
网络·人工智能·深度学习·神经网络·算法·计算机视觉
薛定谔的猫-菜鸟程序员19 小时前
零基础玩转深度神经网络大模型:从Hello World到AI炼金术-详解版(含:Conda 全面使用指南)
人工智能·神经网络·dnn