【机器学习】SVM中对函数间隔和几何间隔的理解

该博客探讨了支持向量机(SVM)中的超平面表达式和几何间隔概念。通过函数间隔和几何间隔的转换,SVM的目标是最大化几何间隔的最小值。在不同的常数γ下,超平面的表示会改变,但分类精度保持不变,只是空间尺度有所调整。最终,SVM优化问题转化为一个凸二次规划问题,寻找最佳分类边界。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

超平面表达式:
在这里插入图片描述

函数间隔 : 对于在超平面上的点, w x + b = 0 wx+b=0 wx+b=0 恒成立。而超平面之外的点,可以认为距离越远, w x + b wx+b wx+b 的绝对值越大,同时分类成功的概率也越高,表达式为:
![在这里插入图片描述](https://img-blog.csdnimg.cn/15f20549a9e943d2a66edc5dc44ebdc6.png

几何间隔 : 顾名思义,几何间隔就是两条平行线之间的距离,表达式为:
在这里插入图片描述

考虑SVM的目标,是要使所有样本点中几何间隔的最小值尽可能大
在这里插入图片描述

即最优化问题为:
在这里插入图片描述

将约束条件的左右两边同时乘以 ∣ ∣ w ∣ ∣ ||w|| w,可以得到表达式: y i ( w ⋅ x i + b ) ≥ γ ⋅ ∣ ∣ w ∣ ∣ y_i(w·x_i+b)≥γ·||w|| yi(wxi+b)γw

可以发现此时左边是函数间隔的表达式,回到函数间隔的本身意义,它表示空间中任一点到分类超平面 w ⋅ x i + b = 0 w·x_i+b=0 wxi+b=0相对距离,如果对超平面表达式两边乘以一个系数,相当于对该平面作一个线性空间的映射,例如将 2 x + 2 = 0 2x+2=0 2x+2=0 的两端同时乘以 0.5 0.5 0.5,得到 x + 1 = 0 x+1=0 x+1=0,表示新的基底向量下的平面空间。

相应的,空间中任一点到该平面的相对距离也会成比例增加或者减小。因此,对于 y i ( w ⋅ x i + b ) ≥ γ ⋅ ∣ ∣ w ∣ ∣ y_i(w·x_i+b)≥γ·||w|| yi(wxi+b)γw,相当于对于此超平面,空间中任一点到它的相对距离是 γ ⋅ ∣ ∣ w ∣ ∣ γ·||w|| γw假设我们站在上帝视角已经得到了一个超平面 w ⋅ x i + b = 0 w·x_i+b=0 wxi+b=0,不妨对此超平面做一个映射,也就是令两端同时除以系数 γ ⋅ ∣ ∣ w ∣ ∣ γ·||w|| γw,映射到新的线性空间,那么点与平面的相对距离也是同时映射过去的,换句话说,映射操作不对点到平面的相对距离发生变化,因此可以在一开始就令 γ ⋅ ∣ ∣ w ∣ ∣ = 1 γ·||w||=1 γw=1

又由于最大化 γ γ γ 等价于最大化 1 ∣ ∣ w ∣ ∣ \frac{1}{||w||} w1,等价于最小化 1 2 ∣ ∣ x ∣ ∣ 2 \frac{1}{2}||x||^2 21x2 1 2 \frac{1}{2} 21是为了方便后面求导

这时,SVM模型求约束下的最大分割超平面又可以表示成:

根据以上的推导,这是映射到新线性空间后的表达式

(根据以上的推导,这是映射到新线性空间后的表达式)

此时,经过我们一系列映射、转换的方式,原问题变成了含有不等式约束的凸二次规划问题。

可视化验证:
以下是某个模型对于两个测试集的svm分类结果,精度分别为1和0.9980:
在这里插入图片描述

当讲常数1改为100后,得到的分类结果如下:

在这里插入图片描述

精度分别为1和0.9980,与常数为100时一致,但是空间被拉伸,两条虚线之间的相对距离很大

当讲常数1改为0.01后,得到的分类结果如下

在这里插入图片描述

同时精度仍然为1和0.9980,常数为1时保持不变,但可以发现空间被压缩,两条虚线之间的距离非常小以至于看不见

### 支持向量机中的几何间隔概念 在支持向量机(SVM)中,几何间隔是指某个样本点到分类超平面的实际距离。这一定义基于欧几里得空间的距离度量方式,并考虑了数据点的规范化表示。 对于给定的数据点 \( \mathbf{x}_i \),其对应的类别标签为 \( y_i \in \{-1, +1\} \),假设当前的超平面由参数 \( (\mathbf{w}, b) \) 表示,则该点到超平面的几何间隔可以写成如下形式: \[ d(\mathbf{x}_i) = \frac{|y_i (\mathbf{w}^\top \mathbf{x}_i + b)|}{||\mathbf{w}||}. \] 其中: - \( ||\mathbf{w}|| \) 是权重向量 \( \mathbf{w} \) 的 L2 范数; - \( \mathbf{w}^\top \mathbf{x}_i + b \) 是决策函数的部分表达式[^1]。 由于 SVM 中的目标是最优化分离效果,因此通常会引入 **最大间隔原则** 来寻找最优解。在此过程中,几何间隔被进一步标准化处理,使得目标变为最大化最小化后的间隔值。 #### 计算方法解释 为了便于理解如何计算几何间隔,在实际操作中有以下几个要点需要注意: 1. 对于任意一个训练样例而言,如果它正好位于边界上(即成为支持向量),那么它的几何间隔应满足特定条件——等于单位长度除以权值矢量模长的结果。 即当某一点恰好落在正负两类区域之间的中间位置时, \[ d_{support-vector} = \frac{1}{||\mathbf{w}||}. \] 2. 如果某些噪声或者错误标注的存在破坏了原本严格的线性可分性质,则可以通过引入松弛变量来调整模型设定从而允许一定程度上的误分类现象发生 [^2] 。此时所涉及的是所谓的“软间隔”。 通过上述分析可以看出,无论是硬间隔还是软间隔情况下的求解过程都离不开对几何间隔理解及其相应公式的应用。 ```python import numpy as np def geometric_margin(w, b, X, y): """ Calculate the geometric margin of a set of points with respect to a hyperplane. Parameters: w (numpy array): Weight vector defining the orientation of the hyperplane. b (float): Bias term determining position along normal direction. X (numpy matrix): Data samples where each row represents one sample point. y (numpy array): Labels associated with data (+1 or -1). Returns: float: The minimal geometric margin across all provided points. """ margins = [] norm_w = np.linalg.norm(w) for i in range(len(X)): distance = abs(y[i]*(np.dot(w.T, X[i]) + b)) / norm_w margins.append(distance) return min(margins), max(margins) # Example usage if __name__ == "__main__": # Define parameters and dataset example W_example = np.array([3,-4]) B_example = 7 Points = np.array([[1,0], [-1,2]]) Y_labels = np.array([1, -1]) result_min, result_max = geometric_margin(W_example, B_example, Points, Y_labels) print(f"Minimal Geometric Margin is {result_min}") print(f"Maximal Geometric Margin is {result_max}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值