CV 显着过拟合

数据挖掘 分类 阶级失衡 过拟合 二进制 公制
2022-02-28 14:40:00

我从事二进制分类任务。数据集非常小~1800 行和~60 列。行中没有重复项。我正在比较规范分类器中的不同分类器:随机森林、逻辑回归、增强树和 SVC。我正在通过 90%(训练)的 CV 训练超参数,其中 10% 用于测量泛化误差(测试)。数据集稍微不平衡(类比为 1 到 3),因此我对所有拆分都使用了分层折叠。我还使用 roc-auc 作为我 CV 的指标。

我得到以下 roc-auc 分数和准确性的结果:

 DummyClassifier
Train
ROC-AUC score: 0.50000
Accuracy: 0.69705
Test
ROC-AUC score: 0.50000
Accuracy: 0.69545

 LogisticRegression
Train
ROC-AUC score: 0.88459
Accuracy: 0.78666
Test
ROC-AUC score: 0.72559
Accuracy: 0.69545

 RandomForestClassifier
Train
ROC-AUC score: 1.00000
Accuracy: 0.99695
Test
ROC-AUC score: 0.81748
Accuracy: 0.80455

 XGBClassifier
Train
ROC-AUC score: 1.00000
Accuracy: 0.99949
Test
ROC-AUC score: 0.80617
Accuracy: 0.79545

 SVC
Train
ROC-AUC score: 0.89900
Accuracy: 0.83248
Test
ROC-AUC score: 0.73515
Accuracy: 0.73182

训练成绩和考试成绩之间总是存在很大差距。我显然过度拟合。我想这是行数少的结果,但我不确定该怎么做?强制 CV 网格搜索超参数到具有强正则化的范围?

1个回答

对于过度拟合的问题,您可以查看采用正则化的训练模型。例如,这个例子展示了如何规范一个 SVM。

我注意到的另一件事是您使用了“不平衡类”标签。如果是这种情况,那么准确性就不是一个很好的指标。虽然 AUC 在这方面做得很好,但我个人过去在这个指标上遇到过麻烦。我的建议是包括像 F1 分数这样的指标,最重要的是在每种情况下计算混淆矩阵。这将显示您是否比另一门课更缺一门课。如果是这种情况,您可能希望将过采样方法(例如 SMOTE)合并到您的管道中。