【问题标题】:H2O Deep Learning R [closed]H2O 深度学习 R [关闭]
【发布时间】:2016-07-25 20:23:46
【问题描述】:

H2O 深度学习默认运行回归,即使我已确保目标变量是一个因素(只有两个水平)。有关如何解决此问题的任何线索?

下面是代码:

dnn_mod <- 
  h2o.deeplearning(x = 2:321,  # column numbers for predictors
                   y = 322,   # column number for label
                   training_frame = sdcs_data, # data in H2O format
                   activation = "TanhWithDropout", # or 'Tanh'
                   input_dropout_ratio = 0.2, # % of inputs dropout
                   hidden_dropout_ratios = c(0.3,0.3,0.3), # % for nodes dropout
                   balance_classes = FALSE, 
                   hidden = c(150,150,150),
                   epochs = 500,
                   #standardize = TRUE,
                   epsilon = 1.0e-5,
                   loss = "CrossEntropy",
                   stopping_rounds = 50,
                   stopping_metric = "AUC")
                   #classification = TRUE)

【问题讨论】:

  • “正在运行回归”是什么意思?
  • 默认运行回归模型而不是分类。 CrosseEntropy 损失等参数在这种情况下没有意义并引发错误。
  • 所以不要设置 loss="CrossEntropy"....
  • 我认为这不是重点。问题不是错误,而是 H2O 没有运行分类。
  • 一些数据和一些代码会很好,又名reproducible example

标签: r machine-learning h2o


【解决方案1】:

如果您想运行分类,那么您的响应变量必须编码为“因子”(又名“枚举”)类型。从H2O Deep Learning booklet 看到这个R code example。这是所有 H2O 算法的情况。

【讨论】:

  • 根据我的问题,我已经确保响应被编码为“因素”。
  • 您确定第 322 列是响应列吗?请粘贴h2o.describe(sdcs_data[,322])h2o.getTypes(data)[[322]] 的输出。它应该说“枚举”。
  • 此外,您可以显式设置distribution = "bernoulli",如果您错误地没有将您的响应转换为一个因子,那么您将看到一条包含以下内容的消息:"bernoulli distribution is not allowed for regression."
  • 最后,如果您看到错误"For CrossEntropy loss, the response must be categorical.",则表示您尚未将响应转换为因子。
猜你喜欢
  • 2017-01-02
  • 1970-01-01
  • 2017-12-25
  • 2015-08-17
  • 2015-12-31
  • 1970-01-01
  • 2020-03-06
  • 2016-10-14
  • 2017-01-05
相关资源
最近更新 更多