我有一个信用卡数据集,其中 98% 的交易是非欺诈交易,2% 是欺诈交易。
我一直在尝试在训练和测试拆分之前对多数类进行欠采样,并在测试集上获得非常好的召回率和精度。
当我仅对训练集进行欠采样并在独立集上进行测试时,我得到的精度非常差,但召回率相同!
我的问题是:
我是否应该在拆分为 train 和 test 之前进行欠采样,这是否会影响数据集的分布并且不能代表现实世界?
还是上述逻辑仅在过采样时适用?
我有一个信用卡数据集,其中 98% 的交易是非欺诈交易,2% 是欺诈交易。
我一直在尝试在训练和测试拆分之前对多数类进行欠采样,并在测试集上获得非常好的召回率和精度。
当我仅对训练集进行欠采样并在独立集上进行测试时,我得到的精度非常差,但召回率相同!
我的问题是:
我是否应该在拆分为 train 和 test 之前进行欠采样,这是否会影响数据集的分布并且不能代表现实世界?
还是上述逻辑仅在过采样时适用?
在训练/测试拆分之后并且仅在训练拆分中进行欠采样:您希望以某种方式“加权”您的学习算法,以防止它偏向多数类,实际上,可以应用其他技术,并且始终开启火车分裂,最终是学习算法的数据。但是......您的测试集应该代表真实的数据分布。在这种情况下,您将评估您为防止偏向多数类的算法而应用的任何技术是否最终没有影响其性能。
解决此问题的其他一些方法(欺诈与非欺诈):