Machine learning 支持向量机的gamma和代价参数

Machine learning 支持向量机的gamma和代价参数,machine-learning,svm,libsvm,Machine Learning,Svm,Libsvm,各位,当我使用libSVM进行一些预测时,出现了一个奇怪的现象 当我没有设置支持向量机的任何参数时,我将在测试集上获得99.9%的性能。然而,如果我设置参数'-C10-G5',我将在测试集上获得大约33%的精度 顺便说一下,我使用的SVM工具包是LibSVM 我想知道数据集是否有问题。我不知道哪个结果更有说服力 您恰好遇到了一个问题,C和gamma的默认值工作正常(分别为1和1/num_特性) gamma=5明显大于默认值。当默认值接近最佳值时,gamma=5可能会导致非常糟糕的结果。大型gam

各位,当我使用libSVM进行一些预测时,出现了一个奇怪的现象

当我没有设置支持向量机的任何参数时,我将在测试集上获得99.9%的性能。然而,如果我设置参数'-C10-G5',我将在测试集上获得大约33%的精度

顺便说一下,我使用的SVM工具包是LibSVM


我想知道数据集是否有问题。我不知道哪个结果更有说服力

您恰好遇到了一个问题,
C
gamma
的默认值工作正常(分别为1和1/num_特性)


gamma=5
明显大于默认值。当默认值接近最佳值时,
gamma=5
可能会导致非常糟糕的结果。大型
gamma
和大型
C
的组合是过度拟合的完美配方(例如,高训练集性能和低测试集性能)。

根据Marc的答案,您应该使用单独的验证集为C和g选择良好的值。或者使用grid.py(随libsvm一起提供)通过交叉验证获得这些参数。强烈建议阅读:libsvm指南确实是一个非常好的初始参考。您的意思是默认的
C
gamma
工作正常吗?考虑到现实世界的问题,我认为太高的精确度是不合适的。那么,我是否应该检查是否有任何功能失败?是的,默认的
C
gamma
恰好是良好的值。在许多实际问题中,您可以获得非常高的精度。只需确保不在训练集中评估分类器。检查任何特征是否失败是什么意思?在训练集中评估分类器实际上是一个好主意(只要你在验证集和测试集上也这样做!),因为它可以帮助你判断更多的训练数据或更好的特征是否有助于获得更好的模型,但这超出了问题的范围。@Marclaesen实际上,我怀疑是否有错误提取的特征,它直接揭示了标签的信息。