考虑一个数据集A,其中包含用于训练二进制分类问题的示例。由于数据集高度不平衡,我使用了 SVM 并应用了加权方法(在 MATLAB 中)。我已将权重应用为与每个类中数据的频率成反比。这是在训练中完成的。我使用了 10 折交叉验证进行训练。训练后,我得到了混淆矩阵A:
80025 1
0 140
其中第一行是多数类,第二行是少数类。只有 1 个假阳性 (FP),并且所有少数类示例都已正确分类,给出真阳性 (TP) = 140。
问题:我使用更多数据点再次训练。B然后,我在训练期间从未见过的新的看不见的测试数据集上运行经过训练的模型。这是用于测试的混淆矩阵B。
50075 0
100 0
可以看出,少数类根本没有被分类,因此权重的目的已经失效。虽然没有 FP,但 SVM 无法捕获少数类示例。我没有在 . 上应用任何重量或平衡方法B。什么可能是错误的以及如何克服这个问题?