我从事二进制分类任务。数据集非常小~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 网格搜索超参数到具有强正则化的范围?