Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ARIMA n-step regression #797

Merged
merged 11 commits into from
Oct 11, 2019
Merged

ARIMA n-step regression #797

merged 11 commits into from
Oct 11, 2019

Conversation

sh1ng
Copy link
Contributor

@sh1ng sh1ng commented Sep 24, 2019

Implementation of ARIMA model. It contains CUDA part only and a few more changes are upcoming, but I believe it's good enough to be reviewed. After python part is done I'm going to add a few more methods to evaluate coefficients or a c++ version without CUDA.

Some theory can be found in:

pseudotensor
pseudotensor previously approved these changes Sep 24, 2019
* initial version of python wrapper
* simple arima test
* multiple iteration
* python sample
@sh1ng
Copy link
Contributor Author

sh1ng commented Oct 6, 2019

There's instability in convergence probably due to residual approximation. I think it can be fixed by implementing IIR filter(residual computation can be expressed as an IIR filter).

Most suitable approach that I've found https://userweb.cs.txstate.edu/~burtscher/papers/asplos18.pdf

@sh1ng sh1ng changed the title ARIMA Two-Step Regression ARIMA n-step regression Oct 10, 2019
@sh1ng
Copy link
Contributor Author

sh1ng commented Oct 10, 2019

How it works:

  1. Regression to find AR coefficients
  2. Evaluate residuals(without MA part)
  3. Regression to find AR and MA coefficients
  4. Correct residuals(by using AR's coefficients, MA's coefficients and residuals from the previous steep)
  5. go to step 3.

As you can see computation on step 4. is not precise, but

Precise implementation on GPU(mentioned above) is quite interesting, but inapplicable to the task as it requires knowing all coefficients in advance to compute n-nachi numbers.
Classical algorithm(section 1.4 of https://www.cs.cmu.edu/~guyb/papers/Ble93.pdf) is too complicated.

And I've noticed that precise computation of residual makes convergence much more unstable(I've implemented it on CPU). I guess it happens because errors get accumulated from iteration to iteration(when move from t-1 time to t).

It's good enough to merged it into master and work on another methods in separate PRs.

@sh1ng sh1ng merged commit 239c5e4 into master Oct 11, 2019
@sh1ng sh1ng deleted the arima branch October 11, 2019 09:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants