线性模型 - 支持向量机

支持向量机(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()
相关推荐
阿巴~阿巴~19 分钟前
穷举vs暴搜vs深搜vs回溯vs剪枝(典型算法思想)—— OJ例题算法解析思路
开发语言·c++·算法·蓝桥杯·深度优先·剪枝·宽度优先
不是编程家21 分钟前
递归、搜索与回溯第二讲:二叉树中的深搜 && 穷举vs暴搜vs深搜vs回溯vs剪枝
算法·机器学习·剪枝
大霸王龙26 分钟前
不同Embedding模型与大语言模型(LLM)的交互主要通过语义向量传递实现
人工智能·python·深度学习·机器学习·语言模型·embedding
wlsjdszls1 小时前
ChatGPT免费背后的技术暗战 国产数字孪生如何打造“虚实共生”新生态?
人工智能·信息可视化·chatgpt
二十雨辰1 小时前
[Java基础]反射技术
java·开发语言·算法
徐行tag1 小时前
PnP——根据3D与2d图片估计相机运动
人工智能·数码相机·3d·视觉slam
阿丢丢2 小时前
如何在Mac上通过LMX训练自己的模型
人工智能
WLKQ2 小时前
力扣——完全平方数
算法·leetcode·职场和发展
xxxmmc2 小时前
Leetcode 141 Linked List Cycle and Leetcode 142 Linked List Cycle II
算法·leetcode·快慢指针
春末的南方城市2 小时前
谷歌推出PaliGemma 2 mix:用于多任务的视觉语言模型,开箱即用。
人工智能·语言模型·自然语言处理