h2o glrm的奇怪行为

时间:2017-03-23 20:47:47

标签: r h2o

我正在使用H2O GLRM构建二进制推荐系统(附带示例数据文件)。我根据recommendermeetup的建议使用了当前版本的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")`

我注意到列车和测试装置显示相同的分类错误。它是对的还是潜在的错误?

1 个答案:

答案 0 :(得分:1)

使用h2o.insertMissingValues时,您也要更改原始数据集。创建两个单独的h2o实例然后只更改一个,应该可以解决问题。

train <-- as.h2o(A)
test <-- as.h2o(A)
h2o.insertMissingValues(train, fraction = 0.2, seed=-1)