我们正在进行一个机器学习项目,我们希望在该项目中了解某些在线样本嵌入方法对 SVM 的影响。
在此过程中,我们尝试与 Pegasos 进行交互和 dlib以及设计(并尝试编写)我们自己的 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
最佳答案
我认为在您的情况下,您可能需要考虑用于大规模 SVM 训练 (BSGD) 的预算随机梯度下降 [1]作者:Wang、Crammer、Vucetic
这是因为,正如关于“内核化诅咒”的论文中所指定的那样,您可能想要探索此选项,而不是您在问题的伪代码中指出的内容。
Shark Machine Learning Library实现 BSGD。查看快速教程here
关于c++ - 适合在线嵌入的SVM库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30163734/