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

时间:2013-04-10 19:07:40

标签: machine-learning svm

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

2 个答案:

答案 0 :(得分:7)

对于线性SVM,分离超平面确实可以明确计算并保存为模型。换句话说,使用线性SVM模型的预测严格地要求输入空间中的超平面。 许多专门的线性软件包正是这样做的(LIBLINEAR,SVMPERF,PEGASOS,...)。即使您不需要支持向量知识来预测线性SVM,知道支持向量仍可能具有各种用途。

当使用非线性内核使用SVM进行预测时,故事是完全不同的,因为分离超平面可能是无限维的(例如,当使用RBF内核时)。在特征空间中计算超平面本身甚至是不可能的,但是超平面和特征空间中的测试点之间的内积可以通过支持向量和测试点之间的内核评估来计算。这就是所谓的内核技巧

支持线性和非线性内核的大多数通用软件包都倾向于以相同的方式保存所有模型(例如LIBSVM)。这意味着线性模型以测试点和支持向量之间的内积存储和评估,就像非线性模型一样。显然,这比线性SVM更复杂。即使在训练线性SVM时,绝大多数人也使用SVM的通用包而不是专用的线性包。这可能是许多人错误地认为线性SVM的预测总是依赖于支持向量的原因。

答案 1 :(得分:5)

你是对的,预测时间不依赖于线性SVM的数据。这是因为预测变量只是测试向量和学习权重向量之间的点积。

保持支持向量是没有意义的,否则任何人都会感到困惑:)。如果由于某种原因你想知道后来支持向量是什么,你可以通过评估训练数据上的分类器轻松找到。所有被错误预测或具有绝对值小于1的SVM输出值的训练数据样本都是支持向量。