我从h2o.predict和h2o.mojo_predict_df得到了对同一测试数据集的不同预测。当进行比较时-粗略地说,50%的记录具有相同的概率,但50%的记录不同,其中一些记录的概率变化很大=例如,同一类的概率为0.88到0.55。
所使用的建模算法是h2o.gbm和h2o.download_mojo(gbm_model,get_genmodel_jar = T)
我正在努力研究,发现了更多有类似问题的帖子,但没有解决方案:
Reproduce predictions with MOJO file of a H2O GBM model
Why do I get different predictions with MOJO?
目前使用的代码如下:
# h2o start the cluster
h2o.init(nthreads=10,min_mem_size = '80g')
# variables
predictors=c(1:76,78:681)
response=77
# getting datasets ready
model_ready_df = model_ready_df %>% mutate_if(is.character,as.factor)
train.h2o = as.h2o(model_ready_df)
poc_test = poc_test %>% mutate_if(is.character,as.factor)
test.h2o <- as.h2o(poc_test)
# build model
gbm_model <- h2o.gbm(x = predictors, y =response, training_frame = train.h2o , seed = 0xDECAF,ntrees = 1000, max_depth = 4,
learn_rate = 0.1,stopping_rounds=50,min_rows = 50,distribution = "bernoulli",ignore_const_col=F,
histogram_type='QuantilesGlobal',sample_rate=0.7,col_sample_rate=0.7,keep_cross_validation_models = T)
# save model object
h2o.download_mojo(gbm_model,get_genmodel_jar = T)
# predict
preds=as.data.frame(h2o.predict(gbm_model,test.h2o))
preds2=h2o.mojo_predict_df(poc_test, 'GBM_model_R_1576045840818_1.zip',genmodel_jar_path = 'h2o-genmodel.jar',verbose = F)
# save
fwrite(preds,"pred_usual.csv")
fwrite(preds2,"pred_mojo.csv")示例

发布于 2020-04-24 08:59:01
csv f将数据帧转换为h2o.mojo_predict_d,然后实质上运行h2o.mojo_predict_csv。因此,在编写和解析变量的过程中,某些变量的格式可能会在csv中被错误地写入,从而导致结果不同。一个例子是R中的科学记数法,如果您的数字显示为e+10。当这些格式被写入csv时,格式会变得混乱。使用options(scipen=999)对此进行纠正,然后运行mojo函数。结果应该是相同的。
https://stackoverflow.com/questions/59281114
复制相似问题