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

时间:2016-02-26 14:11:19

标签: machine-learning cross-validation

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

例如,我有5倍的F1值

<input type="submit" name="Submit" value="Submit" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("Submit", "", true, "submit", "", false, false))" id="Submit" class="btn btn-info"/>

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

  • 我可以将null取为0或仅输出null作为平均结果。
  • 或者,我只能定义四个值并除以4,但这也不正确,因为如果有一个系统在这个折叠上做了0.1,那么它的性能会比那个但是,0.1比null好得多。

1 个答案:

答案 0 :(得分:2)

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

  • 如果发生null因为cv-fold在某种程度上未定义问题,那么你可以忽略它(例如,通过调用np.nanmean。大概,对于“现实生活”,你不会有一个等同于这种折叠的数据集。

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

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

    • 可能出现最坏情况的平均值(f1 score确实为0),如果您发现给定的集合发生故障,并输出一些任意结果(在这种情况下,你可能会使用np.nan_to_num)。

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