【问题标题】:Running h2o Grid search on R在 R 上运行 h2o 网格搜索
【发布时间】:2018-12-22 00:14:32
【问题描述】:

我在 R 上运行 h2o 网格搜索。该模型是使用伽马分布的 glm。 我使用以下设置定义了网格。 hyper_parameters = list(alpha = c(0, .5), missing_values_handling = c("Skip", "MeanImputation"))

                                 h2o.grid(algorithm = "glm",                            # Setting algorithm type
                                 grid_id = "grid.s",                                    # Id so retrieving information on iterations will be easier later
                                 x = predictors,                                        # Setting predictive features
                                 y = response,                                          # Setting target variable
                                 training_frame = data,                                 # Setting training set
                                 validation_frame = validate,                           # Setting validation frame
                                 hyper_params = hyper_parameters,                       # Setting apha values for iterations
                                 remove_collinear_columns = T,                          # Parameter to remove collinear columns
                                 lambda_search = T,                                     # Setting parameter to find optimal lambda value
                                 seed = 1234,                                           # Setting to ensure replicateable results
                                 keep_cross_validation_predictions = F,                 # Setting to save cross validation predictions
                                 compute_p_values = F,                                  # Calculating p-values of the coefficients
                                 family = 'gamma',                                      # Distribution type used
                                 standardize = T,                                       # Standardizing continuous variables
                                 nfolds = 2,                                            # Number of cross-validations
                                 fold_assignment = "Modulo",                            # Specifying fold assignment type to use for cross validations
                                 link = "log") 

当我运行上述脚本时,我收到以下错误: hyper_names[[index2]] 中的错误:下标超出范围

请你帮我找出错误在哪里

【问题讨论】:

标签: r h2o grid-search hyperparameters


【解决方案1】:

正如在 cmets 中讨论的那样,如果没有样本 datacode,很难判断导致 error 的原因是什么。 out-of-bounds error 可能是因为 code 正在尝试访问 input 中不存在的值。因此,它可能是inputsh2o.grid() 中的任何一个。我会检查trainvalidation 数据集中的列和行。问题中的hyperparametersfamily="binomial" 运行良好。

下面的codeglm() 运行良好。我做了几个假设,例如:(1)family=binomial 而不是family=gamma 是基于sample data 创建的,(2)响应ybinary,(3)traintest split ratio,(4)responses 的数量限制为三个predictorsindependent variablesx1x2x3),(5)一个binary response variable (y`)。

导入库

library(h2o)
library(h2oEnsemble)

创建样本数据

x1 <- abs(100*rnorm(100))
x2 <- 10+abs(100*rnorm(100))
x3 <- 100+abs(100*rnorm(100))
#y <- ronorm(100)
y <- floor(runif(100,0,1.5))
df <- data.frame(x1, x2, x3,y)
df$y <-  ifelse(df$y==1, 'yes', 'no')
df$y <- as.factor(df$y)
head(df)

初始化h2o

h2o.init()

准备data 所需的h2o 格式

df <- as.h2o(df)
y <- "y"
x <- setdiff( names(df), y )
df<- df[ df$y %in% c("no", "yes"), ]
h2o.setLevels(df$y, c("no","yes") )

# Split data into train and validate sets
data <- h2o.splitFrame( df, ratios = c(.6, 0.15) )
names(data) <- c('train', 'valid', 'test')
data$train

设置parameters

grid_id <- 'glm_grid'
hyper_parameters <- list( alpha = c(0, .5, 1),
                          lambda = c(1, 0.5, 0.1, 0.01),
                          missing_values_handling = c("Skip", "MeanImputation"),
                          tweedie_variance_power = c(0, 1, 1.1,1.8,1.9,2,2.1,2.5,2.6,3, 5, 7),
                          #tweedie_variance_power = c(0, 1, 1.1,1.8,1.9,2,2.1,2.5,2.6,3, 5, 7),
                          seed = 1234

)

适合h2o.grid()

h2o.grid(
  algorithm = "glm", 
  #grid_id = grid_id,
  hyper_params = hyper_parameters,
  training_frame = data$train, 
  validation_frame = data$valid, 
  x = x, 
  y = y,
  lambda_search = TRUE,
  remove_collinear_columns = T,
  keep_cross_validation_predictions = F,
  compute_p_values = F,
  standardize = T,
  nfolds = 2,
  fold_assignment = "Modulo",

  family = "binomial"     
)

输出

【讨论】:

    猜你喜欢
    • 2016-06-10
    • 1970-01-01
    • 2018-08-27
    • 2017-04-12
    • 1970-01-01
    • 2019-01-30
    • 2018-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多