Bagaimana Menangani Seri Banyak Kali Secara Bersamaan?

14

Saya memiliki kumpulan data termasuk permintaan beberapa produk (1.200 produk) selama 25 periode dan saya perlu memprediksi permintaan masing-masing produk untuk periode berikutnya. Pada awalnya, saya ingin menggunakan ARIMA dan melatih model untuk setiap produk, tetapi karena jumlah produk dan penyetelan parameter (p, d, q), sangat memakan waktu dan tidak praktis. Apakah disarankan untuk menggunakan regresi di mana tuntutan sebelumnya adalah variabel independen (Autoregresif)?

Bisakah saya tahu jika ada metode untuk melatih model tunggal untuk prediksi permintaan semua 1200 produk? Saya akan berterima kasih jika Anda dapat menyarankan perpustakaan di Python karena saya menggunakan Python.

Katatonia
sumber
3
Paket paling canggih untuk analisis deret waktu dimensi tinggi yang saya ketahui ada bigtimedi R. Mungkin Anda bisa memanggil R dari Python untuk dapat menggunakannya.
Richard Hardy

Jawaban:

11

Secara umum ketika Anda memiliki beberapa time-series, Anda akan menggunakan semacam model berbasis vektor untuk memodelkan semuanya secara bersamaan. Perpanjangan alami model ARIMA untuk tujuan ini adalah model VARIMA (Vector ARIMA). Fakta bahwa Anda memiliki 1200 time-series berarti bahwa Anda perlu menentukan beberapa batasan parametrik berat pada persyaratan korelasi silang dalam model, karena Anda tidak akan dapat berurusan dengan parameter gratis untuk setiap pasangan variabel time-series.

Saya akan menyarankan mulai dengan beberapa model berbasis vektor sederhana (misalnya, VAR, VMA, VARMA) dengan derajat rendah, dan beberapa batasan parameter sederhana untuk korelasi silang. Lihat apakah Anda dapat menemukan model yang masuk akal yang menggabungkan korelasi silang dengan setidaknya satu derajat kelambatan, dan kemudian pergi dari sana. Latihan ini akan membutuhkan pembacaan pada model deret waktu berbasis vektor. The MTSpaket dan bigtimepacakage di Rmemiliki beberapa kemampuan untuk menangani multivariat time-series, sehingga juga akan bernilai mengakrabkan diri dengan paket ini.

Pasang kembali Monica
sumber
Paket paling canggih untuk analisis deret waktu dimensi tinggi yang saya ketahui ada bigtimedi R. Sejauh yang saya tahu MTS, ini lebih merupakan demonstrasi contoh buku teks daripada alat kerja nyata. Beberapa contoh multivarian hanya dapat menangani seri 3 dimensi sebelum tersedak oleh beban komputasi.
Richard Hardy
@ Richard Hardy: Terima kasih --- Saya telah mengedit jawaban saya untuk memasukkan ini.
Pasang kembali Monica
1
Cara yang baik untuk melakukan ini adalah dengan mempertimbangkan Bayesian VAR, atau lebih tepatnya model Bayesian VAR yang besar.
Graeme Walsh
6

Seperti yang disebutkan Ben, metode buku teks untuk banyak seri waktu adalah model VAR dan VARIMA. Namun dalam praktiknya, saya belum pernah melihat mereka menggunakannya dalam konteks peramalan permintaan.

Jauh lebih umum, termasuk apa yang digunakan tim saya saat ini, adalah peramalan hierarki (lihat di sini juga ). Peramalan hierarkis digunakan setiap kali kita memiliki kelompok-kelompok dari rangkaian waktu yang serupa: Sejarah penjualan untuk kelompok-kelompok produk yang serupa atau terkait, data wisata untuk kota-kota yang dikelompokkan berdasarkan wilayah geografis, dll ...

Idenya adalah untuk memiliki daftar hierarkis dari produk Anda yang berbeda dan kemudian melakukan peramalan baik di tingkat dasar (yaitu untuk setiap seri waktu individu) dan pada tingkat agregat yang ditentukan oleh hierarki produk Anda (Lihat grafik terlampir). Anda kemudian merekonsiliasi prakiraan pada tingkat yang berbeda (menggunakan Top Down, Botton Up, Optimal Reconciliation, dll ...) tergantung pada tujuan bisnis dan target perkiraan yang diinginkan. Perhatikan bahwa Anda tidak akan mencocokkan satu model multivariat besar dalam kasus ini, tetapi beberapa model pada node yang berbeda dalam hierarki Anda, yang kemudian direkonsiliasi menggunakan metode rekonsiliasi yang Anda pilih.

