具有未定义值的交叉验证性能聚合

Cross-Validation Performance Aggregation with Undefined Values

我想知道在交叉验证中计算多次平均性能的正确方法是什么。

例如,我有 5 个 F1 的值

[0.5 0.3 0.25 null 0.7]

这个系统的平均F1是多少?

这真的取决于上下文。 (在下文中,我包括了对 numpy 的引用,仅供将来使用它的人参考。)

  • 如果 null 发生是因为 cv-fold 在某种程度上未定义该问题,那么您可以忽略它(例如,通过调用 np.nanmean。大概,对于 "real life",你只是不会有一个数据集相当于这样的折叠。

  • 如果 null 发生是因为预测器完全失败了,那么结果可能是(这是 你的 解释的问题):

    • nan,因为整体预测器行为未定义(在这种情况下,您可能只使用 np.mean)。

    • 最坏情况的平均值(对于 f1 score), if you'd spot for a given set that it's malfunctioning, and output just some arbitrary result (in this case, you might use np.nan_to_num 确实为 0)。


到目前为止,您能做的最好的事情 就是找出这个值的原因,然后消除它。理想情况下,这应该永远不会发生,并且可能应该被视为一个错误;在解决bug之前,请考虑一下您的估算器不适合性能估算。