为什么 SVM 模型存储支持向量,而不仅仅是分离超平面?

数据挖掘 支持向量机
2022-03-10 19:50:01

在 SVM 的每一个解释中,我们都展示了训练如何找到一个最能分离数据的超平面。大概然后为了推断,你只需检查一个点在平面的哪一侧。

然而,所有“SVM 的缺点”帖子 [ 1 , 2 ] 都感叹 SVM 模型又大又慢,因为它们最终将大部分数据存储为支持向量。

为什么 SVM 会存储任何数据,而不仅仅是分离超平面的(系数)?(无论如何,当两个类的点都分散在超平面的两侧时,在软边距情况下,什么是“支持向量”?)

2个回答

超平面是支持向量的线性组合。在软保证金情况下,只有有限的松弛量;每个输入都不是支持向量。在非线性情况下,分离的超曲面可能嵌入在无限维空间中,无法存储。借用维基百科的文章,法线向量w是(谁)给的

w=iciyiϕ(xi)

在哪里ϕ是特征嵌入函数,并且ci是一个拉格朗日对偶变量,对于边距正确一侧的点为零。相反,测试点通过核函数进行分类k(xi,xj)=ϕ(xi),ϕ(xj)像这样:

xsgn(w,ϕ(x)+b)sgn(b+iciyik(xi,x))

注意我们是如何避免显式计算的w.

如果我能得到一些关于生成超平面方程的帮助,我将不胜感激。我需要为超平面生成一个方程,我有两个自变量和一个二元因变量。

关于 svm 的以下等式,f(x)=sgn( sum_i alpha_i K(sv_i,x) + b )

我有两个自变量(比如 P 和 Q),每个变量有 130 个点值。我使用 svm 径向基函数进行二元分类(0 和 1)并计算径向基核化情况,现在我有一列 51 y (i) alpha (i) 或(双系数),两列 51 sv (支持向量)用于 P 和 Q,以及一个单个值用于 b 。我使用 scikit SVC 收到了这些。

https://scikit-learn.org/stable/modules/svm.html

那么,我现在如何生成方程呢?我可以将每个变量 P 和 Q 的 51 y (i) alpha (i) 或 (双系数) 与 51 sv (支持向量) 相乘,这样我就有 P 和 Q 的两个系数,因此我的方程最终显示为:f (x)=sgn( mP + nQ +b) 其中 m =(P 的 51 sv 与 51 个对偶系数的乘积)之和,n =(Q 的 51 sv 与 51 个对偶系数的乘积)之和。我将不胜感激任何建议。提前谢谢了。