- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 h2o
包试验深度学习二元分类器。当我构建模型然后在一些新的(保留的)数据集上使用 h2o.predict
时,我注意到对于某些行,Predict
输出与值不匹配概率最高。
这是一个可重现的例子,改编自 h2o's deeplearning tutorial :
library(h2o)
h2o.init(nthreads=-1, max_mem_size="2G")
h2o.removeAll()
df <- h2o.importFile(path = "https://raw.githubusercontent.com/h2oai/h2o-tutorials/master/tutorials/data/covtype.full.csv")
splits <- h2o.splitFrame(df, c(0.6,0.2), seed=1234)
train <- h2o.assign(splits[[1]], "train.hex") # 60%
valid <- h2o.assign(splits[[2]], "valid.hex") # 20%
test <- h2o.assign(splits[[3]], "test.hex") # 20%
response <- "Cover_Type"
predictors <- setdiff(names(df), response)
train$bin_response <- ifelse(train[,response]=="class_1", 0, 1)
train$bin_response <- as.factor(train$bin_response) ##make categorical
# apply same transforms to test
test$bin_response <- ifelse(test[,response]=="class_1", 0, 1)
test$bin_response <- as.factor(test$bin_response)
dlmodel <- h2o.deeplearning(
x=predictors,
y="bin_response",
training_frame=train,
hidden=c(10,10),
epochs=0.1
#balance_classes=T ## enable this for high class imbalance
)
pred <- h2o.predict(dlmodel, test)
现在让我们操作它以将其引入 R 并添加一些新列,为简单起见使用 dplyr
:
pred_df <- bind_cols(
select(as.data.frame(test), actual = bin_response),
as.data.frame(pred)
) %>%
tbl_df %>%
mutate(
derived_predict = factor(as.integer(p1 > p0)),
match = predict == derived_predict
)
现在我认为预测应该始终与概率最高的列匹配,但情况并非总是如此:
> pred_df %>% summarize(sum(match) / n())
# A tibble: 1 x 1
sum(match)/n()
<dbl>
1 0.9691755
为什么这个值不正好是 1?在我最近运行的上述代码中,p0
和 p1
值非常接近
> pred_df %>% filter(!match)
# A tibble: 3,575 x 6
actual predict p0 p1 derived_predict match
<fctr> <fctr> <dbl> <dbl> <fctr> <lgl>
1 1 1 0.5226679 0.4773321 0 FALSE
2 0 1 0.5165302 0.4834698 0 FALSE
3 0 1 0.5225683 0.4774317 0 FALSE
4 0 1 0.5120126 0.4879874 0 FALSE
5 1 1 0.5342851 0.4657149 0 FALSE
6 0 1 0.5335089 0.4664911 0 FALSE
7 0 1 0.5182881 0.4817119 0 FALSE
8 0 1 0.5094492 0.4905508 0 FALSE
9 0 1 0.5309947 0.4690053 0 FALSE
10 0 1 0.5234880 0.4765120 0 FALSE
# ... with 3,565 more rows
但这仍然不能解释为什么 h2o.predict
选择可能性较小的值。
我是不是做错了什么?这是h2o中的错误吗? h2o 在选择预测时是否有意使用比它在此处呈现给我的信息更多的信息?
有趣的是,使用我的 derived_predict
产生了稍微高一点的准确率:
> pred_df %>%
+ summarize(
+ original = sum(actual == predict) / n(),
+ derived = sum(actual == derived_predict) / n()
+ )
# A tibble: 1 x 2
original derived
<dbl> <dbl>
1 0.7794946 0.7827452
最佳答案
我遇到了同样的问题。试图解释预测值与 p1 值的关系。
H2O 默认使用最大 F1 分数进行分类。使用 p1 列,您可以指定自己的阈值。
看文档不是很明显。但你可以在 R 小册子中找到它。奇怪的是,在 de DRF、GBM 或深度学习手册中没有。
关于r - h2o.deeplearning 中的意外预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39046032/
我正在尝试使用 tensorflow 进行语音识别。 我有输入作为波形和单词作为输出。 波形看起来像这样 [0,0,0,-2,3,-4,-1,7,0,0,0...0,0,0,20,-11,4,0,0,
我正在使用 h2o 包试验深度学习二元分类器。当我构建模型然后在一些新的(保留的)数据集上使用 h2o.predict 时,我注意到对于某些行,Predict 输出与值不匹配概率最高。 这是一个可重现
在 https://deeplearnjs.org/index.html#demos ,它表示 API 将作为“dl”提供,这是该网站的打印屏幕: 但是当我尝试放置 var math = new d
所以现在我正在痛苦地探索使用 Deep Learning 4j 特别是 RL4j 和强化学习的深度学习。我在教我的电脑如何玩贪吃蛇方面相对不成功,但我坚持了下来。 无论如何,我遇到了一个无法解决的问题
我正在完成深度学习特化的第一门类(class),其中第一项编程任务是从头开始构建逻辑回归模型。由于这是我第一次从头开始构建模型,而且我花了一些时间来消化高等数学,所以我有很多错误。其中,我发现了一个我
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 9 年前。 Improve this ques
我是一名优秀的程序员,十分优秀!