SVM 仅使用示例之间的相似性度量进行分类这一事实背后的直觉

数据挖掘 机器学习 分类 聚类 支持向量机 核心
2022-02-13 05:39:57

我已经阅读了有关 SVM 的内容,虽然我没有完全理解它背后的数学原理,但我知道它会产生决策平面,在不同类别的示例之间以及支持向量在过程中的作用之间具有最大的余量。我也知道 SVM 是一种双重学习算法(仅使用示例之间的点积运算的算法)。它使用核函数来计算训练示例之间的点积(相似性度量)。

我想简单地理解是:假设我有一个所有训练示例的相似度矩阵,指定训练样本中任何(所有)两个示例之间的相似度。如何仅基于此信息制作分类器或集群?

3个回答

您可以尝试仅在此相似度矩阵上运行 SVM。但是您随后还需要为新数据点提供 sikikaritirs。

此外,SVM 依赖于在某些向量空间中带来点积的相似性。如果不是,您可能会遇到不一致的情况。它们可能依赖于距离函数 d(x,y)=sqrt(2k(x,y)-k(x,x)-k(y,y)) 满足的三角不等式。尽管我找不到关于是否需要这样做的明确参考。如果 k 是某个向量空间中的标量积,这显然是满足的。

最后但同样重要的是,支持向量机适用于大量数据,在这种情况下,您无法将整个相似度矩阵保存在内存中!通过仅将数据集减少为支持向量,生成的分类器将需要更少的内存和更少的时间。学习 SVM 的大部分挑战是在训练期间管理内存。

我想简单地理解是:假设我有一个所有训练示例的相似度矩阵,指定训练样本中任何(所有)两个示例之间的相似度。如何仅基于此信息制作分类器或集群?

让我试着用简单的术语来解释一下,有一种叫做余弦相似度的东西,它是在两个向量之间计算的。它被定义为两个向量之间的角度(θ)。

案例1:假设我们有两个向量a和b,假设这两个向量相互垂直,所以它们之间的角度是90度,所以cos-sim(a,b) = cosine(90 degrees)为0。这意味着向量a和b之间的相似度为0。两个向量高度不同

另一个相关概念是余弦距离,它用于定义两个向量与其相似值的距离,即它们之间的距离是多少。有一个漂亮的数学证明证明cos-dist(A,B)=1−cos-sim(A,B)

对于我们的例子,cos-dist(A,B) = 1−cos-sim(A,B) = 1−0它等于 1。这意味着两个向量之间的距离最大

情况2:当theta为0时cos-sim(a,b) = cosine(0 degrees)为1。这意味着向量a和b之间的相似度为1。这两个向量高度相似,现在cos-dist(A,B) = 1−cos-sim(A,B) = 1−1等于0。这意味着两个向量之间的距离最小。

现在将您的每个数据点视为某个 n 维向量,并且有人给您一个矩阵,其中包含每个点相对于数据中每个点的余弦相似度值。鉴于您具有相似性值,您可以计算任何点到任何其他点之间的距离,从而形成相似的点簇。如果您有 2 个以上的集群,则可以将此问题作为多类分类问题来解决。希望这可以消除您的疑问

我读过关于 SVM ...我知道它会产生决策平面

SVM 没有明确地产生决策平面;它不是参数方法。拟合的 SVM 所隐含的决策平面可以在二维或三个维度上可视化,但该平面仅来自于训练观察的类标签和权重。如果直接估计决策平面,则每个变量都会获得估计的权重(可能是非线性变换),但这将是一种参数化方法。使用支持向量机,每个训练观察都会获得一个估计的权重,使其成为一种非参数方法。

我想简单地理解是:假设我有一个所有训练示例的相似度矩阵,指定训练样本中任何(所有)示例之间的相似度。如何仅基于此信息制作分类器或集群?

为了进行分类,我们计算新观察的相似度x0对所有训练观察结果(请注意x0实际上可以是新的,或者只是从训练数据中重新采样)。这给了我们每个训练观察的类别标签的权重;我们基本上对训练观察的类标签进行加权和求和,以获得预测的类x0. 对于具有线性内核的 SVM,如下所示:

f(x0)=sgn(i=1nαiyixix0+b)

注意我们可以看到b作为截距(根据训练观察估计),以及α作为训练观察的权重(1,,n)。xi(预测变量值的向量)和yi(取值 -1 或 1)在训练样本中被简单地观察到,并且x0是新观察的观察到的预测变量值。