wushuhong 发表于 2025-6-13 16:35:00

AI red teamer (人工智能红队)系列07-人工智能基础-支持向量机 (SVM)

<p><img src="data/attachment/forum/202506/13/163436oydbapzuvqbdsys4.png" alt="zn1r44-0.png" title="zn1r44-0.png" /><br />
<code>支持向量机</code>(SVM)是一种强大的 <code>监督学习</code>算法,适用于 <code>分类</code>和 <code>回归</code>任务。它们在处理高维数据以及特征与目标变量之间复杂的非线性关系时尤为有效。SVM 的目标是找到最优的 <code>超平面</code>,最大限度地分离不同类别或适合回归数据。</p>
<p>SVM 的目标是找到使 <code>边距</code> 最大化的超平面。<code>边距</code>是超平面与每个类的最近数据点之间的距离。这些最近的数据点称为 <code>支持向量</code>,对于定义超平面和边距至关重要。</p>
<h2>线性 SVM</h2>
<p><code>线性 SVM</code> 用于数据可线性分离的情况,这意味着直线或超平面可以完美地分离类别。我们的目标是找到最优超平面,在正确分类所有训练数据点的同时,使边际最大化。</p>
<h3>寻找最佳超平面</h3>
<p>想象一下,你的任务是根据 &quot;免费 &quot;和 &quot;金钱 &quot;这两个词的频率,将电子邮件分为垃圾邮件和非垃圾邮件。如果我们将每封电子邮件绘制在一张图上,X 轴代表 &quot;免费 &quot;的频率,Y 轴代表 &quot;金钱 &quot;的频率,我们就可以直观地看到 SVM 的工作原理。</p>
<p><code>最佳超平面</code>是使不同类别的最近数据点之间的边际最大化的超平面。这个边距称为 <code>分离超平面</code>。最接近超平面的数据点称为 <code>支持向量</code>,因为它们 &quot;支持 &quot;或定义了超平面和边际。</p>
<p>最大化边际值的目的是创建一个稳健的分类器。较大的边际允许 SVM 在不误判点的情况下容忍数据中的一些噪声或可变性。它还能提高模型的泛化能力,使其更有可能在未见过的数据上表现出色。</p>
<p>在图中描述的垃圾邮件分类场景中,线性 SVM 可识别出使最近的垃圾邮件与非垃圾邮件之间的距离最大化的线。这条线是对新邮件进行分类的决策边界。位于该线一侧的邮件被归类为垃圾邮件,而位于该线另一侧的邮件则被归类为非垃圾邮件。</p>
<p>超平面由一个等式定义:</p>
<pre><code class="language-python">w * x + b = 0
</code></pre>
<p>Python</p>
<ul>
<li><code>w</code> 是权重向量,垂直于超平面。</li>
<li><code>x</code> 是输入特征向量。</li>
<li><code>b</code> 是偏置项,它使超平面相对于原点移动。</li>
</ul>
<p>SVM 算法会在训练过程中学习 <code>w</code> 和 <code>b</code> 的最佳值。</p>
<p><img src="data/attachment/forum/202506/13/163454igxxm4veeg37a3oe.png" alt="zothcw-0.png" title="zothcw-0.png" /></p>
<p>在现实世界的许多场景中,数据并不是线性可分的。这意味着我们无法绘制一条直线或超平面来完美地分离不同的类别。在这种情况下,<code>非线性 SVM</code> 就可以派上用场了。</p>
<h3>核方法</h3>
<p><code>非线性 SVM</code> 使用一种称为 <code>核技巧</code>的技术。这包括使用 <code>核函数</code>将原始数据点映射到一个更高维的空间,在这个空间中,原始数据点变得线性可分。</p>
<p>想象一下将桌子上的红色和蓝色混合弹珠分开的情景。如果这些弹珠混合成复杂的图案,你可能无法画出一条直线将它们分开。但是,如果你能把一些弹珠从桌子上拿起来(放到更高的维度),也许就能找到一个平面把它们分开。</p>
<p>这就是核函数的本质。它将数据转换到一个高维空间,在这个空间中可以找到一个线性超平面。当映射回原始空间时,该超平面对应于非线性决策边界。</p>
<h3>核函数</h3>
<p><code>非线性 SVM</code> 中常用的核函数有几种:</p>
<ul>
<li><code>多项式核:</code> 该核引入多项式项(如 x²、x³ 等)来捕捉特征之间的非线性关系。这就像是在决策边界上添加曲线。</li>
<li><code>径向基函数(RBF)核</code>:该内核使用高斯函数将数据点映射到高维空间。它是最流行、最通用的核函数之一,能够捕捉复杂的非线性模式。</li>
<li><code>Sigmoid 核:</code> 该核类似于逻辑回归中使用的 sigmoid 函数。它通过将数据点映射到具有西格玛形决策边界的空间来引入非线性</li>
</ul>
<p>核函数的选择取决于数据的性质和模型所需的复杂程度</p>
<h3>图像分类</h3>
<p><code>非线性 SVM</code> 在图像分类等应用中特别有用。图像通常具有线性边界无法分离的复杂模式。</p>
<p>例如,想象一下对猫和狗的图像进行分类。这些特征可能是皮毛纹理、耳朵形状和面部特征。这些特征通常具有非线性关系。具有适当核函数的 <code>非线性 SVM</code> 可以捕捉这些关系,并有效地将猫图像和狗图像区分开来。</p>
<h2>SVM 函数</h2>
<p>要找到这个最佳超平面,需要解决一个优化问题。这个问题可以表述为</p>
<pre><code class="language-python">Minimize: 1/2 ||w||^2
Subject to: yi(w * xi + b) &gt;= 1 for all i
</code></pre>
<p>Python</p>
<ul>
<li><code>w</code> 是定义超平面的权重向量</li>
<li><code>xi</code> 是数据点 <code>i</code> 的特征向量</li>
<li><code>yi</code> 是数据点 <code>i</code> 的类别标签(-1 或 1)。</li>
<li><code>b</code> 是偏置项</li>
</ul>
<p>这种方法的目的是最小化权重向量的大小(使边际值最大化),同时确保所有数据点都能正确分类,边际值至少为 1。</p>
<h2>数据假设</h2>
<p>SVM 对数据的假设很少:</p>
<ul>
<li><code>没有分布假设</code>:SVM 对数据的基本分布不做强烈假设。</li>
<li><code>处理高维度:</code> 它们在高维空间中非常有效,在这种空间中,特征的数量大于数据点的数量。</li>
<li><code>对异常值的健壮性:</code> SVM 对异常值的健壮性相对较好,它侧重于最大化边际,而不是完美拟合所有数据点。</li>
</ul>
<p>SVM 是一种功能强大、用途广泛的算法,已在各种机器学习任务中证明行之有效。SVM 能够处理高维数据和复杂的非线性关系,是解决具有挑战性的分类和回归问题的重要工具。</p>

edaole 发表于 2025-7-8 11:30:02

SVM知识好复杂呀

1qaz 发表于 2025-7-10 17:00:02

SVM原理讲解挺全
页: [1]
查看完整版本: AI red teamer (人工智能红队)系列07-人工智能基础-支持向量机 (SVM)