支持不平衡数据的SVM


15

我想尝试在数据集中使用支持向量机(SVM)。但是在尝试问题之前,我曾警告过SVM在极端不平衡的数据上不能很好地执行。就我而言,我最多可以有95-98%的0和2-5%的1。

我试图找到有关在稀疏/不平衡数据上使用SVM的资源,但我能找到的只是“ sparseSVM”(使用少量支持向量)。

我希望有人可以简要解释一下:

  1. SVM对这种数据集的预期效果如何
  2. 如果有的话,必须对SVM算法进行修改
  3. 哪些资源/论文对此进行了讨论

Answers:


15

许多SVM实现通过为正实例和负实例分配不同的权重来解决此问题。本质上,您需要对样品进行称重,以使阳性的权重之和等于阴性的权重之和。当然,在对SVM进行评估时,必须记住,如果95%的数据为负数,则始终预测为负数就可以达到95%的精度。因此,您必须确保评估指标也得到加权,以使其达到平衡。

特别是在中libsvm,您将其添加为标签,其中有一个标志,可让您设置类的权重(-w我相信,但是请检查docs)。

最后,根据个人经验,我可以告诉您,无论有无权重校正,SVM都会产生非常相似的结果。


击败我吧:-)
Marc Claesen 2014年

@Bitwise我有同样的问题,即数据不平衡,并且我得到了99%的准确度。我在libsvm中使用了权重。您提到评估指标也必须加权。我想知道我们如何加权评估指标。
Hani Goc '16

1
90/100=0.90.50/10+90/90=0.5

7

SVM在稀疏和不平衡数据上可以正常工作。类加权SVM旨在通过为少数类的训练实例分配更高的错误分类惩罚来处理不平衡数据。


5

在这种稀疏数据的情况下,SVM将可以很好地工作。

如@Bitwise所述,您不应使用准确性来衡量算法的性能。

相反,您应该计算算法的精度,召回率F分数


您能否扩大您的推理范围?另外,一旦(测试集)分类完成,您将如何测量F分数?谢谢
Spacey 2014年

要在测试集上测量FScore,您需要对其进行手动分类,然后使用手动数据与预测数据来计算召回率和精度。您希望我扩展什么,为什么SVM可以处理稀疏数据?
alexandrekow

是的,为什么SVM可以处理稀疏数据也很好。谢谢
Spacey

“仅具有稀疏特征就不会对SVM造成任何问题。一种查看方式是,您可以对坐标轴进行随机旋转,这将使问题保持​​不变并提供相同的解决方案,但是会使数据完全非稀疏(这部分是随机投影如何工作”(stats.stackexchange.com/questions/23470/...
alexandrekow
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.