h2o交叉验证预测摘要中对AUC NaN值的解释

时间:2019-02-15 14:55:04

标签: r cross-validation h2o glm auc

我注意到,在以下情况下运行

train=as.h2o(u)
mod = h2o.glm(family= "binomial", x= c(1:15), y="dc",  
       training_frame=train, missing_values_handling = "Skip",
       lambda = 0, compute_p_values = TRUE, nfolds = 10,
       keep_cross_validation_predictions= TRUE)

对于该模型的某些简历迭代,AUC的交叉验证指标摘要中存在NaN。

例如:

print(mod@model$cross_validation_metrics_summary["auc",])

交叉验证指标摘要:

          mean         sd cv_1_valid cv_2_valid cv_3_valid cv_4_valid cv_5_valid cv_6_valid cv_7_valid cv_8_valid cv_9_valid cv_10_valid

auc 0.63244045 0.24962118       0.25  0.6666667  0.8095238        1.0  0.6666667 0.46666667        NaN        NaN        1.0         0.2

当我设置较小的nfolds = 7时,简历中的NaN出现频率降低。

应该如何解释这些NaN值?何时进行交叉验证输出?

我想这会在无法正确评估AUC的情况下发生。我的训练集有70条完整的行。

这样的AUC交叉验证结果(包含NaNs)是否可以认为是可靠的?

1 个答案:

答案 0 :(得分:3)

在某些情况下,计算ROC曲线时可能除以零,这可能导致AUC为NaN。由于数据量太小,您可能会遇到一些折叠,但没有真正的积极意义,并且会导致此问题。

我们可以通过保留fold列然后对每个折叠中的dc值进行计数来进行测试:

-p="YourProfileName"

我们看到带有NaN的折叠与只有dc = 0的折叠相同。

不计算NaN,折叠的多种AUC(从0.2到1)告诉我们这不是一个可靠的模型,可能会过拟合。您可以添加更多数据吗?