首页 > 解决方案 > 训练数据的高精度召回,但分类问题中的测试数据非常差

问题描述

我对 ML 很陌生,我正在尝试为不平衡的二进制类构建一个分类器来解决现实生活中的问题。我尝试了各种模型,如逻辑回归、随机森林、ANN 等,但每次我得到非常高的精度和召回率(大约 94%)的训练数据和非常差的(大约 1%)测试或验证数据。我有 53 个特征和 97094 个数据点。我尝试调整超参数,但据我了解,以当前的精度和对测试和验证数据的召回率,它也无济于事。谁能帮我理解可能出了什么问题。谢谢你。

rf = RandomForestClassifier(bootstrap=True, class_weight={1:0.80,0:0.20}, criterion='entropy',
                       max_depth=2, max_features=4, 
                       min_impurity_decrease=0.01, min_impurity_split=None,
                       min_weight_fraction_leaf=0.0, n_estimators=10,
                       n_jobs=-1, oob_score=False, random_state=41, verbose=0,
                       warm_start=False)
rf.fit(X_train, y_train)

结果 所选特征相互关联所有特征与目标相关

标签: machine-learningclassification

解决方案


如果没有看到您正在使用的实际数据或代码,很难说,但您的模型可能过度拟合到您的训练数据集或多数类。

如果您的模型过度拟合您的训练数据集,它会学习记住您的实际训练数据集。它不再发现任何对数据进行分类的一般区别,但它的分类边界非常接近训练数据。您应该考虑使用不太复杂的模型(例如限制随机森林中树的数量)、删除一些特征(例如开始仅使用 53 个特征中的 3 个)、正则化或数据增强。请参阅此处了解更多针对训练数据过度拟合的技术,以及此处了解过度拟合和欠拟合的示例。

如果您的模型只是过度适合您的多数类(例如,99% 的数据具有相同的类),那么您可以尝试在训练期间对少数类进行过采样。


推荐阅读