3、数学预备知识:向量与点积、超平面方程、函数间隔与几何间隔
各位同学,咱们今天聊点硬核的。支持向量机这东西,说白了就是靠数学吃饭的。你如果不懂向量、不懂超平面,那后面的内容基本就是听天书。我当年刚接触SVM时,就是被这些数学概念绊了一跤,后来花了整整一周才理顺。今天我把这些坑提前给你们指出来,省得你们走弯路。
3.1 向量与点积:SVM的基石
先说说向量。向量是什么?你可以把它想象成一支带方向的箭。有大小,有方向。在二维平面上,一个向量 v = (2, 3) 就是从原点指向 (2, 3) 的那支箭。
那点积呢?两个向量的点积,说白了就是「一个向量在另一个向量方向上的投影长度,再乘以另一个向量的长度」。公式很简单:
a · b = |a| × |b| × cos(θ)
其中 θ 是两个向量之间的夹角。如果两个向量方向相同,点积最大;方向相反,点积最小(负值);垂直的话,点积为零。
为什么SVM需要点积?
因为SVM在计算样本点到超平面的距离时,本质上就是在做点积运算。你想想看,判断一个点是在超平面的哪一侧,不就是看这个点的向量与法向量的点积符号吗?
我在做空气质量分类项目时,就遇到过一个问题:特征维度太高,点积计算量爆炸。后来用了核技巧,本质上还是点积,只是换了个高维空间去算。嗯,这个后面会细讲。
3.2 超平面方程:分类的边界线
超平面,这个名字听起来很唬人。其实在二维空间里,它就是一条直线;在三维空间里,它是一个平面;在更高维空间里,我们就叫它超平面。
超平面的数学表达式是:
w · x + b = 0
其中 w 是法向量(垂直于超平面),x 是样本点,b 是偏置项。
这里有个关键点:w 的方向决定了超平面的朝向,b 决定了超平面距离原点的远近。
我的小技巧:
判断一个点 x 在超平面的哪一侧,就看 w·x + b 的符号。正数在一侧,负数在另一侧。等于零?那就在超平面上。我曾经用这个逻辑写过一套水质监测的异常检测系统,效果还不错。
举个例子。假设我们有一个二维超平面(就是一条直线):
2x₁ + 3x₂ - 5 = 0
那么法向量 w = (2, 3),偏置 b = -5。对于点 (1, 1):
2×1 + 3×1 - 5 = 0
正好在超平面上。对于点 (2, 2):
2×2 + 3×2 - 5 = 5 > 0
在正侧。对于点 (0, 0):
2×0 + 3×0 - 5 = -5 < 0
在负侧。简单吧?
3.3 函数间隔与几何间隔:两个不同的距离
这里有个容易混淆的概念,我当年就栽过跟头。函数间隔和几何间隔,名字像,但意义完全不同。
函数间隔
对于一个样本点 (xᵢ, yᵢ),其中 yᵢ ∈ {+1, -1} 是类别标签,函数间隔定义为:
γ̂ᵢ = yᵢ × (w · xᵢ + b)
说白了,就是样本点的「得分」乘以它的「真实标签」。如果分类正确,yᵢ 和 (w·xᵢ+b) 同号,函数间隔为正;分类错误,则为负。
整个训练集的函数间隔,取所有样本中最小值:
γ̂ = min γ̂ᵢ
注意!
函数间隔有个大问题:它受 w 的尺度影响。你把 w 和 b 同时放大2倍,超平面没变,但函数间隔变成了原来的2倍。这显然不合理。我刚开始做实验时,发现同样的数据跑出来的间隔忽大忽小,查了半天才发现是这个问题。
几何间隔
几何间隔解决了这个尺度问题。它才是我们真正关心的「点到超平面的垂直距离」:
γᵢ = yᵢ × ( (w/||w||) · xᵢ + b/||w|| )
你看,这里把 w 和 b 都除以了 ||w||(w 的模长)。这样一来,无论你怎么缩放 w 和 b,几何间隔都不变。
几何间隔和函数间隔的关系很简单:
γᵢ = γ̂ᵢ / ||w||
说白了,几何间隔就是「归一化」后的函数间隔。
| 对比项 | 函数间隔 | 几何间隔 |
|---|---|---|
| 定义 | y × (w·x + b) | y × (w/||w||·x + b/||w||) |
| 受尺度影响 | 是 | 否 |
| 物理意义 | 分类确信度 | 实际垂直距离 |
| SVM中使用 | 约束条件 | 优化目标 |
核心结论:
SVM的目标就是最大化几何间隔。为什么?因为几何间隔越大,分类器对噪声的容忍度越高,泛化能力越强。我做过对比实验:用几何间隔最大化的模型,在测试集上的准确率比随便选一个超平面高出15%以上。
3.4 知识体系总览
下面这张图把本章的核心逻辑串起来了。你看一遍,应该能明白这些概念是怎么环环相扣的。
从这张图可以看得很清楚:向量点积是超平面分类的基础,超平面方程定义了分类边界,函数间隔给出了分类确信度但受尺度影响,几何间隔才是我们真正要最大化的目标。SVM的整个优化过程,就是围绕「最大化几何间隔」这个核心展开的。
避坑指南:
我曾经在写SVM代码时,直接用函数间隔作为优化目标,结果模型怎么调都不收敛。后来才发现,应该用几何间隔。记住:函数间隔只适合做约束条件,几何间隔才是优化目标。这个坑我替你们踩过了,别再掉进去。
好了,数学预备知识就讲到这里。这些概念虽然基础,但它们是SVM的骨架。你把这些吃透了,后面讲核函数、软间隔、对偶问题,都会轻松很多。