机器学习中Data Scaling是否应在Sampling之前执行?面向不平衡数据集
类别不平衡场景下Scaling与Sampling的执行顺序说明
核心前提
所有操作必须严格遵循无数据泄露原则,验证集、测试集的信息绝对不能提前流入训练阶段的预处理逻辑。
正确的操作顺序
- 第一步:先完成原始数据集拆分,得到训练集、验证集、测试集,验证集和测试集完全保留原始数据分布,不做任何采样操作。
- 第二步:仅对训练集执行采样操作(包括欠采样、过采样、SMOTE等各类类别平衡方法),调整训练集的类别分布。
- 第三步:基于采样完成后的训练集拟合Scaler(比如
StandardScaler、MinMaxScaler),再用拟合好的Scaler分别对训练集、验证集、测试集做特征缩放。
不建议先做Scaling再做Sampling的原因
- 如果你在拆分数据集前就做全局Scaling,相当于把测试集的均值、方差等统计信息引入了训练过程,属于典型的数据泄露,会导致最终模型的泛化能力评估结果虚高,不符合实际落地效果。
- 如果你拆分后先对原始训练集做Scaling再采样,首先会产生无效计算:如果是欠采样场景,你相当于提前给大量最终会被丢弃的样本做了无意义的缩放计算;其次如果是插值类过采样(比如SMOTE),这类方法依赖特征空间的距离度量生成新样本,提前缩放会改变特征的距离分布,生成的样本会出现偏差,影响模型效果。
特殊场景说明
如果你使用的是树类模型、树基集成模型这类本身对特征量级不敏感的算法,可以直接跳过Scaling步骤,不需要做额外处理。
内容的提问来源于stack exchange,提问作者new_bee
相关产品推荐
相关产品推荐

