WenjieDu / PyPOTS

A Python toolkit/library for reality-centric machine/deep learning and data mining on partially-observed time series, including SOTA neural network models for scientific analysis tasks of imputation/classification/clustering/forecasting/anomaly detection/cleaning on incomplete industrial (irregularly-sampled) multivariate TS with NaN missing values
https://pypots.com
BSD 3-Clause "New" or "Revised" License
1.04k stars 99 forks source link

Possible to implement CSDI as a forecasting model for POTS data #264

Closed WenjieDu closed 6 months ago

WenjieDu commented 10 months ago

1. Feature description

Although, in the CSDI paper, the authors discussed using the model for time series forecasting, their experiments and scenarios are for complete time series. However, the model is possible for POTS forecasting.

2. Motivation

Make CSDI a forecasting model in PyPOTS.

3. Your contribution

I'm currently overloaded. If anyone is interested in this task, please discuss it below to see if you can take it.

The CSDI model has been included in PyPOTS as an imputation model, so necessary modules are all available already.

ahmaddroobi99 commented 9 months ago

I start working on it, to get familiar with code and understand its infrastructure.

WenjieDu commented 9 months ago

Many thanks, Ahmad. I've assigned this to you and me. I can help you at any time, please just start the discussion here if you need any information or assistance. And once you make the PR, I'll review the code.

ahmaddroobi99 commented 9 months ago

Is this the Algorithm that should be implemented, could you describe more, As I understand now it will be in forecasting algorithms in PyPOTS.

image
WenjieDu commented 9 months ago

@ahmaddroobi99 The graph you posted is an overview of how CSDI works: input, process, and output.

Here are some clues and suggestions from me:

  1. read the paper and figure out the model itself first. I believe you've done well with this;
  2. walk through the code under this path https://github.com/WenjieDu/PyPOTS/blob/main/pypots/imputation/csdi and figure out how CSDI is implemented as an imputation model here. The CSDI code in PyPOTS keeps the same logic as the official implementation https://github.com/ermongroup/CSDI but is in a more unified PyPOTS way;
  3. read the code in https://github.com/ermongroup/CSDI/blob/main/exe_forecasting.py and the code it imports. This script will help you learn how CSDI works on the forecasting task;
  4. get your hands on turning the imputation CSDI in PyPOTS into a forecasting model. Basically, you need to do some refactoring work to adapt the code for the forecasting task;

Let me know if you have any further questions.

LinglongQian commented 9 months ago

Hi @WenjieDu and @ahmaddroobi99 maybe I can help on this as well, I have some experience in CSDI code and had also familiar with their code and paper.

WenjieDu commented 9 months ago

Thanks, @LINGLONGQIAN, good to know you'd like to help. I'm going to check with Ahmad to see how things are going on his side. Then we can determine which part you can take care of.

WenjieDu commented 8 months ago

Ahmad @ahmaddroobi99 recently has been very busy with his own work. After communication, Linglong @LINGLONGQIAN and I will take care of this issue.