LibSVM-具有不平衡数据的多类分类



我尝试使用libsvm和3D描述符来执行对象识别。到目前为止,我有7类物体,每个类别我都有它的物体数量(和它的重量):

类别1。492(14%)

类别2。574(16%)

类别3。738(21%)

类别4.164(5%)

类别5.369(10%)

类别6.123(3%)

类别71025(30%)

所以我总共有3585个物体。

我遵循了libsvm的实用指南。此处提醒:

A。扩展培训和测试B.交叉验证C.培训D.测试

我将数据分为训练和测试两部分。通过进行5个交叉验证过程,我能够确定良好的C和Gamma。

然而,我获得了较差的结果(CV约为30-40,准确率约为50%)。

然后,我在思考我的数据,发现我有一些不平衡的数据(例如第4类和第6类)。我发现在libSVM上有一个关于权重的选项。这就是为什么我现在想设置好的重量。

到目前为止,我正在做这个:

svm-train -c cValue -g gValue -w1 1 -w2 1 -w3 1 -w4 2 -w5 1 -w6 2 -w7 1

然而,结果是一样的。我确信这不是一个好方法,这就是为什么我请你帮忙。我看到了一些关于这个主题的主题,但它们与二元分类有关,而不是多类分类。我知道libSVM是在做"一对一"(所以是一个二进制分类器),但当我有多个类时,我不知道该怎么处理。

你能帮帮我吗?

提前感谢您的帮助。

我以前也遇到过同样的问题。我还试着给它们不同的重量,但没有奏效。

我建议您使用数据集的子集进行训练。

尝试使用数量大致相等的不同类示例。您可以使用所有类别4和6的样本,然后每隔一个类别提取大约150个样本。

我用了这个方法,准确度确实提高了。希望这对你有帮助!

相关内容

  • 没有找到相关文章

最新更新