【问题标题】:Pre-processing features before applying cross-validation without leakage应用交叉验证前的预处理功能,无泄漏
【发布时间】:2019-01-29 19:08:38
【问题描述】:

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

但是,我使用的是 H2O,除非我弄错了,否则我无法创建预处理管道。

h2o documentation page on target encoding 提供了一种解决方法,以避免从训练折叠泄漏到验证折叠:“目标平均值是根据折叠数据计算的,以防止过度拟合。”因此,对给定折叠的预处理会从该折叠中排除数据。

在我看来,这避免了从训练样本到测试样本的泄漏,但相反的情况似乎并不正确。

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

【问题讨论】:

    标签: cross-validation h2o feature-extraction


    【解决方案1】:

    为防止过度拟合,您可以将hold_out 参数设置为训练集的“KFOLD”和测试集的“无”。

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

    【讨论】:

    • 谢谢劳伦,这正是我所指的方法。但它与传统方法不同,传统方法是为交叉验证的每个步骤重新计算特征(有一个保留折叠),我想知道可能的后果。
    • 嗨@PierreC,此方法目前仅用于训练和验证拆分。如果您通过设置nfolds 参数触发自动交叉验证,您肯定会遇到泄漏问题。最好的办法是进行仔细的手动交叉验证,或者尽量确保您的关卡数量不会太低。
    • 感谢劳伦的这些澄清
    猜你喜欢
    • 2019-03-11
    • 1970-01-01
    • 2018-10-22
    • 2020-09-10
    • 2018-07-07
    • 2022-11-23
    • 2019-10-02
    • 2015-12-13
    • 2018-07-04
    相关资源
    最近更新 更多