gpt4 book ai didi

r - 如何处理 H2O 算法中的偏态响应

转载 作者:行者123 更新时间:2023-12-03 15:24:59 25 4
gpt4 key购买 nike

在我的问题数据集中,响应变量非常向左倾斜。我试图用 h2o.randomForest() 拟合模型和 h2o.gbm()如下。我可以给调min_split_improvementmin_rows避免在这两种情况下过度拟合。但是使用这些模型,我看到尾部观察的误差非常高。我试过使用 weights_column对尾部观察进行过采样并对其他观察进行过采样,但这无济于事。

h2o.model <- h2o.gbm(x = predictors, y = response, training_frame = train,valid = valid, seed = 1,
ntrees =150, max_depth = 10, min_rows = 2, model_id = "GBM_DD", balance_classes = T, nbins = 20, stopping_metric = "MSE",
stopping_rounds = 10, min_split_improvement = 0.0005)


h2o.model <- h2o.randomForest(x = predictors, y = response, training_frame = train,valid = valid, seed = 1,ntrees =150, max_depth = 10, min_rows = 2, model_id = "DRF_DD", balance_classes = T, nbins = 20, stopping_metric = "MSE",
stopping_rounds = 10, min_split_improvement = 0.0005)

我试过 h2o.automl() h2o 包的功能以解决问题以获得更好的性能。但是,我看到了严重的过度拟合。我不知道 h2o.automl() 中的任何参数来控制过拟合。

有谁知道避免过度拟合 h2o.automl() 的方法吗? ?

编辑
log的分布下面给出了转换后的响应。经过 Erin的建议
enter image description here

编辑2:
原始响应的分布。

enter image description here

最佳答案

H2O AutoML 在底层使用 H2O 算法(例如 RF、GBM),因此如果您无法在那里获得好的模型,您将在使用 AutoML 时遇到同样的问题。我不确定我会称之为过度拟合——更多的是你的模型在预测异常值方面做得不好。

我的建议是记录您的响应变量——当您的响应有偏差时,这是一件很有用的事情。将来,H2O AutoML 将尝试自动检测倾斜响应并记录日志,但这不是当前版本 (H2O 3.16.*) 的功能。

如果您不熟悉这个过程,这里有更多的细节。首先,创建一个新列,例如log_response ,如下并在训练时使用它作为响应(在 RF、GBM 或 AutoML 中):

train[,"log_response"] <- h2o.log(train[,response])

警告:如果您的回复中有零,您应该使用 h2o.log1p()反而。确保不要在预测变量中包含原始响应。在您的情况下,您不需要更改任何内容,因为您已经使用 predictors 明确指定了预测变量。向量。

请记住,当您记录响应时,您的预测和模型指标将在对数刻度上。因此,如果您需要将预测转换回正常规模,如下所示:
model <- h2o.randomForest(x = predictors, y = "log_response", 
training_frame = train, valid = valid)
log_pred <- h2o.predict(model, test)
pred <- h2o.exp(log_pred)

这为您提供了预测,但如果您还想查看指标,则必须使用 h2o.make_metrics() 来计算这些指标。使用新的 preds 函数而不是从模型中提取指标。
perf <- h2o.make_metrics(predicted = pred, actual = test[,response])
h2o.mse(perf)

您可以使用我上面展示的 RF、GBM 或 AutoML(它应该提供比单个 RF 或 GBM 更好的性能)来尝试这个。

希望这有助于提高模型的性能!

关于r - 如何处理 H2O 算法中的偏态响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48330026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com