训练罕见事件后 SVM 的性能不佳

数据挖掘 机器学习 分类 支持向量机 matlab 阶级失衡
2022-02-18 13:48:29

我发现加权 SVM 是一种处理类不平衡问题的分类方法。我的数据集与罕见事件(少数类,标记为 1)和多数类(标记为 0)高度不平衡。因此,我实施了带有分层交叉验证的监督分类加权 svm 技术,因为它们能够处理类不平衡。我为 C 参数(boxconstraint)添加了额外的调整。训练是使用 5 折交叉验证方法完成的。该方法在训练集上运行良好。训练后我得到了很好的表现。我可以这么说是因为通过查看训练后的混淆矩阵。

厘米矩阵 =

        1443          27
           0          30

通常建议使用优化的超参数重新训练。因此,我再次在整个数据集上运行训练模型(重新训练),在同一数据集上进行预测。

问题:如果我给训练有素的 SVM 模型一个高度不平衡的看不见的新数据集(该集从未被模型使用,并且是测试集),则对该数据的预测完全偏向于多数类,如下所示

cmMatrix_TestData =

        98     2
         5     0

我哪里做错了?请帮忙,我实际上没有解决类不平衡问题的方法,而几篇文章和建议提出了这两种方法,但我无法让它对我有用。

1个回答

我可以这么说是因为我再次在整个数据集上运行了训练好的模型(重新训练),并在同一数据集上进行了预测。

你似乎在这里犯了一个根本性的错误。如果您对相同的数据进行训练和测试,您的表现将不能代表模型在看不见的数据点上的表现。

确保您在不同的数据集上进行训练和测试。如果性能差异仍然存在,请确保验证数据集代表您的训练集。如果不是,这可能解释了为什么模型在验证集上表现不佳。