0

我正在尝试使用二进制支持向量机对一些像素进行分类。我的训练数据库由 28 个数据文件组成,有两个类,class1 的像素数为 16571,class2 的像素数为 313。

测试数据(每个文件)大约有 600 个像素,其中只有 6-10 个像素属于 2 类,其余像素属于 1 类。

我的问题是,在训练之后,当我尝试对数据进行分类时,SVM 会对 class1 中的所有像素进行分类。

我认为这可能是因为它从 class2 中看到的样本很少。但可用数据文件的数量有限(大约 35 个数据文件)。

如何训练 svm 并获得合理的结果?

谢谢您的帮助。

4

1 回答 1

0

SVM 可能确实对训练集大小的巨大差异很敏感。我建议尝试以下两种方法:

  1. 通过抽样限制第 1 类的训练集,使其大小与第 2 类的大小差不多,并检查是否有任何改进(可能适合第 2 类大小的 1X 到 10X 之间的大小)。

  2. 使用SVM 的'cost' 参数(例如,在SVMLight中使用'J' 参数),它可以帮助平衡类。

您当然可以同时使用这两种方法,即在一定程度上限制类 1 的训练数据的大小,然后使用成本参数进一步平衡类。

于 2012-09-10T13:09:38.597 回答