Nixtla / hierarchicalforecast

Probabilistic Hierarchical forecasting 👑 with statistical and econometric methods.
https://nixtlaverse.nixtla.io/hierarchicalforecast
Apache License 2.0
590 stars 76 forks source link

ENH: Add sparse middle-out reconciliation via ``MiddleOutSparse`` #281

Closed christophertitchen closed 3 months ago

christophertitchen commented 3 months ago

This PR adds a middle-out reconciliation class called MiddleOutSparse for sparse "summing" matrices, $S$, to significantly reduce the wall time for reconciling large hierarchical structures from a "middle" level, which now take at least $99.6 \%$ less time to reconcile.

Dataset $\textup{dim} \left ( P \right )$ $K$ $T$ $h$ $\ell$ Method MiddleOut MiddleOutSparse Reduction
M5 $\small{\left( 30\, 490 \times 42\, 840 \right)}$ $12$ $1\, 969$ $28$ $9$ A #277 $\gt 2\, hr$ * $28.1\, s$ $\gt \, 99.6 \%$ *

* This was cancelled after 2 hours. 😴

review-notebook-app[bot] commented 3 months ago

Check out this pull request on  ReviewNB

See visual diffs & provide feedback on Jupyter Notebooks.


Powered by ReviewNB

christophertitchen commented 3 months ago

Thanks, again great work! Looking forward to seeing what you're up to next :)

I think after all your work it would be awesome if we update the docs and have a tutorial showing the nice sparse methods that you implemented. Let me know if you'd like to work on that, otherwise I'll pick that up sometime.

Thank you for your reviews and great suggestions, Olivier!

I would be happy to both update the docs and create a tutorial for the sparse methods.

elephaint commented 3 months ago

Thanks, again great work! Looking forward to seeing what you're up to next :) I think after all your work it would be awesome if we update the docs and have a tutorial showing the nice sparse methods that you implemented. Let me know if you'd like to work on that, otherwise I'll pick that up sometime.

Thank you for your reviews and great suggestions, Olivier!

I would be happy to both update the docs and create a tutorial for the sparse methods.

Great! Let's do that in another PR, I'll merge this one then.