微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Facebook先知add_regressor无法帮助

如何解决Facebook先知add_regressor无法帮助

我正在尝试用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

数字不相同,因此不会完全忽略多余的列,但是准确性没有提高;尽管差异在噪声水平上有所下降,但情况稍差一些。

我想念什么?

解决方法

代码没错。但是要记住几件事,然后您会发现fb先知与众不同

  1. 此数据有问题。

  2. 在模型中,如果要检查季节性和增长情况,则应将年和月拆分为两个单独的变量。这将使任何算法都了解,每年都有增长,每个月都有适时性曲线。

  3. 您可以在可变数据不稳定的时期训练数据,并在平坦的时期进行测试。

  4. 请尝试使用另一组数据。任何实际上都可以。

  5. 24个项目是非常小的样本,propeth用于更大的数据和更多的变量。

  6. 尽管先知这个名字不是魔术,但它使用各种相关技术,并且在少量记录中,它与简单回归没有什么不同。

让我们知道它的进展?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。