【问题标题】:libsvm multiclass classification - does imbalance in training data matterlibsvm 多类分类 - 训练数据的不平衡是否重要
【发布时间】:2014-09-08 20:27:41
【问题描述】:

我在 Matlab 中使用 libsvm 对具有 5 个类的数据集进行分类。这里的数据是二维的,但我认为这并不重要。

每个类的测试数据量是平衡的。对于训练数据,当我为每个类使用 5 个训练样本时,分类结果很好。但是,当我将一个类(比如第 2 类)的训练数据数量从 5 更改为 10 时,分类准确度很差,尤其是第 2 类。

我使用的代码很简单:

model = svmtrain2(trainLabels, trainData ); 
[LabelSVM] = svmpredict2(testLabels, testData, model);

是因为svmtrain2 中有我应该指定的选项吗?还是其他原因造成的?谢谢。

【问题讨论】:

  • 看看this question 是否有帮助。基本上有一些方法可以在 scikit-learn(建立在 libsvm 上)中处理数据集中的不平衡,但似乎没有一个方法可以直接通过 libsvm 获得。您可以自己滚动,但 scikit-learn 选项似乎运行良好。
  • 你能给出数据的二维图吗?也许我们可以提取一些有用的信息来帮助你解决问题。
  • 您好,我上传了数据,没什么特别的。带圆圈的数据是训练数据。我仍然不明白为什么训练数据中的一个小不平衡会导致严重的问题。

标签: matlab machine-learning svm libsvm


【解决方案1】:

看看来自 LIBSVM 的this svm guide。这是一个很好的介绍 - 要获得更快的解决方案,请参阅第 1.2 节(如果您还没有阅读全文,最好阅读全文)。

基本上,确保你已经扩展了你的数据(同时测试和训练)并且你必须调整你的内核参数,这可能是Cγ .

我还认为,如果每个类只有 5 个数据点,您将不会获得非常可靠的性能。 SVM 很容易过拟合数据。

【讨论】:

  • 嗨,其实我的数据很容易分类(见图)。即使每个课程的培训少于 5 次,LDA 也可以轻松地达到 95% 以上的总体水平。在我看来,这里的缩放可能不是问题......
猜你喜欢
  • 2013-06-11
  • 2014-09-23
  • 2017-05-26
  • 2014-10-14
  • 2011-01-25
  • 1970-01-01
  • 2015-01-28
  • 1970-01-01
  • 2021-04-14
相关资源
最近更新 更多