列车测试拆分后对不平衡数据的欠采样

时间:2020-05-22 16:18:56

标签: machine-learning resampling train-test-split

我是机器学习的新手,目前正在处理数据不平衡的项目。 我想使用随机欠采样来平衡数据。 我很困惑,如果我应该在测试火车分割后进行欠采样,还是应该先进行一次欠采样然后再进行火车测试分割?

我的方法: 1.我使用了训练测试拆分来获得:X_train,y_train进行训练以及X_test和y_test进行测试。 2.我将X_train和y_train合并为一个数据集,并进行了欠采样。 3.欠采样后,我根据F1得分并使用X_test。,Y_test进行预测以进行交叉验证和模型选择。

我的方法正确吗? 如果我错了,请纠正我。

1 个答案:

答案 0 :(得分:2)

让我们来看看您的方法:

我使用火车测试拆分获得:X_train,y_train进行训练以及X_test和y_test进行测试。我将X_train和y_train合并为一个数据集,并进行了欠采样。

是的。任何重采样技术都应应用在火车上。这将确保测试集能够反映实际情况。在这样的测试集上获得的模型性能将很好地估计您模型的泛化能力。如果对整个数据集执行重新采样,则模型的性能将过于乐观。

欠采样后,我根据F1进行了交叉验证和模型选择

很难理解没有这些代码到底做了什么,但是看来您已经对已经重新采样的火车数据进行了交叉验证。这是错误的,并且应该在交叉验证期间对每个测试折叠进行欠采样。让我们考虑应采用的三折简历:

  1. 火车套分为3折。训练使用2折,测试使用1折。
  2. 您在这2折上应用重采样,训练模型,然后在未修改的1折上估算性能。
  3. 重复步骤1-2,直到将每一折用作测试集为止。

因此,您应该做的是: 1.在训练和测试中拆分数据。 2.在您的火车上进行简历。仅在测试折叠上应用欠采样。 3.在CV的帮助下选择了模型之后,对训练集进行欠采样并训练分类器。 4.估计未修改测试集的性能。