我想做一个有 6 个类的多类分类。整个数据集有 12750 个和 56 个特征样本,因此每个类有 2125 个样本。在预测之前,我通过 Winsorization 减少了异常值的数量(对于 1% 和 99%),并通过 Yeo-Johnson 变换减少了偏度大于 1 且小于 -1 的特征的偏度,我得到了数据集:
https://i.stack.imgur.com/miy8i.png
后来,当然,我将数据集拆分为 80% 的训练数据和 20% 的测试数据,并对训练数据进行了标准化。我尝试使用随机森林、xgboost 和决策树分类器,但我在训练集上的准确度几乎为 100%,在测试集上的准确度为 20-21%。像增加 n_estimators 这样的方法没有帮助。
所以,我的问题是:
如何减少这种过度拟合?是数据集的问题(我应该减少类似的特征数量吗?)还是分类器的问题(对于这个问题来说它们太弱了吗?)
对于这个问题,数据集是否太小(我应该通过 SMOTE 之类的方法添加更多样本吗?)?班级的样本太少而不能很好地工作吗?
调整超参数后是否有可能获得至少 60% 的准确率(例如通过 GridSearchCV 之类的方法)?
PS 我要补充一点,与目标值的相关性非常差(最大值 +- 6%),我看到随机森林的特征重要性值在 0.0 到 0.03 之间。我不知道这是不是正常情况。
PS2 我尝试更改 n_estimators 参数(值从 5 到 1500)和 max_depth(从 1 到 100),我可以看到测试精度的变化非常差(+-3%)