3

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

4

2 回答 2

7

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

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

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

于 2013-05-05T02:15:55.690 回答
5

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

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

于 2013-04-10T21:29:54.087 回答