我们正在开展一个机器学习项目,我们希望看到某些在线样本嵌入方法对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
答案 0 :(得分:2)
我认为在您的情况下,您可能需要考虑 Wang,Crammer,Vucetic
的大规模SVM培训(BSGD)[1]的预算随机梯度下降这是因为,正如文章中关于"内核诅咒"您可能想要探索此选项,而不是您在问题中的伪代码中指出的内容。
Shark Machine Learning Library实现了BSGD。查看快速教程here
答案 1 :(得分:0)
也许你想使用类似dlib的empirical kernel map之类的东西。您可以阅读它的文档,尤其是示例程序,了解其功能的详细信息,但基本上它可以让您将示例投影到内核功能空间中的某些基础集的范围内。在dlib中甚至有iteratively build the basis set的算法,这可能是你要问的。