Я бы хотел понять значение значения (результата) функции h2o.predict () из H2o R-пакета. Я понял, что в некоторых случаях, когда столбец predict
равен 1
, столбец p1
имеет меньшее значение, чем столбец p0
. Моя интерпретация столбцов p0
и p1
относится к вероятностям для каждого события, поэтому я ожидал, когда predict=1
вероятность p1
должна быть выше, чем вероятность противоположного события (p0
), но это не всегда происходит, как я могу показать в следующем примере: использование набора данных простаты .
Вот исполняемый пример:
library(h2o)
h2o.init(max_mem_size = "12g", nthreads = -1)
prostate.hex <- h2o.importFile("https://h2o-public-test-data.s3.amazonaws.com/smalldata/prostate/prostate.csv")
prostate.hex$CAPSULE <- as.factor(prostate.hex$CAPSULE)
prostate.hex$RACE <- as.factor(prostate.hex$RACE)
prostate.hex$DCAPS <- as.factor(prostate.hex$DCAPS)
prostate.hex$DPROS <- as.factor(prostate.hex$DPROS)
prostate.hex.split = h2o.splitFrame(data = prostate.hex,
ratios = c(0.70, 0.20, 0.10), seed = 1234)
train.hex <- prostate.hex.split[[1]]
validate.hex <- prostate.hex.split[[2]]
test.hex <- prostate.hex.split[[3]]
fit <- h2o.glm(y = "CAPSULE", x = c("AGE", "RACE", "PSA", "DCAPS"),
training_frame = train.hex,
validation_frame = validate.hex,
family = "binomial", nfolds = 0, alpha = 0.5)
prostate.predict = h2o.predict(object = fit, newdata = test.hex)
result <- as.data.frame(prostate.predict)
subset(result, predict == 1 & p1 < 0.4)
Я получаю следующий вывод для результата функции subset
:
predict p0 p1
11 1 0.6355974 0.3644026
17 1 0.6153021 0.3846979
23 1 0.6289063 0.3710937
25 1 0.6007919 0.3992081
31 1 0.6239587 0.3760413
Для всех вышеприведенных наблюдений из набора данных test.hex
прогноз составляет 1
, но p0 > p1
.
Общее наблюдение, где predict=1
, но p1 < p0
:
> nrow(subset(result, predict == 1 & p1 < p0))
[1] 14
наоборот нет predict=0
где p0 < p1
> nrow(subset(result, predict == 0 & p0 < p1))
[1] 0
Вот таблица для table
информации для predict
:
> table(result$predict)
0 1
18 23
Мы используем в качестве переменной решения CAPSULE
со следующими значениями:
> levels(as.data.frame(prostate.hex)$CAPSULE)
[1] "0" "1"
Есть предложения?
Примечание : Вопрос с похожей темой: Как интерпретировать результаты h2o.predict не решает эту конкретную проблему.