使用 h2o.gbm() 重复运行
Replicated runs with h2o.gbm()
我需要在 h2o.gbm 函数中使用相同的超参数复制 运行 个结果不同的结果。
即使我创建了一个循环,为每个配置提供双 运行s,并且这个 h2o gbm 模型的结果 运行s 正在使用 h2o.performance 函数提取;我刚刚意识到每个双胞胎 运行 都有完全相同的结果。
如果 运行 使用相同超参数的两个 h2o.gbm 模型得到不同的结果,你对我有什么建议?
我尝试过的事情:
- h2o.shutdown 和 h2o.init 已尝试使用不同的 nthreads
- h2o.gbm 中的种子参数已更改并删除
- 删除 score_tree_interval 和 stopping_round 个参数
所有这些尝试都失败了,两个具有相同超参数的 运行 给出了完全相同的结果。此外,我正在分享一个示例超参数配置,我想通过 运行 两次获得不同的结果。
h2o.gbm(x = x_col_names, y = y,
training_frame = train_h2o,
fold_column = "index_4seasons",
ntrees = 1000,
max_depth = 5,
learn_rate = 0.1,
stopping_rounds = 5,
score_tree_interval = 10,
seed = 1)
如有任何帮助和评论,我们将不胜感激。
种子值会稍微改变结果。请参阅下面的演示,使用文档中的示例时 MSE
会发生变化。
# Import the prostate dataset into H2O:
train_h2o = h2o.import_file("http://s3.amazonaws.com/h2o-public-test-data/smalldata/prostate/prostate.csv")
# Set the predictors and response; set the factors:
train_h2o["CAPSULE"] = train_h2o["CAPSULE"].asfactor()
x_col_names = ["ID","AGE","RACE","DPROS","DCAPS","PSA","VOL","GLEASON"]
y = "CAPSULE"
# Build and train first model:
pros_gbm1 = H2OGradientBoostingEstimator(
nfolds = 5, ntrees = 1000, max_depth = 5, learn_rate = 0.1,
stopping_rounds = 5, score_tree_interval = 10, seed = 1)
pros_gbm1.train(x = x_col_names, y = y,
training_frame = train_h2o)
# Build and train the second model with only seed number changed:
pros_gbm2 = H2OGradientBoostingEstimator(
nfolds = 5, ntrees = 1000, max_depth = 5, learn_rate = 0.1,
stopping_rounds = 5, score_tree_interval = 10, seed = 123456789)
pros_gbm2.train(x = x_col_names, y = y,
training_frame = train_h2o)
print('Model 1 MSE:', pros_gbm1.mse())
print('Model 2 MSE:', pros_gbm2.mse())
输出
Model 1 MSE: 0.020725291770552916
Model 2 MSE: 0.02189654172905499
如果您的数据集使用不同的种子和硬件设置提供可重现的结果,可能是因为它不够大或不够复杂,无法让模型随机运行。您也可以尝试更改 fold_column
中的折叠,看看是否有影响。
我需要在 h2o.gbm 函数中使用相同的超参数复制 运行 个结果不同的结果。
即使我创建了一个循环,为每个配置提供双 运行s,并且这个 h2o gbm 模型的结果 运行s 正在使用 h2o.performance 函数提取;我刚刚意识到每个双胞胎 运行 都有完全相同的结果。
如果 运行 使用相同超参数的两个 h2o.gbm 模型得到不同的结果,你对我有什么建议?
我尝试过的事情:
- h2o.shutdown 和 h2o.init 已尝试使用不同的 nthreads
- h2o.gbm 中的种子参数已更改并删除
- 删除 score_tree_interval 和 stopping_round 个参数
所有这些尝试都失败了,两个具有相同超参数的 运行 给出了完全相同的结果。此外,我正在分享一个示例超参数配置,我想通过 运行 两次获得不同的结果。
h2o.gbm(x = x_col_names, y = y,
training_frame = train_h2o,
fold_column = "index_4seasons",
ntrees = 1000,
max_depth = 5,
learn_rate = 0.1,
stopping_rounds = 5,
score_tree_interval = 10,
seed = 1)
如有任何帮助和评论,我们将不胜感激。
种子值会稍微改变结果。请参阅下面的演示,使用文档中的示例时 MSE
会发生变化。
# Import the prostate dataset into H2O:
train_h2o = h2o.import_file("http://s3.amazonaws.com/h2o-public-test-data/smalldata/prostate/prostate.csv")
# Set the predictors and response; set the factors:
train_h2o["CAPSULE"] = train_h2o["CAPSULE"].asfactor()
x_col_names = ["ID","AGE","RACE","DPROS","DCAPS","PSA","VOL","GLEASON"]
y = "CAPSULE"
# Build and train first model:
pros_gbm1 = H2OGradientBoostingEstimator(
nfolds = 5, ntrees = 1000, max_depth = 5, learn_rate = 0.1,
stopping_rounds = 5, score_tree_interval = 10, seed = 1)
pros_gbm1.train(x = x_col_names, y = y,
training_frame = train_h2o)
# Build and train the second model with only seed number changed:
pros_gbm2 = H2OGradientBoostingEstimator(
nfolds = 5, ntrees = 1000, max_depth = 5, learn_rate = 0.1,
stopping_rounds = 5, score_tree_interval = 10, seed = 123456789)
pros_gbm2.train(x = x_col_names, y = y,
training_frame = train_h2o)
print('Model 1 MSE:', pros_gbm1.mse())
print('Model 2 MSE:', pros_gbm2.mse())
输出
Model 1 MSE: 0.020725291770552916
Model 2 MSE: 0.02189654172905499
如果您的数据集使用不同的种子和硬件设置提供可重现的结果,可能是因为它不够大或不够复杂,无法让模型随机运行。您也可以尝试更改 fold_column
中的折叠,看看是否有影响。