设为首页 加入收藏

TOP

时间序列分析工具箱—— h2o + timetk(四)
2019-08-15 00:10:03 】 浏览:214
Tags:时间序列 分析 工具箱 h2o timetk
2o.automl( x = x, y = y, training_frame = train_h2o, validation_frame = valid_h2o, leaderboard_frame = test_h2o, max_runtime_secs = 60, stopping_metric = "deviance")

接着,提取主模型。

# Extract leader model
automl_leader <- automl_models_h2o@leader

STEP 4:预测

使用 h2o.predict() 在测试数据上产生预测。

pred_h2o <- h2o.predict(
    automl_leader, newdata = test_h2o)

STEP 5:评估表现

有几种方法可以评估模型表现,这里,将通过简单的方法,即 h2o.performance()。这产生了预设值,这些预设值通常用于比较回归模型,包括均方根误差(RMSE)和平均绝对误差(MAE)。

h2o.performance(
    automl_leader, newdata = test_h2o)
## H2ORegressionMetrics: gbm
## 
## MSE:  340918.3
## RMSE:  583.8821
## MAE:  467.8388
## RMSLE:  0.04844583
## Mean Residual Deviance :  340918.3

我们偏好的评估指标是平均绝对百分比误差(MAPE),未包括在上面。但是,我们可以轻易计算出来。我们可以查看测试集上的误差(实际值 vs 预测值)。

# Investigate test error
error_tbl <- beer_sales_tbl %>% 
    filter(lubridate::year(date) == 2017) %>%
    add_column(
        pred = pred_h2o %>% as.tibble() %>% pull(predict)) %>%
    rename(actual = price) %>%
    mutate(
        error     = actual - pred,
        error_pct = error / actual) 

error_tbl
## # A tibble: 8 x 5
##         date actual      pred     error    error_pct
##       <date>  <int>     <dbl>     <dbl>        <dbl>
## 1 2017-01-01   8664  8241.261  422.7386  0.048792541
## 2 2017-02-01  10017  9495.047  521.9534  0.052106763
## 3 2017-03-01  11960 11631.327  328.6726  0.027480989
## 4 2017-04-01  11019 10716.038  302.9619  0.027494498
## 5 2017-05-01  12971 13081.857 -110.8568 -0.008546509
## 6 2017-06-01  14113 12796.170 1316.8296  0.093306142
## 7 2017-07-01  10928 10727.804  200.1962  0.018319563
## 8 2017-08-01  12788 12249.498  538.5016  0.042109915

为了比较,我们计算了一些残差度量指标。

error_tbl %>%
    summarise(
        me   = mean(error),
        rmse = mean(error^2)^0.5,
        mae  = mean(abs(error)),
        mape = mean(abs(error_pct)),
        mpe  = mean(error_pct)) %>%
    glimpse()
## Observations: 1
## Variables: 5
## $ me   <dbl> 440.1246
## $ rmse <dbl> 583.8821
## $ mae  <dbl> 467.8388
## $ mape <dbl> 0.03976961
## $ mpe  <dbl> 0.03763299

STEP 6:可视化预测结果

最后,可视化我们得到的预测结果。

beer_sales_tbl %>%
    ggplot(aes(x = date, y = price)) +
    # Data - Spooky Orange
    geom_point(col = palette_light()[1]) +
    geom_line(col = palette_light()[1]) +
    geom_ma(
        n = 12) +
    # Predictions - Spooky Purple
    geom_point(
        aes(y = pred),
        col = palette_light()[2],
        data = error_tbl) +
    geom_line(
        aes(y = pred),
        col = palette_light()[2],
        data = error_tbl) +
    # Aesthetics
    theme_tq() +
    labs(
        title = "Beer Sales Forecast: h2o + timetk",
        subtitle = "H2O had highest accuracy, MAPE = 3.9%")

最终的胜利者是...

h2o + timetk 的 MAPE 优于先前两个教程中的方法:

感兴趣的读者要问一个问题:对所有三种不同方法的预测进行平均时,准确度会发生什么变化?

请注意,时间序列机器学习的准确性可能并不总是优于 ARIMA 和其他预测技术,包括那些由 prophet(Facebook 开发的预测工具)和 GARCH 方法实现的技术。数据科学家有责任测试不同的方法并为工作选择合适的工具。

首页 上一页 1 2 3 4 下一页 尾页 4/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇R语言grid包just参数如何just图形.. 下一篇在 R 中估计 GARCH 参数存在的问题

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目