gpt4 book ai didi

r - 如何使用 h2o.predict 预测时间序列的 future 值

转载 作者:行者123 更新时间:2023-11-30 08:42:17 25 4
gpt4 key购买 nike

我正在阅读《使用 R 进行时间序列分析》一书,但我一直停留在使用机器学习 h2o 包的示例上。我不知道如何使用 h2o.predict 函数。在示例中,它需要 newdata 参数,在本例中是测试数据。但是,如果您实际上不知道这些值,如何预测时间序列的 future 值?

如果我只是忽略 newdata 参数,我会得到:缺少 newdata 参数的预测尚未实现。

library(h2o)

h2o.init(max_mem_size = "16G")


train_h <- as.h2o(train_df)
test_h <- as.h2o(test_df)
forecast_h <- as.h2o(forecast_df)


x <- c("month", "lag12", "trend", "trend_sqr")
y <- "y"

rf_md <- h2o.randomForest(training_frame = train_h,
nfolds = 5,
x = x,
y = y,
ntrees = 500,
stopping_rounds = 10,
stopping_metric = "RMSE",
score_each_iteration = TRUE,
stopping_tolerance = 0.0001,
seed = 1234)

h2o.varimp_plot(rf_md)

rf_md@model$model_summary

library(plotly)

tree_score <- rf_md@model$scoring_history$training_rmse
plot_ly(x = seq_along(tree_score), y = tree_score,
type = "scatter", mode = "line") %>%
layout(title = "Random Forest Model - Trained Score History",
yaxis = list(title = "RMSE"),
xaxis = list(title = "Num. of Trees"))

test_h$pred_rf <- h2o.predict(rf_md, test_h)

test_1 <- as.data.frame(test_h)

mape_rf <- mean(abs(test_1$y - test_1$pred_rf) / test_1$y)
mape_rf

最佳答案

H2O-3 不支持传统时间序列算法(例如 ARIMA)。相反,建议将时间序列用例视为监督学习问题并执行特定于时间序列的预处理。

例如,如果您的目标是预测商店明天的销售额,您可以将其视为回归问题,其中您的目标是销售额。然而,如果您尝试在原始数据上训练监督学习模型,您的表现很可能会很差。因此,诀窍是添加历史属性(例如滞后)作为预处理步骤。

如果我们在未更改的数据集上训练模型,平均绝对误差约为 35%。

enter image description here

如果我们开始添加历史特征,例如该商店前一天的销售额,我们可以将平均绝对误差降低到大约 15%。

enter image description here

虽然 H2O-3 不支持滞后,但您可以利用气泡水来执行此预处理。您可以使用 Spark 生成每组的滞后,然后使用 H2O-3 训练回归模型。以下是此过程的示例:https://github.com/h2oai/h2o-tutorials/tree/master/best-practices/forecasting

关于r - 如何使用 h2o.predict 预测时间序列的 future 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56666876/

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