【发布时间】:2015-06-26 04:26:03
【问题描述】:
我正在使用 LIBSVM 对数据进行分类。我主要是做一类分类。
我的训练集仅包含一个类的数据,而我的测试数据包含两个类的数据(一个属于目标类,另一个不属于目标类)。
在训练和测试数据集上应用 svmtrain 和 svmpredict 后,训练集的准确率为 48%,测试集的准确率为 34.72%。
好吃吗?我如何知道 LIBSVM 是否正确分类数据集?
【问题讨论】:
标签: libsvm
我正在使用 LIBSVM 对数据进行分类。我主要是做一类分类。
我的训练集仅包含一个类的数据,而我的测试数据包含两个类的数据(一个属于目标类,另一个不属于目标类)。
在训练和测试数据集上应用 svmtrain 和 svmpredict 后,训练集的准确率为 48%,测试集的准确率为 34.72%。
好吃吗?我如何知道 LIBSVM 是否正确分类数据集?
【问题讨论】:
标签: libsvm
要说它是否好,完全取决于您尝试分类的数据。您应该针对您的分类搜索 SVM 模型的最新准确度,然后您将能够知道您的模型是否良好。
从您的结果中我可以说的是,测试准确度比训练准确度差,这是正常的,因为分类器通常在处理之前已经看到的数据时表现更好。
您现在可以尝试使用正则化参数(如果您使用的是线性内核,则为 C)并查看测试集的性能是否有所提高。
您还可以跟踪学习曲线以查看您的分类器是否过拟合,这将帮助您选择是否需要增加或减少正则化。
对于您的情况,您可能希望对类应用权重,因为数据通常很稀疏,有利于反例。
要了解 Libsvm 是否正确分类数据集,您可以查看它预测正确的示例以及错误预测的示例。然后您可以尝试更改您的功能以改善其结果。
如果您担心自己的代码是否正确,可以尝试编写一个玩具示例并使用它,或者使用网络上某人的示例并复制他们的结果。
【讨论】: