在应用无泄漏交叉验证之前预处理特征

Pre-processing features before applying cross-validation without leakage

我想通过交叉验证进行一些预处理(缩放、特征工程,例如目标编码)。我知道最好和理论上正确的方法是为交叉验证的每个 train/test 步骤分别预处理数据。

但是,我使用的是 H2O,除非我弄错了,否则它不允许我创建预处理管道。

A​​ h2o documentation page on target encoding 提供了一种解决方法,以避免从训练折叠泄漏到验证折叠:"The target average is calculated on the out of fold data to prevent overfitting." 因此,对给定折叠的预处理会排除来自该折叠的数据。

在我看来,这避免了从训练样本到测试样本的泄漏,但反之似乎并非如此。

我可以安全地使用此解决方法(提供#observations >> #features)还是我应该寻找另一个允许预处理管道(或手动进行交叉验证)的框架?

为了防止过度拟合,您可以将训练集的 hold_out 参数设置为 "KFOLD",测试集的参数设置为 "None"。

有关更多详细信息,我建议您关注目标编码文档的 Holdout Type 部分。