为什么H2O增益/提升表中只有16行?应该如何解释它们?

时间:2018-06-29 18:41:04

标签: r h2o

最新的H2O文档指出:“数据通过响应概率的分位数阈值分为几组。请注意,默认组数为20;如果唯一概率值少于20,则组数为减少到唯一分位数阈值的数量。” http://docs.h2o.ai/h2o/latest-stable/h2o-docs/flow.html#interpreting-the-gains-lift-chart

但是,实际上,即使在输入数据中有20个以上的唯一概率值时,也仅生成16行,并且不清楚如何解释它们。

即使在直接从h2o.gainsLift()帮助页面获取的以下示例代码中,您也可以看到此代码:

library(h2o)
h2o.init()
prosPath <- system.file("extdata", "prostate.csv", package="h2o")
hex <- h2o.uploadFile(prosPath)
hex[,2] <- as.factor(hex[,2])
model <- h2o.gbm(x = 3:9, y = 2, distribution = "bernoulli",
                                 training_frame = hex, validation_frame = hex, nfolds=3)
h2o.gainsLift(model)              ## extract training metrics. Note that there are only 16 rows in the Gains/Lift Table.
h2o.gainsLift(model, valid=TRUE)  ## extract validation metrics (here: the same)
h2o.gainsLift(model, xval =TRUE)  ## extract cross-validation metrics
h2o.gainsLift(model, newdata=hex) ## score on new data (here: the same)
# Generating a ModelMetrics object
perf <- h2o.performance(model, hex)
h2o.gainsLift(perf)               ## extract from existing metrics object. Note that there are still only 16 rows in the Gains/Lift Table.

# There are 380 unique predicted probability values, which is greater than 20. 
length(unique(as.data.frame(h2o.predict(model, hex))$p1))

此外,我倾向于认为这些行不代表16个平均分位数,因为此页面上显示的“增益/提升”的“合理性检查”包括不均匀的分档:https://github.com/h2oai/h2o-3/blob/master/h2o-r/tests/testdir_jira/runit_pubdev_2372_gainLift.R

请参阅该页面上的第36行,我相信其中已定义垃圾箱。它们显示为: 概率= c(0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.85,0.9,0.95,0.96,0.97,0.98,0.99)

我如何理解“收益/升降”表上显示的内容?我可以自定义正在显示的n-tile箱吗?理想情况下,我希望看到10个垃圾箱。

谢谢。

1 个答案:

答案 0 :(得分:1)

文档应该说16个小组而不是20个小组(最初的默认值是20个小组,但此后已更新)。我为您可以遵循的问题制作了一张吉拉票:https://0xdata.atlassian.net/browse/PUBDEV-5709?filter=-2

在不触摸Java代码的情况下不能更改分位数,但是可以对感兴趣的累积数据部分(请查看cumuluative_data_fraction列)进行子集化(增益提升表为您提供了比所需更多的信息) )。