最近我一直在考虑在交叉验证方案中正确使用编码。通常建议的编码特征的方法是:
- 将数据拆分为训练和测试(保留)集
- 在火车组上安装编码器(或
LabelEncoder或)OneHotEncoder - 使用拟合编码器转换训练集和测试集。
据称这种方式可以防止任何数据泄露。然而,这似乎在交叉验证过程中经常被忽略。假设我正在对上述火车集进行交叉验证。如果我对训练集进行编码然后执行交叉验证,它并不能真正模仿上述步骤。那么编码不应该在“内部”交叉验证中执行吗?例如,假设我们执行 5 折交叉验证,我们不应该在每个交叉验证步骤中将编码器拟合到 4 折并在第 5 折进行转换吗?我相信这是通常在目标编码中所做的,但不是真正的标签或单热编码。
因此,我的问题是:
- 如果我们真的想防止过度拟合,我是否需要在每个交叉验证步骤中将编码器安装在 4 折上而不是在第 5 次验证折上?
- 如果不是,为什么在处理训练和测试(保持)集时真的有必要执行前面提到的所有 3 个步骤?