PaddlePaddle / PaddleTS

Awesome Easy-to-Use Deep Time Series Modeling based on PaddlePaddle, including comprehensive functionality modules like TSDataset, Analysis, Transform, Models, AutoTS, and Ensemble, etc., supporting versatile tasks like time series forecasting, representation learning, and anomaly detection, etc., featured with quick tracking of SOTA deep models.
Apache License 2.0
479 stars 116 forks source link

请问下PaddleTS具体哪些模型支持协变量? #352

Closed markluofd closed 6 months ago

markluofd commented 1 year ago

想问下PaddleTS具体哪些模型是支持协变量的,从文档里面没找到很好的说明 然后用MLPRegressor模型测试了下,训练用的TSDataset是包含observed_cov_cols,但是预测的时候传递的TSDataset不包含observed_cov_cols,还是能正确推理,例如下面这段代码:

import numpy as np
import pandas as pd
import paddlets

if __name__ == "__main__":
    x = np.linspace(-np.pi, np.pi, 200)
    sinx = np.sin(x) * 4 + np.random.randn(200)

    df1 = pd.DataFrame(
        {
            "time_col1": pd.date_range("2022-01-01", periods=200, freq="1h"),
            "value_col1": sinx,
            "observed_col1": sinx + 1,
        }
    )
    ts1 = paddlets.TSDataset.load_from_dataframe(
        df1,
        time_col="time_col1",
        target_cols="value_col1",
        observed_cov_cols=["observed_col1"],
    )

    # 训练模型
    train_ts, val_ts = ts1.split(0.8)
    from paddlets.models.forecasting import MLPRegressor

    mlp = MLPRegressor(in_chunk_len=20, out_chunk_len=10, max_epochs=500)
    mlp.fit(train_ts, val_ts)

    # 预测模型
    df2 = pd.DataFrame(
        {
            "time_col2": pd.date_range("2022-01-01", periods=200, freq="1h"),
            "value_col2": sinx,
        }
    )
    ts2 = paddlets.TSDataset.load_from_dataframe(
        df2, time_col="time_col2", target_cols="value_col2", freq="1h"
    )
    predict_result_2 = mlp.predict(ts2)
    print("predict results: ", predict_result_2)
bianchuanxin commented 1 year ago

您好,我们将会在PaddleTS文档中增加各模型对于可预知协变量与观测协变量的支持说明。 目前为止在PaddleTS的预测模型中,支持协变量的模型有RNN、Transformer、NBeats、NHiTS、DeepAR、TFT。 MLP由于不支持协变量,模型将不会对TSDataset中的协变量进行处理,因此在您的例子中不影响正确推理。

markluofd commented 1 year ago

顺便问下,目前paddlets关于model的api主要是fit和predict,但是有些场景模型是通过load进来的,能否提供一些api对模型信息进行解析,比如提供api可以获取可预知协变量与观测协变量数量,当然提供的信息越丰富肯定是越好了

kehuo commented 1 year ago

@markluofd 感谢反馈。

对于【提供API,或者其他方式,可以让用户获取模型支持的协变量类型(以及其他更多模型信息)】功能,我们会讨论一下。

另外,如果你有兴趣,也可以提交此功能给PaddleTS,我们非常欢迎开源社区为PaddleTS贡献代码,并且会认真评审每一个开源社区的Pull Request。