masukkan deskripsi gambar di sini

Keuntungan dari pendekatan ini adalah bahwa dengan mengelompokkan deret waktu yang sama bersama-sama, Anda dapat memanfaatkan korelasi dan persamaan di antara mereka untuk menemukan pola (seperti variasi musiman) yang mungkin sulit dikenali dengan deret waktu tunggal. Karena Anda akan menghasilkan sejumlah besar prakiraan yang tidak mungkin disempurnakan secara manual, Anda perlu mengotomatiskan prosedur peramalan deret waktu Anda, tetapi itu tidak terlalu sulit - lihat di sini untuk detailnya .

Pendekatan yang lebih maju, namun serupa semangatnya, digunakan oleh Amazon dan Uber, di mana satu Jaringan Neural RNN / LSTM yang besar dilatih untuk semua rangkaian waktu sekaligus. Semangatnya mirip dengan peramalan hierarkis karena ia juga mencoba mempelajari pola dari persamaan dan korelasi antara deret waktu terkait. Ini berbeda dari peramalan hierarkis karena ia mencoba mempelajari hubungan antara deret waktu itu sendiri, sebagai lawan agar hubungan ini telah ditentukan sebelumnya dan diperbaiki sebelum melakukan peramalan. Dalam hal ini, Anda tidak lagi harus berurusan dengan pembuatan prakiraan otomatis, karena Anda hanya menyetel satu model, tetapi karena modelnya sangat kompleks, prosedur tuning tidak lagi menjadi tugas minimalisasi AIC / BIC yang sederhana, dan Anda perlu untuk melihat prosedur penyetelan hyper-parameter yang lebih canggih,

Lihat respons ini (dan komentar) untuk detail tambahan.

Untuk paket Python, PyAF tersedia tetapi juga tidak terlalu populer. Kebanyakan orang menggunakan paket HTS di R, yang mana ada lebih banyak dukungan komunitas. Untuk pendekatan berbasis LSTM, ada model DeepAR dan MQRNN Amazon yang merupakan bagian dari layanan yang harus Anda bayar. Beberapa orang juga telah menerapkan LSTM untuk perkiraan permintaan menggunakan Keras, Anda dapat melihatnya.

Skander H.
sumber
1
Selain itu. AUTOBOX mengimplementasikan jenis pemodelan hierarkis yang Anda sebut saat menggunakan total GROUP sebagai seri mengemudi yang mungkin untuk BANTU prediksi ANAK-ANAK menggunakan model SARMAX. Ketidakpastian dalam ramalan anak juga merupakan fungsi kumulatif dari ketidakpastian pada orang tua sambil menggabungkan kemungkinan pulsa di masa depan pada keduanya .. Senang melihat orang lain menggunakan pendekatan ini.
IrishStat
Amazon baru-baru ini membuka algoritma DeepAR bersumber di bawah kerangka kerja GluonTS yang memanfaatkan kerangka kerja MxNet, meskipun saya menemukan dokumentasi agak kurang pada saat ini. aws.amazon.com/blogs/opensource/…
hardikudeshi
5

Masalah dengan paket masal yang telah disarankan adalah mereka secara seragam gagal untuk berurusan dengan struktur deterministik laten seperti pulsa, level / step shift, pulsa musiman dan tren waktu atau secara efisien berurusan dengan kausal yang disarankan pengguna sesuai https: // autobox.com/pdfs/SARMAX.pdf

Selain itu waktu komputasi dapat menjadi komplikasi serius. AUTOBOX (yang saya bantu kembangkan) memiliki fase pembangunan model yang sangat canggih yang mengarsipkan model dan opsi peramalan yang sangat cepat yang menggunakan kembali model yang dikembangkan sebelumnya sehingga mengurangi waktu perkiraan menjadi sebagian kecil dari waktu pengembangan model yang ketat sambil menyesuaikan perkiraan baru untuk saat ini data diamati setelah model dikembangkan dan disimpan. Ini diimplementasikan untuk proyek perkiraan toko Annheuser-Busch yang berkapasitas 600.000 toko untuk sekitar 50+ item dengan mempertimbangkan Harga dan Cuaca.

Model dapat diperbarui dengan cara bergulir, menggantikan model sebelumnya sesuai kebutuhan.

Tidak perlu untuk pembatasan parametrik ATAU menghilangkan efek simultan dari variabel kausal seperti pada VAR dan VARIMA sementara hanya mengandalkan masa lalu dari semua seri a la ARIMA.

Tidak perlu hanya memiliki 1 model dengan 1 set parameter karena model dapat dan harus disesuaikan / dioptimalkan untuk masing-masing seri.

