当使用不平衡的数据集(例如,欺诈检测)执行分类(例如,逻辑回归)时,最好在对少数类进行过度采样之前对特征进行缩放/zscore/标准化,还是在缩放特征之前平衡类?
其次,这些步骤的顺序是否会影响最终如何解释特征(当使用所有数据,缩放+平衡,来训练最终模型时)?
下面是一个示例:
规模优先:
- 将数据拆分为训练/测试折叠
- 使用所有训练(不平衡)数据计算平均值/标准;使用这些计算缩放训练数据
- 在训练数据中对少数类进行过采样(例如,使用 SMOTE)
- 将逻辑回归模型拟合到训练数据
- 使用平均值/标准计算来缩放检验数据
- 使用不平衡的测试数据预测类别;评估 acc/recall/precision/auc
先过采样
- 将数据拆分为训练/测试折叠
- 在训练数据中对少数类进行过采样(例如,使用 SMOTE)
- 使用平衡训练数据计算平均值/标准;使用这些计算缩放训练数据
- 将逻辑回归模型拟合到训练数据
- 使用平均值/标准计算来缩放检验数据
- 使用不平衡的测试数据预测类别;评估 acc/recall/precision/auc
您可能隐含了它的意思,但您还需要应用 mean/std 来缩放训练数据,这需要在拟合模型之前发生。
除了这一点,这个问题没有明确的答案。最好的办法是简单地尝试两者,看看哪个最适合您的数据。
为了您自己对结果数据的模型的理解,您可能希望改为计算少数类和多数类的平均值和标准差。如果他们有类似的统计数据,那么我们预计先缩放或先过度抽样之间不会有太大区别。
如果均值和标准差非常不同,则结果可能会有很大差异。但这也可能意味着问题的分离度更大,并且您可能期望更高的分类准确性。
由于欠采样和过度采样技术通常依赖于使用数据点之间欧氏距离的 k-NN 或类似 k 均值的算法,因此在重新采样之前进行缩放更安全。然而,在现实生活中,顺序几乎无关紧要。