我们正在评估spark作为一个并行后端,按照一定的层次结构(组)来训练数千个时间序列预测模型:客户id、站点id和产品id。
到今天为止,我们已经创建了一个名为comb\ id的唯一标识符,它对于这3个变量的任何组合都是不同的。数据大致如下:
comb_id customer_id site_id timestamp value
1 87 55 2020-01-12 12:00 43.5
1 87 53 2020-01-12 12:00 45.6
1 87 65 2020-01-12 12:00 48.2
2 87 55 2020-01-12 12:00 43.5
2 87 53 2020-01-12 12:00 45.6
2 87 55 2020-01-12 12:00 43.5
我们所做的是根据组合id聚合value列,我们执行一些预处理,创建lag、移动平均值、日历特性,并将这些特性与其他外部特性连接起来。然后我们正在执行一个容器化的工作负载,我们正在为每个算法启动n\u comb\u idnumber\u of\u algorithmshpo\u jobs\u。
这个过程运行得非常好,因为我们可以调整每个单独的算法,并为每个组合id获得最佳算法的最佳模型。但是,这个过程非常慢,因为我们有一个帐户限制,限制了我们可以启动的容器的数量,这在将来可能会成为一个问题。
我们发现了这个有用的资源:https://towardsdatascience.com/pyspark-forecasting-with-pandas-udf-and-fb-prophet-e9d70f86d802 我们已经为我们的用例运行了这个,但是我们发现了以下问题:
没有办法为每个小组调整每个先知模型(或者至少我们不知道如何做到这一点)。
我们使用xgboost和randomforest而不是prophet。
以前有人面临过同样的挑战吗?
ps:我们对spark的理解非常有限,所以如果我们问一些琐碎的问题,我们深表歉意。
暂无答案!
目前还没有任何答案,快来回答吧!