Sayangnya belum ada solusi Python tetapi harapan muncul abadi.

IrishStat
sumber
1
Kedengarannya menarik. Hanya berdalih kecil: bahkan dalam sesuatu yang sederhana seperti VAR, setiap seri mendapatkan persamaannya sendiri, sehingga kebutuhan untuk memiliki hanya 1 model dengan 1 set parameter tidak menjadi masalah. Kecuali Anda menyarankan beberapa model untuk seri yang sama, yang mungkin merupakan ide bagus dari perspektif kombinasi perkiraan.
Richard Hardy
Tujuan: "untuk melatih model tunggal untuk prediksi permintaan semua 1200 produk?" Saya menganggapnya secara harfiah sebagai persamaan tipe 1 dengan 1 set parameter tetap / global yang diperkirakan dari semua 1.200 seri waktu ". Mungkin saya terlalu membacanya
IrishStat
Atau mungkin saya salah paham.
Richard Hardy
3

1200 produk adalah pendorong utama dimensi masalah Anda. Sekarang Anda hanya memiliki 25 periode. Ini adalah data yang sangat sedikit, tidak cukup untuk melakukan segala jenis analisis korelasi selimut. Dengan kata lain Anda tidak memiliki data untuk memiliki perkiraan semua produk secara simultan tanpa mengurangi dimensi. Ini cukup banyak menghilangkan semua VARMA dan model teoritis bagus lainnya. Tidak mungkin untuk berurusan dengan koefisien model-model ini, ada terlalu banyak dari mereka untuk memperkirakan.

Pertimbangkan analisis korelasi sederhana. Anda akan membutuhkan (1200x1200 + 1200) / 2 sel dalam matriks kovarians / korelasi. Anda hanya memiliki 25 titik data. Matriks akan peringkat yang cukup untuk tingkat yang sangat besar. Apa yang akan kamu lakukan? Secara umum Anda memiliki dua pendekatan sederhana: prakiraan terpisah dan model faktor.

Pendekatan pertama sudah jelas: Anda menjalankan setiap produk secara mandiri. Variasi adalah mengelompokkan mereka berdasarkan beberapa fitur, misalnya sektor seperti "mens closing".

dsaya=jFjβjsaya+esayaFj

Jika ini adalah faktor eksogen, maka Anda perlu mendapatkan beta dengan meregres seri ini pada masing-masing faktor. Untuk PCA, Anda bisa melakukan PCA yang kuat dan mendapatkan beberapa faktor pertama dengan bobotnya yang Anda betas.

F^j

Aksakal
sumber
Saya melihat poin Anda sekitar 25 periode yang menghasilkan deret waktu yang sangat singkat, tetapi bagaimana jika itu adalah nilai bulanan? Maka OP memiliki dua tahun data bulanan, yang cukup untuk menangkap musiman, atau setidaknya menggunakan smoothing eksponensial sederhana, bukan?
Skander H.
@ SkanderH., 25 poin bisa cukup untuk menjalankan satu seri (yaitu masing-masing seri sendiri), atau agregat. Maksud saya adalah tidak cukup menjalankan ini sebagai suatu sistem.
Aksakal
Atau mereka bisa menjadi faktor eksogen, misalnya yang Anda peroleh dengan analisis PCA. Mungkin endogen ?
Richard Hardy
1

Saya tidak yakin apakah Anda tertarik dengan solusi berbasis cloud, tetapi Amazon membuat algoritma yang mereka sebut "DeepAR" tersedia melalui AWS SageMaker, seperti yang terlihat di sini .

Algoritma ini secara khusus dimaksudkan untuk dapat belajar dari beberapa seri waktu input untuk membuat perkiraan, termasuk fitur statis dan dinamis; seperti yang terlihat dalam kutipan ini dari halaman tertaut di atas:

Input pelatihan untuk algoritma DeepAR adalah satu atau, lebih disukai, lebih banyak seri waktu target yang dihasilkan oleh proses yang sama atau proses serupa. Berdasarkan pada dataset input ini, algoritma ini melatih model yang mempelajari perkiraan proses / proses ini dan menggunakannya untuk memprediksi bagaimana seri waktu target berkembang. Setiap seri waktu target dapat secara opsional dikaitkan dengan vektor fitur kategori statis (tidak tergantung waktu) yang disediakan oleh bidang cat dan vektor seri waktu dinamis (tergantung waktu) yang disediakan oleh bidang dynamic_feat.

Sayangnya, sejauh yang saya tahu, mereka tidak membuat algoritma ini tersedia untuk penggunaan offline / self-host.

mbrig
sumber