我需要训练一个支持向量机模型,并且想要使用自定义的核矩阵,而不是预设的核函数(例如RBF、Poly等)。如果可能的话,我该如何在OpenCV的机器学习库中实现呢?
谢谢!
谢谢!
CvSVM :: LINEAR
并在训练SVM之前将自定义内核应用于数据。我对是否应该采取这个方向有点模糊,所以我希望有更多SVM经验的人能够发表评论。如果可以通过选择“线性”作为内核来使用“预计算内核”,那么请查看此答案以获取更多有关如何继续的想法。最后一个选项听起来有点麻烦。我建议使用scikit或SVMlight。祝您好运!问:我想使用自己的内核。 有任何例子吗? 在svm.cpp中,有两个用于内核评估的子程序:k_function()和kernel_function()。 我应该修改哪一个?
一个示例是“ LIBSVM for string data”,位于LIBSVM Tools中。
我们有两个函数的原因如下。对于RBF内核exp(-g | xi-xj | ^ 2),如果我们首先计算xi-xj,然后计算范数平方,则有3n个操作。因此,我们认为exp(-g(| xi | ^ 2-2dot(xi,xj)+ | xj | ^ 2)),并通过在开始时计算所有| xi | ^ 2来将操作数减少到2n。这是用于培训的。对于预测,我们无法这样做,因此需要使用常规子例程使用该3n操作。拥有自己的内核最简单的方法是通过替换任何内核将相同的代码放入这两个子例程中。
如果你不是非常依赖OpenCV的SVM功能,可以看一下shogun工具箱......里面有很多SVM技巧。