gpt4 book ai didi

r - 使用 R 中的 OPERA 包预测 future 值

转载 作者:行者123 更新时间:2023-12-01 04:18:39 25 4
gpt4 key购买 nike

我一直在尝试理解 Pierre Gaillard 和 Yannig Goude 的 Opera“专家聚合在线预测”。我阅读了 Pierre Gaillard ( http://pierre.gaillard.me/opera.html ) 和 Rob Hyndman ( https://robjhyndman.com/hyndsight/forecast-combinations/ ) 的两篇文章。但是,我不明白如何预测 future 的值(value)。在 Pierre 的示例中,newY = Y 表示测试数据集 (Y <- data_test$Load),它是法国电力负荷的每周观测值。如下所示,数据截止于 2009 年 12 月。现在,我如何预测 2010 年的值?这里的新事物是什么?

> tail(electric_load,5)
Time Day Month Year NumWeek Load Load1 Temp Temp1 IPI

727 727 30 11 2009 0.9056604 63568.79 58254.42 7.220536 10.163839 91.3 88.4
728 728 7 12 2009 0.9245283 63977.13 63568.79 6.808929 7.220536 90.1 87.7
729 729 14 12 2009 0.9433962 78046.85 63977.13 -1.671280 6.808929 90.1 87.7
730 730 21 12 2009 0.9622642 66654.69 78046.85 4.034524 -1.671280 90.1 87.7
731 731 28 12 2009 0.9811321 60839.71 66654.69 7.434115 4.034524 90.1 87.7

我注意到,通过将 MLpol0 的权重乘以 X,我们得到与在线预测值相似的输出。

> weights <- predict(MLpol0, X, Y, type='weights')
> w<-weights[,1]*X[,1]+weights[,2]*X[,2]+weights[,3]*X[,3]
> predValues <- predict(MLpol0, newexpert = X, newY = Y, type='response')


Test_Data predValues w
620 65564.29 65017.11 65017.11
621 62936.07 62096.12 62096.12
622 64953.83 64542.44 64542.44
623 61580.44 60447.63 60447.63
624 71075.52 67622.97 67622.97
625 75399.88 72388.64 72388.64
626 65410.13 67445.63 67445.63
627 65815.15 62623.64 62623.64
628 65251.90 64271.97 64271.97
629 63966.91 61803.77 61803.77
630 64893.42 65793.14 65793.14
631 69226.32 67153.80 67153.80

但我仍然不确定如何在没有 newY 的情况下生成权重。也许我们可以使用作为 MLpol 输出的最终系数来预测 future 值?

 (c<-summary(MLpol <- mixture(Y = Y, experts = X, model = "MLpol", loss.type = "square"))$coefficients)
[1] 0.585902 0.414098 0.000000

很抱歉,我可能在这方面偏离了方向,我的问题可能根本没有意义,但我真的很感谢任何帮助/见解。

最佳答案

opera 包的思想与带有训练集和测试集的经典批处理机器学习方法有点不同。目标是进行顺序预测:

在每一轮 t=1,...,n, 1) 算法接收专家对第 n+1 轮的预测, 2)它结合专家对这个时间步进行预测 3) 它通过使用新输出更新用于组合的权重

如果您有样本外预测(即专家对没有输出的 future 值的预测),您可以做的最好的事情是使用最后的系数并使用它们进行预测,方法是:

    newexperts %*% model$coefficients

在实践中,您可能还想使用平均系数。您也可以使用

    predict (object, # for exemple, mixture(model='FS', loss.type="square")
newexperts = # matrix of out-of-sample experts predictions
online = FALSE,
type = 'response')

通过使用参数 online = FALSE,模型不需要任何 newY。它不会更新模型。当你提供 newY 时,算法不会作弊。它不使用第 t 轮的值来进行第 t 轮的预测。 newY 的值仅用于逐步更新系数,就像按顺序进行预测一样。

希望对您有所帮助。

关于r - 使用 R 中的 OPERA 包预测 future 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45800684/

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