预言家和预言家
profetorch的Python项目详细描述
教授
FB Prophet + Fastai + pyTorch.
这是prophet的另一种实现,它使用分位数回归代替MCMC抽样。它比prophet有以下优点:
- GPU使用情况。在
- 严格的上下界。在
- 可以向时间序列添加任何其他功能集。在
时间序列的实现如下:
\开始{aligned} y&;=b(T(T)+S(T)+F(x)| l,u)\ T(T)和=mt+a\ S(t)&;=\sum{n=1}^n\左(a_n\cos\ left(\frac{2\pi nt}{P}\right)+b\n\sin\左(\frac{2\pi nt}{P}\right)\right)\ F(x)&;=w^T x\ b(y | l,u)&;=\begin{cases} l\quad\text{if}y<;l\ y\quad\text{if}l<;y<;u\ u\quad\text{if}y>;u \结束{cases} \结束{aligned}
其中,$T(T)$是趋势线,$S(T)$是由傅立叶和组成的季节性分量,$F(x)$是一个线性函数,它加权与时间无关的特征。在
因此,任务是找到使损失函数$l(\hat{y},y)$最小化的参数$a,m、\cup\na\u n、\cup\un b\u n,w$。默认设置为最小化$l1$loss$\frac{1}{N}\sum{i=1}^N | y_i-\hat{y_i}|$,这样对离群值的依赖最小。默认情况下,我们还通过最小化倾斜损失函数来计算第5和第95分位数。分位数函数计算如下: \开始{align} y_5&;=b(\hat{y}-(m_5t+a_5)| l,u)\ y{95}&;=b(\hat{y}+(m{95}t+a{95})l,u) \结束{align}
安装
pip install profetorch
教授培训
model_params={'y_n':10,'m_n':7,'l':0,'h':train_df['y'].max()*2}model=Model(train_df,model_args=model_params,epochs=30,alpha=1e-2,beta=0)model.fit(train_df)
y_pred=model.predict(df)plt.figure(figsize=(12,5))plt.scatter(df['ds'],df['y'],label='Data')plt.plot(train_df['ds'],y_pred[:train_len,1],c='r',label='Train Set')plt.fill_between(train_df['ds'],y_pred[:train_len,0],y_pred[:train_len,2],alpha=0.5)plt.plot(test_df['ds'],y_pred[train_len:,1],c='g',label='Test Set')plt.fill_between(test_df['ds'],y_pred[train_len:,0],y_pred[train_len:,2],alpha=0.5)plt.show()
显然还有更多的工作要做,如上图所示。但是,请注意:
- 季节性成分被捕捉。在
- 分位数是不对称的,这在fb先知案中是不可能发生的。在
- 如果有足够的兴趣,我会弥补这些不足。
- 项目
标签: