R 中的预测 h2o.automl 模型
Forecast h2o.automl model in R
我第一次学习了 here 中的 R 中的 h2o 教程。我想做的是根据我没有的数据预测模型,这意味着超出测试集的未来日期。
数据是时间序列,在测试集上的预测是这样的:
print(automl.error.tbl)
# A time tibble: 10 x 5
# Index: Time
Time actual pred error error.pct
<date> <dbl> <dbl> <dbl> <dbl>
1 2018-01-31 11.4 11.4 0.0342 0.00300
2 2018-02-28 14.6 10.4 4.24 0.290
3 2018-03-31 12.2 11.4 0.762 0.0625
4 2018-04-30 15.0 10.8 4.20 0.281
5 2018-05-31 12.8 11.1 1.75 0.137
6 2018-06-30 8.67 10.8 -2.15 -0.248
7 2018-07-31 12.3 10.3 2.03 0.165
8 2018-08-31 13.5 10.4 3.17 0.234
9 2018-09-30 10.8 9.72 1.05 0.0976
10 2018-10-31 10.5 10.7 -0.165 -0.0156
我不知道该怎么做而且很难找到的是如何预测未来的数据。例如 fpp
我可以做类似的事情:
monthly.hw.fcast <- hw(
monthly.rr.sub.xts
, h = 12
, alpha = monthly.fit.hw$alpha
)
并得到我正在寻找的东西,未来的预测。有没有使用 h20 模型的简单方法?
我的代码如下:
# h2o ####
library(h2o)
tk.monthly %>% glimpse()
tk.monthly.aug <- tk.monthly %>%
tk_augment_timeseries_signature()
tk.monthly.aug %>% glimpse()
tk.monthly.tbl.clean <- tk.monthly.aug %>%
select_if(~ !is.Date(.)) %>%
select_if(~ !any(is.na(.))) %>%
mutate_if(is.ordered, ~ as.character(.) %>% as.factor)
tk.monthly.tbl.clean %>% glimpse()
train.tbl <- tk.monthly.tbl.clean %>% filter(year < 2017)
valid.tbl <- tk.monthly.tbl.clean %>% filter(year == 2017)
test.tbl <- tk.monthly.tbl.clean %>% filter(year == 2018)
h2o.init()
train.h2o <- as.h2o(train.tbl)
valid.h2o <- as.h2o(valid.tbl)
test.h2o <- as.h2o(test.tbl)
y <- "readmit.rate"
x <- setdiff(names(train.h2o), y)
automl.models.h2o <- h2o.automl(
x = x
, y = y
, training_frame = train.h2o
, validation_frame = valid.h2o
, leaderboard_frame = test.h2o
, max_runtime_secs = 60
, stopping_metric = "deviance"
)
automl.leader <- automl.models.h2o@leader
pred.h2o <- h2o.predict(
automl.leader
, newdata = test.h2o
)
h2o.performance(
automl.leader
, newdata = test.h2o
)
# get mape
automl.error.tbl <- tk.monthly %>%
filter(lubridate::year(Time) == 2018) %>%
add_column(
pred = pred.h2o %>%
as.tibble() %>%
pull(predict)
) %>%
rename(actual = readmit.rate) %>%
mutate(
error = actual - pred
, error.pct = error / actual
)
print(automl.error.tbl)
automl.error.tbl %>%
summarize(
me = mean(error)
, rmse = mean(error^2)^0.5
, mae = mean(abs(error))
, mape = mean(abs(error))
, mpe = mean(error.pct)
) %>%
glimpse()
此数据不适合标准的监督机器学习算法,例如 GBM、随机森林、H2O AutoML 等。这是一个使用单一观察序列的预测问题,其中 "typical" 监督机器学习除了您尝试预测的列(响应)之外,还有多个(或许多)预测变量列时,将使用算法。我会看看其他 time-series/forecasting 算法,例如 ARIMA 或使用深度神经网络,例如 LSTM。
我第一次学习了 here 中的 R 中的 h2o 教程。我想做的是根据我没有的数据预测模型,这意味着超出测试集的未来日期。
数据是时间序列,在测试集上的预测是这样的:
print(automl.error.tbl)
# A time tibble: 10 x 5
# Index: Time
Time actual pred error error.pct
<date> <dbl> <dbl> <dbl> <dbl>
1 2018-01-31 11.4 11.4 0.0342 0.00300
2 2018-02-28 14.6 10.4 4.24 0.290
3 2018-03-31 12.2 11.4 0.762 0.0625
4 2018-04-30 15.0 10.8 4.20 0.281
5 2018-05-31 12.8 11.1 1.75 0.137
6 2018-06-30 8.67 10.8 -2.15 -0.248
7 2018-07-31 12.3 10.3 2.03 0.165
8 2018-08-31 13.5 10.4 3.17 0.234
9 2018-09-30 10.8 9.72 1.05 0.0976
10 2018-10-31 10.5 10.7 -0.165 -0.0156
我不知道该怎么做而且很难找到的是如何预测未来的数据。例如 fpp
我可以做类似的事情:
monthly.hw.fcast <- hw(
monthly.rr.sub.xts
, h = 12
, alpha = monthly.fit.hw$alpha
)
并得到我正在寻找的东西,未来的预测。有没有使用 h20 模型的简单方法?
我的代码如下:
# h2o ####
library(h2o)
tk.monthly %>% glimpse()
tk.monthly.aug <- tk.monthly %>%
tk_augment_timeseries_signature()
tk.monthly.aug %>% glimpse()
tk.monthly.tbl.clean <- tk.monthly.aug %>%
select_if(~ !is.Date(.)) %>%
select_if(~ !any(is.na(.))) %>%
mutate_if(is.ordered, ~ as.character(.) %>% as.factor)
tk.monthly.tbl.clean %>% glimpse()
train.tbl <- tk.monthly.tbl.clean %>% filter(year < 2017)
valid.tbl <- tk.monthly.tbl.clean %>% filter(year == 2017)
test.tbl <- tk.monthly.tbl.clean %>% filter(year == 2018)
h2o.init()
train.h2o <- as.h2o(train.tbl)
valid.h2o <- as.h2o(valid.tbl)
test.h2o <- as.h2o(test.tbl)
y <- "readmit.rate"
x <- setdiff(names(train.h2o), y)
automl.models.h2o <- h2o.automl(
x = x
, y = y
, training_frame = train.h2o
, validation_frame = valid.h2o
, leaderboard_frame = test.h2o
, max_runtime_secs = 60
, stopping_metric = "deviance"
)
automl.leader <- automl.models.h2o@leader
pred.h2o <- h2o.predict(
automl.leader
, newdata = test.h2o
)
h2o.performance(
automl.leader
, newdata = test.h2o
)
# get mape
automl.error.tbl <- tk.monthly %>%
filter(lubridate::year(Time) == 2018) %>%
add_column(
pred = pred.h2o %>%
as.tibble() %>%
pull(predict)
) %>%
rename(actual = readmit.rate) %>%
mutate(
error = actual - pred
, error.pct = error / actual
)
print(automl.error.tbl)
automl.error.tbl %>%
summarize(
me = mean(error)
, rmse = mean(error^2)^0.5
, mae = mean(abs(error))
, mape = mean(abs(error))
, mpe = mean(error.pct)
) %>%
glimpse()
此数据不适合标准的监督机器学习算法,例如 GBM、随机森林、H2O AutoML 等。这是一个使用单一观察序列的预测问题,其中 "typical" 监督机器学习除了您尝试预测的列(响应)之外,还有多个(或许多)预测变量列时,将使用算法。我会看看其他 time-series/forecasting 算法,例如 ARIMA 或使用深度神经网络,例如 LSTM。