选择什么停止指标来优化 H2O 中 GBM 的“灵敏度”?

数据挖掘 机器学习 分类 r 交叉验证 gbm
2022-02-10 17:41:06

我正在预测一种疾病,并希望在我的验证和测试集上获得预测值的最高灵敏度分数。

可以使用什么停止指标来优化验证集的敏感度得分?

我有大约 400 个观察结果。响应变量是二进制 (0/1),我有 40 个预测变量。

我当前的设置使用 AUC 作为停止指标。

df <- as.h2o(df)
split <- h2o.splitFrame(data=df, ratios=c(0.6, 0.2)) # split 60, 20, 20%
train <- h2o.assign(split[[1]], "train.hex") # 60%
valid <- h2o.assign(split[[2]], "valid.hex") # 20%
test <- h2o.assign(split[[3]], "test.hex") # 20%

x <- setdiff(names(df), "disease")
y <- "disease"

gbm <- h2o.gbm(
  x = x, 
  y = y, 
  training_frame = train, 
  validation_frame = valid,
  ntrees = 10000,                                                            
  learn_rate=0.01,     
  # Stopping parameters                                                    
  stopping_rounds = 5, stopping_tolerance = 1e-4, stopping_metric = "AUC", 
  sample_rate = 0.8,                                                       
  col_sample_rate = 0.8,                                                   
  seed = 1234,                                                             
  nfolds = 50,
  score_tree_interval = 10                                                 
)
h2o.auc(h2o.performance(gbm, valid = TRUE)) 
1个回答

在解决@Jurgy 提到的问题的情况下,使召回更重要的一种解决方案是使用Fβ, 的修改版本F1考虑召回的地方β时间更重要。如此处所示:https ://en.wikipedia.org/wiki/F1_score ,Fβ可以根据召回/精度和 I 型/II 型错误来制定。然后你需要选择一个β基于召回对您来说更重要的程度……这可以通过考虑 I 类错误的成本与 II 类错误的成本来完成。