我已经阅读了“信息泄漏”一词,当人们试图通过使用机器学习模型中的测试集来估计泛化误差时会发生这种情况。但是,我找不到任何可以帮助我澄清为什么会发生这种情况的形式主义(数学或统计数据)。有人能解释一下这个词指的是什么吗?
使用测试集时存在信息泄漏是什么意思?
机器算法验证
数据泄露
泛化错误
2022-04-03 08:54:47
1个回答
当您的测试集的预测变量中有信息在模型“实时”时不可用时,就会发生数据泄漏。有严重和微妙的数据泄露案例。
骇人听闻的案件。
假设目标是预测第一年保单的保留情况。在第 3 个月,与公司代表进行了预定的签到,签到后数据元素had_check_in
从 翻转False
到True
。一名初级建模师正在使用过去两年的信息处理横截面数据集(无时间维度),并且has_check_in
是变量之一。建模者得出结论,这个变量非常重要,因为当它是 时True
,投保人更有可能在整个研究期间保留保单。显然,它包含来自未来的信息,并且在模型的实时运行中,所有had_check_in
值都将False
用于新的群组!
微妙的情况。 假设现在初级建模师正在从上一个错误中吸取教训,以时间维度处理上述问题。他选取了一组 2000 名保单持有人(所有时间),并使用其余保单持有人的保留值来构建一个模型,该模型除其他变量外,还使用月份和年份。然后他在这个测试集上运行预测以获得保持指标。虽然这不太可能是一场灾难,但可以从训练集的成员那里了解到特定月份和年份的信息泄露。在预测场景中,您无法从实际投保人那里估计未来时间段的属性,因此保留指标可能是乐观的。
我在实践中见过这两种情况,但微妙的情况更为常见。使用 sklearn 等的自动交叉验证例程让我犹豫不决,因为我觉得这些情况通常需要仔细考虑。
其它你可能感兴趣的问题