基于内核的分类器通常需要O(n ^ 3)个训练时间,因为两个实例之间的内积计算。为了加速训练,可以预先计算内积值并将其存储在二维阵列中。但是当没有。实例非常大,比如超过100,000,没有足够的内存来实现。
所以对此更好的想法?
答案 0 :(得分:1)
对于支持向量机的现代实现,训练算法的缩放取决于许多因素,例如您正在使用的训练数据和内核的性质。 O(n ^ 3)的缩放因子是分析结果,并且在预测SVM训练在实际情况中如何缩放方面不是特别有用。例如,SVMLight使用的训练算法的经验估计将训练集大小的缩放设置为approximately O(n^2)。
我建议你在kernel machines forum中提出这个问题。我认为你更有可能得到比Stack Overflow更好的答案,Stack Overflow更像是一个通用的编程站点。
答案 1 :(得分:0)
Relevance Vector Machine具有顺序训练模式,您无需将整个内核矩阵保留在内存中。您基本上可以一次计算一列,确定它是否相关,否则将其扔掉。不过,我自己也没有太多运气,RVM还有一些其他问题。在高斯过程领域,最有可能是更好的解决方案。我并没有真正满足于那些,但我已经看到了它的在线算法。
答案 2 :(得分:0)
我不是数值分析师,但不是你需要做普通最小二乘线性回归的QR decomposition O(n ^ 3)?
无论如何,你可能想要搜索你正在使用的算法的在线学习或主动学习版本的文献(因为这是相当新的东西)。一般的想法是丢弃远离决策边界的数据或者首先不包括它们。危险在于你可能会被锁定在一个糟糕的局部最大值,然后你的在线/主动算法将忽略可以帮助你离开的数据。