支持不平衡数据的 SVM

机器算法验证 支持向量机 libsvm 不平衡类
2022-02-11 09:47:00

我想尝试在我的数据集上使用支持向量机 (SVM)。不过,在我尝试解决这个问题之前,有人警告我 SVM 在极其不平衡的数据上表现不佳。就我而言,我可以有多达 95-98% 的 0 和 2-5% 的 1。

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

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

  1. 预计 SVM 对此类数据集的处理效果如何
  2. 必须对 SVM 算法进行哪些修改(如果有)
  3. 什么资源/论文讨论了这个
3个回答

许多 SVM 实现通过为正面和负面实例分配不同的权重来解决这个问题。本质上,您对样本进行称重,以使正样本的权重之和等于负样本的权重之和。当然,在评估 SVM 时,您必须记住,如果 95% 的数据是负数,那么通过始终预测负数来获得 95% 的准确率是微不足道的。所以你必须确保你的评估指标也被加权,以使它们保持平衡。

特别是在libsvm您作为标签添加的 中,有一个标志允许您设置类权重(-w我相信,但请查看文档)。

最后,根据个人经验,我可以告诉你,我经常发现 SVM 在有或没有权重校正的情况下都会产生非常相似的结果。

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

在像 SVM 这样的稀疏数据的情况下,它会很好地工作。

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

相反,您应该计算算法的精度、召回率F-Score