1

我们正在开展一个机器学习项目,希望了解某些在线样本嵌入方法对 SVM 的影响。

在此过程中,我们尝试与Pegasosdlib进行交互,并设计(并尝试编写)我们自己的 SVM 实现。

dlib 似乎很有希望,因为它允许与用户编写的内核交互。然而内核并没有给我们想要的“在线”行为(除非这个假设是错误的)。

因此,如果您知道支持在线嵌入和自定义编写嵌入器的 SVM 库,那将有很大帮助。


只是为了清楚“在线”。

为了避免大量内存使用,嵌入过程必须在线进行,这一点至关重要。

我们基本上想在 Stochastic subGradient Decent 中执行以下操作(在非常通用的伪代码中):

w = 0 vector
for t=1:T
  i = random integer from [1,n]

  embed(sample_xi)

  // sample_xi is sent to sub gradient loss i as a parameter
  w = w - (alpha/t)*(sub_gradient(loss_i))
end
4

2 回答 2

2

我认为在您的情况下,您可能需要考虑Wang、Crammer、Vucetic的大规模 SVM 训练 (BSGD) [1]的预算随机梯度下降

这是因为,正如有关“内核化诅咒”的论文中所述,您可能想要探索此选项,而不是您在问题的伪代码中指出的内容。

Shark 机器学习库实现了 BSGD。在此处查看快速教程

于 2015-05-11T09:39:28.170 回答
0

也许您想使用 dlib 的经验内核映射之类的东西。您可以阅读它的文档,尤其是示例程序以了解其功能的详细信息,但基本上它可以让您将样本投影到内核特征空间中某个基组的范围内。dlib 中甚至还有迭代构建基组的算法,这可能就是您要问的。

于 2015-05-11T23:34:26.440 回答