我注意到,在以下情况下运行
: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)是否可以认为是可靠的?
答案 0 :(得分:3)
在某些情况下,计算ROC曲线时可能除以零,这可能导致AUC为NaN。由于数据量太小,您可能会遇到一些折叠,但没有真正的积极意义,并且会导致此问题。
我们可以通过保留fold列然后对每个折叠中的dc值进行计数来进行测试:
-p="YourProfileName"
我们看到带有NaN的折叠与只有dc = 0的折叠相同。
不计算NaN,折叠的多种AUC(从0.2到1)告诉我们这不是一个可靠的模型,可能会过拟合。您可以添加更多数据吗?