欠采样技术在训练与测试集的应用:是否需对测试集执行TomekLinks操作
结论
不需要对测试集执行相同的欠采样操作,所有类别不平衡相关的采样手段(包括欠采样、过采样、SMOTE类混合采样),都仅应该作用于训练集,训练完成的模型直接作用于完整测试集即可。
原因解释
首先要明确fit()+transform类的通用数据变换,和欠采样类训练辅助手段的本质差异:
- 你提到的标准化、编码、降维这类需要先
fit()再执行transform()的操作,属于对特征空间的统一映射,不会改变样本的分布代表性,所以需要用训练集学习映射规则后,同步应用到测试集,保证训练和预测的特征空间一致,避免数据偏差。 - 而
TomekLinks这类定向欠采样,本质是类别不平衡场景下的训练优化手段:它通过删除训练集中多数类的边界噪声样本、重叠样本,人为修正训练数据的类别分布,避免模型训练过程中被多数类样本带偏,和特征空间的统一变换完全不是一个逻辑。
错误操作的后果
如果你强行对测试集也执行欠采样,相当于人为修改了测试集的真实类别分布,最终得到的准确率、召回率、F1值等所有评估指标都无法反映模型在真实业务场景下的表现:真实环境中待预测数据的类别比例和你拆分得到的原始测试集完全一致,不会是欠采样后的人为调整比例。
正确执行流程
- 第一步先拆分原始数据集得到训练集、测试集,所有采样操作必须在数据集拆分之后执行,避免数据泄露
- 仅对拆分后的训练集做
TomekLinks欠采样,用处理后的训练数据完成模型训练 - 测试集不做任何采样处理,直接输入训练完成的模型做预测,得到的评估结果才具备业务参考价值
内容的提问来源于stack exchange,提问作者MarkS
相关产品推荐
相关产品推荐

