约束 是支持向量机 (SVM) 优化过程中的一个基本组成部分,支持向量机是机器学习领域中用于分类任务的一种流行且强大的方法。此约束在确保 SVM 模型正确分类训练数据点的同时最大化不同类别之间的边际方面起着重要作用。要充分理解此约束的重要性,必须考虑 SVM 的机制、约束的几何解释及其对优化问题的影响。
支持向量机旨在找到以最大边距分隔不同类别数据点的最佳超平面。n 维空间中的超平面由以下方程定义 ,其中
是垂直于超平面的权重向量,
是输入特征向量,
是偏差项。目标是对数据点进行分类,使得来自一个类的点位于超平面的一侧,而来自另一个类的点位于另一侧。
约束 确保每个数据点
被正确分类并位于边缘的正确一侧。这里,
表示第 i 个数据点的类标签,其中
对于一个类和
另一类。术语
是确定数据点相对于超平面的位置的决策函数。
为了理解几何解释,请考虑以下内容:
1. 正类和负类分离:对于数据点 属于正类(
)约束
简化为
. 这意味着数据点
必须位于以下定义的边距边界上或边界之外:
. 类似地,对于一个数据点
属于负类(
),约束简化为
,确保数据点位于定义的边缘边界上或之外
.
2. 保证金最大化:边距是超平面与任一类中最近数据点之间的距离。约束通过将数据点尽可能远离超平面来确保边距最大化,同时仍保持正确的分类。点与超平面之间的距离 到超平面的定义为
. 通过强制执行约束
,SVM算法有效地最大化了这个距离,从而获得了更大的裕度和更好的泛化性能。
3. 支持向量:恰好位于边缘边界上的数据点 和
被称为支持向量。这些点对于定义最优超平面至关重要,因为它们是最接近超平面的点,并直接影响其位置和方向。约束确保这些支持向量被正确分类并位于边缘边界上,从而在优化问题中发挥关键作用。
SVM 的优化问题可以表述为凸优化问题,其目标是最小化权重向量的范数 (相当于最大化边际)受到约束
对于所有训练数据点。从数学上讲,这可以表示为:
的因素为 是为了在优化过程中求导时数学方便而包含的。此公式被称为 SVM 优化问题的原始形式。
为了解决这个优化问题,人们通常采用凸优化技术,例如拉格朗日乘数。通过引入拉格朗日乘数 对于每个约束,优化问题可以转化为其对偶形式,这通常更容易解决,特别是在处理高维数据时。SVM 优化问题的对偶形式如下:
哪里 是训练数据点的数量,
是一个正则化参数,控制训练数据上最大化边际和最小化分类误差之间的权衡。
对偶公式利用了核技巧,通过将输入数据映射到可以进行线性分离的高维特征空间,SVM 能够处理非线性可分离数据。这是通过核函数实现的,例如多项式核、径向基函数 (RBF) 核和 S 形核,这些核函数隐式计算高维空间中的点积,而无需明确执行转换。
通过求解对偶优化问题,得到最优拉格朗日乘数 ,可用于确定最佳权重向量
和偏差项
支持向量对应于具有非零拉格朗日乘数的数据点,以及用于对新数据点进行分类的决策函数
是(谁)给的:
约束 因此,它是 SVM 优化过程不可或缺的一部分,可确保模型在正确分类训练数据和最大化边际之间实现平衡,从而更好地泛化未知数据。
为了用一个例子来说明这一约束的重要性,我们来考虑一个带有二维数据点的简单二元分类问题。假设我们有以下训练数据:
目标是找到区分正类和负类的最优超平面()来自负类(
)该问题的约束可以写成:
通过解决这些约束条件下的 SVM 优化问题,我们得到了最优权重向量 和偏差项
定义以最大边距分隔两个类的超平面。
约束 对于 SVM 优化过程来说非常重要,因为它可以确保正确分类训练数据点,同时最大化不同类别之间的边距。这可以提高 SVM 模型的泛化性能和鲁棒性。
最近的其他问题和解答 使用Python的EITC/AI/MLP机器学习:
- 线性回归中的 b 参数(最佳拟合线的 y 截距)是如何计算的?
- 支持向量在定义 SVM 的决策边界中起什么作用,以及在训练过程中如何识别它们?
- 在SVM优化中,权重向量`w`和偏差`b`有什么意义,以及如何确定它们?
- SVM 实现中的“visualize”方法的目的是什么,它如何帮助理解模型的性能?
- SVM 实现中的“预测”方法如何确定新数据点的分类?
- 在机器学习中,支持向量机(SVM)的主要目标是什么?
- 如何使用scikit-learn等库在Python中实现SVM分类,涉及的关键函数有哪些?
- SVM 优化问题的目标是什么?它在数学上是如何表述的?
- SVM 中特征集的分类如何取决于决策函数的符号 (text{sign}(mathbf{x}_i cdot mathbf{w} + b))?
- 超平面方程 (mathbf{x} cdot mathbf{w} + b = 0) 在支持向量机(SVM)中起什么作用?
查看 EITC/AI/MLP Machine Learning with Python 中的更多问题和解答