好的我认为你需要首先对你的数据进行重新采样,因为你的算法得知大部分人都没有在工作中进行过调整,如果我们只看一下你的训练数据的分布(90%不感兴趣,10%感兴趣),那就是这样。您的算法只是假设答案总是“不感兴趣”。这就是为什么你在训练集上达到高精度的原因。
在您的测试数据中,分布变为50%:50%。您的算法仍然假设所有人都“不感兴趣”并且无法预测感兴趣的人。 (您的测试设置的准确度降低到大约50%)
重新取样您的训练数据,以匹配训练集中的50%:50%分布。有不同的重采样方法可供选择。一些例子是:
的 欠采样: 强> 通过删除项目对大多数类进行下采样。在你的情况下,它将是(10%感兴趣,10%没有交叉)。缺点是你只能学习20%的可用训练数据。
的 过采样: 强> 通过添加冗余点来对少数类进行上采样。优点:您将使用所有数据。 缺点:可能导致过度拟合。
的 SMOTE: 强> 更复杂的过采样方法,可以添加合成样本。
我会尝试开始使用简单的over-并检查这是否解决了您的问题。
对于python,你可以使用所谓的 不平衡学习 包,其中包含所有声明的方法。