支持向量机SVM系统推导(三):软间隔数学思想
一. 前言 ✨
支持向量机(SVM) 是一种广泛应用于分类和回归任务的监督学习算法。其核心思想是通过寻找一个超平面,最大化数据点与超平面之间的间隔,从而确保模型具有较强的泛化能力。
🌟 硬间隔与软间隔 SVM
在下面的图示中,我们展示了 硬间隔(Hard Margin)和 软间隔(Soft Margin)两种常见的 SVM 分类策略:
-
硬间隔 SVM 🔒
硬间隔要求所有的数据点都必须位于超平面的同一侧,并且没有任何错误分类。这种策略适用于线性可分的数据集,但在面对噪声或异常数据时,可能会导致模型的过拟合。 -
软间隔 SVM 🌐
软间隔则允许数据点存在一定的误分类,通过引入松弛变量来控制间隔的容忍度,从而提升模型的鲁棒性。该方法适用于线性不可分的数据集,能够有效应对噪声和误差的干扰。
💡 图示:硬间隔与软间隔的对比
通过下方图示,您可以清晰地看到硬间隔与软间隔在分类边界选择和模型性能方面的不同影响。接下来,我们将深入讨论 SVM 中的关键概念,并探讨在实际应用中如何进行选择与调整。

📌 本文目录导航
二. 软间隔
1. 软间隔基本概念和损失函数

📌 支持向量机(SVM)中的硬间隔与软间隔条件
在支持向量机(SVM)中,硬间隔与软间隔是用来描述样本分类的约束条件。
✅ 硬间隔约束条件
对于所有正确分类的样本点,硬间隔条件为:
y i ∗ ( w ⃗ ⋅ x ⃗ i + b ) ≥ 1 y_i * (\vec{w} \cdot \vec{x}_i + b) \geq 1 yi∗(w⋅xi+b)≥1
✅ 点违背约束条件
当样本点违背约束时,对于错误分类的点,我们有:
y a ∗ ( w ⃗ ⋅ x ⃗ a + b ) < 1 y_a * (\vec{w} \cdot \vec{x}_a + b) < 1 ya∗(w⋅xa+b)<1
✅ 量化点误差
对于错分类样本,我们定义误差 ϵ a \epsilon_a ϵa 来量化错误程度:
ϵ a = 1 − y a ∗ ( w ⃗ ⋅ x ⃗ a + b ) \epsilon_a = 1 - y_a * (\vec{w} \cdot \vec{x}_a + b) ϵa=1−ya∗(w⋅xa+b)
💡 硬间隔与软间隔:硬间隔适用于完全线性可分的情况,而软间隔则是为了处理存在一定错误的情形,尤其是在数据不可完全线性分割时,通过引入松弛变量来优化分类边界。

- 我们移动当前点的位置,观察对应损失值变化的规律,当其不断靠近负超平面时,我们将减号右边部分看成一个整体。
ϵ a = 1 − y a ∗ ( w ⃗ ⋅ x ⃗ a + b ) \epsilon_a = 1 - y_a * (\vec{w} \cdot \vec{x}_a + b) ϵa=1−ya∗(w⋅xa+b)
ϵ a = 1 − A \epsilon_a = 1 - A ϵa=1−A

在x轴展示出来,它的值逐渐向1靠近, ϵ a \epsilon_a ϵa的结果体现在Y轴,其值逐渐趋于0。移动到负超平面时,A = 1, ϵ a \epsilon_a ϵa = 0。
-
之后我们顺相同方向继续移动数据点,原约束条件 A≥1 并不会被破坏,损失值 ϵ a \epsilon_a ϵa 将继续保持为0。

-
当数据点从原先位置不断远离负超平面时,对应的大A值也将沿着X轴向左移动,继续移动 ϵ a \epsilon_a ϵa 也将线性增加

📌 对任意一点 i i i 的误差表示
对于任意一个样本点 i i i,其误差可以通过以下公式表示:
ϵ i = max ( 0 , 1 − y i ∗ ( w ⃗ ⋅ x ⃗ i + b ) ) \epsilon_i = \max(0, 1 - y_i * (\vec{w} \cdot \vec{x}_i + b)) ϵi=max(0,1−yi∗(w⋅xi+b))
该公式描述了在 SVM 中,样本点与分类超平面的距离(即误差),并且当样本被正确分类时,误差为 0;否则,误差为超平面到样本点的距离。
- 我们将其称为铰链损失函数(Hinge Loss Function)
2. 软间隔的数学优化
在求解软间隔的优化问题过程中,我们要引入损失值的概念。
minimize
f
(
w
⃗
)
=
∥
w
⃗
∥
2
2
+
∑
i
=
1
s
ϵ
i
\text{minimize} \quad f(\vec{w}) = \frac{\|\vec{w}\|^2}{2} + \sum_{i=1}^{s} \epsilon_i
minimizef(w)=2∥w∥2+i=1∑sϵi
其中:
ϵ i = max ( 0 , 1 − y i ∗ ( w ⃗ ⋅ x ⃗ i + b ) ) \epsilon_i = \max(0, 1 - y_i * (\vec{w} \cdot \vec{x}_i + b)) ϵi=max(0,1−yi∗(w⋅xi+b))
- 我们需要同时考虑向量 w w w 长度和损失值 ϵ i \epsilon_i ϵi ,两者都是越小越好。但因为 w w w 和 ϵ i \epsilon_i ϵi 会相互制约。
-
w
w
w 长度越大,间隔越小,原始数据越不容易出现分类错误。因此
∑
i
=
1
s
ϵ
i
\sum_{i=1}^{s} \epsilon_i
∑i=1sϵi 的和越小。

ϵ i = max ( 0 , 1 − y i ∗ ( w ⃗ ⋅ x ⃗ i + b ) ) ⇒ y i ∗ ( w ⃗ ⋅ x ⃗ i + b ) + ϵ i ≥ 1 \epsilon_i = \max(0, 1 - y_i * (\vec{w} \cdot \vec{x}_i + b)) \quad \Rightarrow \quad y_i * (\vec{w} \cdot \vec{x}_i + b) + \epsilon_i \geq 1 ϵi=max(0,1−yi∗(w⋅xi+b))⇒yi∗(w⋅xi+b)+ϵi≥1
⇒ ϵ i ≥ 0 \Rightarrow\epsilon_i \geq 0 ⇒ϵi≥0
- 但是我们在实际情况中,我们会对目标函数中的损失值部分乘一个非负的参数C,因为我们的目标是求函数的最小值解,C可以让我们控制对损失值 ϵ i ≥ 0 \epsilon_i \geq 0 ϵi≥0的容忍度。起到惩罚 ϵ i \epsilon_i ϵi 的作用。
增大 C C C 会导致:
核心是:通过增大 C C C,误差项 ∑ i = 1 s ϵ i \sum_{i=1}^{s} \epsilon_i ∑i=1sϵi 被强制缩小,容忍度降低;
当 C → ∞ C \to \infty C→∞ 时,误差 ϵ i → 0 \epsilon_i \to 0 ϵi→0,最终模型接近硬间隔问题。
减小 C C C 会导致:
核心是:通过减小 C C C,模型会允许一定的误差,容忍度增加;
当 C → 0 C \to 0 C→0 时,误差 ϵ i \epsilon_i ϵi 会增大,模型变得更加宽松,适应更多噪声。
更多推荐



所有评论(0)