【问题标题】:Prediction computational complexity of an SVM classifierSVM分类器的预测计算复杂度
【发布时间】:2013-04-02 19:05:37
【问题描述】:

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

【问题讨论】:

    标签: machine-learning svm


    【解决方案1】:

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

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

    【讨论】:

    • 所以,如果计算一个测试点的公式是 $f(x)=sign(\sum_{i=1}^{l}v_{i}k(x,x_{i} +b))$ 。这是否意味着每个维度为 d 的测试点的复杂性时间为 O(3d)。权重的 d 次乘法,点之间的 d 次乘法和 d 次总和。 ?
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-03-03
      • 2017-11-04
      • 2012-12-31
      • 2019-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-05
      • 1970-01-01
      相关资源
      最近更新 更多