我正在使用H2O GLRM构建二进制推荐系统(附带示例数据文件)。我根据recommender和meetup的建议使用了当前版本的H2O,3.10.3.6。
我从另一个数据集(train.nomiss)生成了一个火车(train.wmiss),允许20%的缺失值。列车数据集中的所有列都是二进制因子(用N,Y编码)。
我试图使用以下命令来适应glrm:
#generate a train and a test set
train.h2o.wmiss<-h2o.insertMissingValues(train.h2o, fraction = 0.2) #train has 20% missing value
train.h2o.nomiss<-as.h2o(train) #test has no missing value
glrm_k <- 3
glrm_cols <- colnames(train.h2o.nomiss)
ncols<-h2o.ncol(train.h2o.nomiss)
#fitting a logistic GLRM
base_glrm <- h2o.glrm(training_frame = train.h2o.wmiss, cols = glrm_cols, k = glrm_k,
validation_frame = train.h2o.nomiss, seed = 1,
loss_by_col=rep("Logistic",ncols),
regularization_x = "Quadratic", regularization_y = "Quadratic", gamma_x = 0.1, gamma_y = 0.1, transform = "NONE", impute_original = TRUE,
model_id = "myglrm")`
我注意到列车和测试装置显示相同的分类错误。它是对的还是潜在的错误?
答案 0 :(得分:1)
使用h2o.insertMissingValues时,您也要更改原始数据集。创建两个单独的h2o实例然后只更改一个,应该可以解决问题。
train <-- as.h2o(A)
test <-- as.h2o(A)
h2o.insertMissingValues(train, fraction = 0.2, seed=-1)