SVM分类器的预测计算复杂度预测

3
线性SVM的预测复杂度是多少?它的分离面只是一个超平面,因此预测时间似乎不应该取决于训练数据。同时,我读到过复杂度与支持向量数成正比。那么在训练分类器时保留所有这些支持向量的意义何在?
2个回答

7
对于线性SVM,分离超平面确实可以被计算出来并保存为模型。换句话说,使用线性SVM模型进行预测严格要求在输入空间中的超平面。许多专门的线性软件包正是这样做的(如LIBLINEAR、SVMPERF、PEGASOS等)。即使在使用线性SVM进行预测时不需要支持向量的知识,但了解支持向量仍然可能有各种用途。
当使用非线性内核预测SVM时,情况就大不相同了,因为分离超平面可能是无限维的(例如在使用RBF内核时)。在特征空间中计算超平面本身甚至可能是不可能的,但是通过支持向量和测试点之间的内核评估,可以计算特征空间中的超平面与测试点之间的内积。这就是所谓的“核技巧”。
大多数同时支持线性和非线性内核的通用软件包 tend to save all models in the same way (such as LIBSVM)。这意味着线性模型以与非线性模型相同的方式存储和评估。显然,对于线性SVM来说,这比它应该复杂得多。绝大多数人在训练线性SVM时都使用通用软件包而不是专门的线性软件包。这可能是许多人错误地认为使用线性SVM进行预测始终依赖于支持向量的原因。

5
你说得对,对于线性支持向量机(SVM),预测时间不取决于数据。这是因为预测器只是测试向量和已学习权重向量之间的点积。
保留支持向量没有意义,任何声称有意义的人都会感到困惑 :). 如果出于某种原因您希望在以后知道支持向量是什么,那么您可以通过对训练数据评估分类器来轻松找到。所有被错误预测或者SVM输出值的绝对值小于1的训练数据样本都是支持向量。

那么,如果评估测试点的公式是$f(x)=sign(\sum_{i=1}^{l}v_{i}k(x,x_{i}+b))$。这是否意味着每个维度为d的测试点的复杂度时间为O(3d)?其中包括d个权重乘法、d个点之间的乘法和d个求和。 - jessica

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接