我一直在尝试使用各种分类器对数据集进行建模。响应是高度不平衡的(二进制),我有数值和分类变量,所以我在训练集上应用了 SMOTENC 和随机过采样方法。此外,我使用了一个验证集来通过 GridSearchCV() 调整模型参数。由于精度和召回率对我来说都很重要,我使用f1来找到最佳模型。
我应该注意,我通过聚类分析选择了这三个子集,并通过分层 train_test_split() 从每个聚类中提取样本;所以我更有信心子集有更多的相似性。
由于决策树和随机森林或提升技术的复杂性,我通常在训练集上得到高拟合(高 f1 分数),在验证集上相对较高,但在测试集上中等到低。
过度拟合的一般标志是训练集和测试集(或我的问题中的验证集和测试集)之间的巨大差异;但我很困惑如何在以下情况下选择最佳模型:
案例A:训练契合度非常高;但是验证集和测试集的拟合度很低但彼此接近
案例 B:训练、验证和测试拟合相似;但远低于案例 A。
F1 Score
Model Train Val Test
----------------------------------------
A: SVC 80.1 60.3 37.5
B: MLPClassifier: 43.2 40.0 39.1
我知道案例 A 可能是最好的模型,但是不能保证对新数据产生类似的结果,但是对于过度拟合,您选择哪种模型?(假设两个模型的准确率和召回率相似)