【问题标题】:Kernel methods for large scale dataset大规模数据集的核方法
【发布时间】:2010-11-02 08:38:48
【问题描述】:

由于两个实例之间的内积计算,基于内核的分类器通常需要 O(n^3) 的训练时间。为了加快训练速度,可以预先计算内积值并将其存储在二维数组中。然而当没有。的实例非常大,比如超过 100,000,将没有足够的内存来执行此操作。

那么有什么更好的办法吗?

【问题讨论】:

  • 我不知道你在说什么。这里有没有其他人理解这一点,也许可以向我解释一下?
  • '基于内核的分类器'是一种机器学习算法,可以在(输入 -> 输出)数据上进行训练,以预测他们以前从未见过的输入值的输出值。提问者很担心,因为算法似乎随着(输入,输出)对的数量而严重扩展。

标签: arrays machine-learning classification computation


【解决方案1】:

对于支持向量机的现代实现,训练算法的缩放取决于许多因素,例如训练数据的性质和您使用的内核。 O(n^3) 的比例因子是一个分析结果,在预测 SVM 训练在现实世界中的比例时并不是特别有用。例如,SVMLight 使用的训练算法的经验估计将针对训练集大小的缩放比例设为approximately O(n^2)

我建议您在kernel machines forum 中提出这个问题。我认为你更有可能得到比 Stack Overflow 更好的答案,后者更像是一个通用编程网站。

【讨论】:

    【解决方案2】:

    相关向量机具有顺序训练模式,您无需将整个内核矩阵保存在内存中。您基本上可以一次计算一列,确定它是否相关,否则将其丢弃。不过,我自己的运气并不好,而且 RVM 还有一些其他问题。在高斯过程领域很可能有更好的解决方案。我并没有真正坐下来,但我看到有人提到它的在线算法。

    【讨论】:

      【解决方案3】:

      我不是数值分析师,但是你需要做普通最小二乘线性回归的QR decomposition不也是O(n^3)吗?

      无论如何,您可能需要搜索文献(因为这是相当新的东西),以了解您正在使用的算法的在线学习或主动学习版本。一般的想法是要么丢弃远离决策边界的数据,要么首先不包括它们。危险在于您可能会陷入错误的局部最大值,然后您的在线/主动算法将忽略可以帮助您退出的数据。

      【讨论】:

        猜你喜欢
        • 2017-08-22
        • 1970-01-01
        • 2016-02-02
        • 2012-01-16
        • 2010-11-18
        • 2016-01-03
        • 2013-06-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多