libsvm 中的输出错误

Posted

技术标签:

【中文标题】libsvm 中的输出错误【英文标题】:output error in libsvm 【发布时间】:2014-01-11 20:25:00 【问题描述】:

在 ubuntu 平台上使用 Libsvm,以下是我观察到的:

shuf negativeSet.scaled |head -2000 > negativeSet.scaled.2000
cp positiveSet.scaled trainingSet
cat negativeSet.scaled.2000 >> trainingSet 
cp positiveSet.weights trainingSet.weights
head -2000 negativeSet.weights >> trainingSet.weights 
./svm-train -s 0 -t 2 -h 0 -W trainingSet.weights trainingSet

输出

optimization finished, #iter = 2525
obj = -3548.316727, rho = 1.515229
nSV = 2191, nBSV = 2152
Total nSV = 2191

使用的命令:

cp positiveSet.scaled trainingSet
cat negativeSet.scaled >> trainingSet 
cp positiveSet.weights trainingSet.weights
cat negativeSet.weights >> trainingSet.weights 
#training the data set to create a model
./svm-train -s 0 -t 2 -W trainingSet.weights trainingSet

输出

optimization finished, #iter = 1
obj = nan, rho = nan
nSV = 0, nBSV = 0
Total nSV = 0

请帮我解释一下 svm 的性能差异。

【问题讨论】:

请注意,您使用的是 C 和 gamma 的默认值,它们不太可能开箱即用。在第一种情况下,缩小启发式方法对您有所帮助,但对于使用默认参数不可行的底层优化问题,我并不感到惊讶。 我如何确定要使用的 gamma 和 C 参数,除了命中和试验?另外是否有优化 libsvm 性能的工具或方法?谢谢 您可以使用交叉验证和网格搜索,但如果您是新手,我建议您进行更多手动实验,以便了解如何更改每个参数的模型。顺便说一句,本指南是一个好的开始:csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf 【参考方案1】:

您可能需要在训练内核上尝试各种 C 和 gamma 值。此外,您的负样本似乎太大了,因此从它们中随机选取一个子集是一种更好的策略,就像您在方法 1 中所做的那样。

【讨论】:

以上是关于libsvm 中的输出错误的主要内容,如果未能解决你的问题,请参考以下文章

Python中的libsvm:出现错误

使用 LibSVM 的 Java 代码中的 Weka 错误“无法处理数字类”

带有 LIBSVM 数据错误的 Spark 决策树

优化 C、g 参数时 LIBSVM 中的网格搜索错误

喜欢 libsvm 中的一类(python)

libsvm matlab 中的 2 个错误“模型不支持概率估计和下标分配维度不匹配”