【问题标题】:Facebook Prophet add_regressor not helpingFacebook Prophet add_regressor 没有帮助
【发布时间】:2020-10-16 19:02:42
【问题描述】:

我正在尝试使用 fbprophet 添加一个额外的回归器进行实验,但它似乎并没有提高准确性。当然,在一般情况下不能保证,但我已经把它归结为一个看起来应该的合成案例,但它仍然不是,所以我想知道我是否做错了什么。

这是输入数据:

ds,y
2011-01-01,8
2011-02-01,10
2011-03-01,10
2011-04-01,10
2011-05-01,9
2011-06-01,8
2011-07-01,6
2011-08-01,7
2011-09-01,9
2011-10-01,9
2011-11-01,10
2011-12-01,10
2012-01-01,20
2012-02-01,20
2012-03-01,20
2012-04-01,20
2012-05-01,20
2012-06-01,20
2012-07-01,20
2012-08-01,20
2012-09-01,20
2012-10-01,20
2012-11-01,20
2012-12-01,20

这个想法是第一年有点吵,这并不是第二年的真正指南,第二年所有值都定在 20。

这是我的代码:

import fbprophet
import pandas as pd
import sklearn.metrics

plain = pd.read_csv("data.csv")
plain_train = plain[plain.ds < "2012-01-01"]
plain_test = plain[plain.ds >= "2012-01-01"]

plain_m = fbprophet.Prophet()
plain_m.fit(plain_train)
plain_forecast = plain_m.predict(plain_test)

augmented = pd.read_csv("data.csv")
augmented["extra"] = [20.0] * 24
augmented_train = augmented[augmented.ds < "2012-01-01"]
augmented_test = augmented[augmented.ds >= "2012-01-01"]

augmented_m = fbprophet.Prophet()
augmented_m.add_regressor("extra")
augmented_m.fit(augmented_train)
augmented_forecast = augmented_m.predict(augmented_test)


print("plain_forecast")
print(
    sklearn.metrics.mean_absolute_error(
        plain_test["y"].values, plain_forecast["yhat"].values
    )
)

print("augmented_forecast")
print(
    sklearn.metrics.mean_absolute_error(
        augmented_test["y"].values, augmented_forecast["yhat"].values
    )
)

它首先尝试对未增强的数据进行预测运行,然后使用始终为 20 的第二列进行增强,因此可以完美地指导数据将基于什么,因此可能非常有帮助。

还有输出:

plain_forecast
11.072845254369435
augmented_forecast
11.072872701031054

数字不相同,因此额外的列并没有被完全忽略,但准确性并没有提高;虽然噪音水平的差异有所下降,但稍微差一点。

我错过了什么?

【问题讨论】:

    标签: python regression facebook-prophet


    【解决方案1】:

    代码没有错。但是要记住几件事,然后你会看到 fb 先知的不同

    1. 这个数据有问题。

    2. 在您的模型中,如果您想检查季节性 + 增长,您应该将年和月拆分为两个单独的变量。这将有助于任何算法理解每年都有增长,每个月都有季节性曲线。

    3. 您在可变数据波动的时期训练您的数据,并在它平坦的时期进行测试。

    4. 请用另一组数据试一试。任何人都可以。

    5. 24 项是极小的样本,propeth 是针对更大的数据和可能更多的变量。

    6. 虽然先知这个名字并不神奇,但它使用了各种相关技术,并且在小记录集中,它与简单的回归没有什么不同。

    告诉我们进展如何?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-08
      相关资源
      最近更新 更多