Menganalisis kesenjangan utama dari Nabi, memeriksa komponen utamanya, menyoroti keunggulan AR-Net dan integrasinya yang mulus dalam algoritma

Apakah Anda bosan dengan model perkiraan deret waktu tradisional yang memerlukan penyesuaian yang sulit dan kemampuan menjelaskannya terbatas? Kunjungi NeuralProphet, pustaka perkiraan mutakhir yang memanfaatkan kekuatan jaringan saraf dan deret waktu yang dapat didekomposisi untuk menghasilkan prediksi yang akurat.

Baik Anda bekerja di bidang keuangan, pemasaran, atau industri lainnya yang mengandalkan perkiraan, NeuralProphet adalah alat yang Anda perlukan untuk meningkatkan prediksi Anda.

Artikel ini akan mendalami komponen NeuralProphet dan memandu Anda memanfaatkannya. Jadi, minumlah kopi dan jelajahi masa depan perkiraan deret waktu.

Beda dengan Nabi

Sebagai seorang ilmuwan data, Anda mungkin akrab dengan Nabi, algoritma terkenal yang dikembangkan pada tahun 2017 oleh Facebook, jika Anda ingin mendalaminya lebih dalam, lihat “artikel” ini. NeuralProphet dapat dilihat sebagai evolusi dari algoritma Nabi yang menggabungkan kekuatan jaringan saraf. Dalam paragraf ini kami akan dengan cepat mengilustrasikan perbedaan utama antara kedua algoritma tersebut.

NeuralProphet dikembangkan pada tahun 2020 oleh Facebook [1, 2]. Demikian pula dengan Nabi, ini didasarkan pada deret waktu yang dapat didekomposisi, namun, selain itu, ini mencakup komponen autoregresif berdasarkan jaringan saraf: AR-net. Yang terakhir ini juga dapat diperluas untuk mencakup regresi eksternal yang dimodelkan dengan jaringan AR yang berbeda dibandingkan dengan rangkaian waktu yang ditargetkan.

NeuralProphet menggunakan PyTorch sebagai backendnya, yang memungkinkannya memanfaatkan semua inovasi dan penemuan terbaru dari komunitas pembelajaran mendalam, seperti:

  • versi modern dari penurunan gradien stokastik mini-batch (SGD)
  • pengoptimal tingkat lanjut (misalnya, Adam)
  • kemungkinan untuk menyesuaikan semua komponen, mulai dari lapisan hingga fungsi kerugian (Anda dapat menemukan implementasinya di akhir artikel).

Yang terakhir, salah satu berita terhebat yang diperkenalkan dengan NeuralProphet, adalah dukungan Pemodelan Global, yaitu menggunakan pengamatan historis dari beberapa deret waktu agar sesuai dengan model perkiraan. Fitur ini sangat cocok untuk rangkaian waktu yang terdiri dari rangkaian waktu yang lebih kecil, karena memungkinkan untuk melatih satu model pada rangkaian terkait yang berbeda.

Komponen utama NeuralProphet

Dokumentasi NeuralProphet sangat ringkas, oleh karena itu kami mencoba mengeksplorasi sepenuhnya konsep utamanya dan menyediakan elemen penting yang akan menyederhanakan penggunaan dan pemahamannya di paragraf mendatang. Jadi, bersiaplah saat kita melihat lebih dekat setiap komponennya.

Seperti disebutkan sebelumnya, NeuralProphet didasarkan pada deret waktu yang dapat didekomposisi. Menurut pendekatan ini, setiap deret waktu dapat dipecah menjadi berbagai komponen yang tidak dapat diobservasi dan menunjukkan pola yang berbeda. Komponen tersebut adalah tren, musiman, dan variasi acak. NeuralProphet juga menyertakan istilah tambahan lainnya: peristiwa khusus, regresi masa depan, komponen autoregresif, dan regresi tertinggal. Oleh karena itu, prediksi pada waktu t dijelaskan dengan rumus berikut:

Mari kita jelajahi bagaimana setiap komponen dihitung di NeuralProphet.

Kecenderungan

Tren mewakili pergerakan jangka panjang dari rangkaian tersebut. Representasi tren yang paling klasik adalah kombinasi offset dan tingkat pertumbuhan.

Dimana kmewakili tingkat pertumbuhan dan m mewakili offset.

Sayangnya, di dunia nyata hanya sedikit fenomena yang dapat direpresentasikan melalui tren linier ini. NeuralProphet, dimulai dari ide sederhana tentang pemodelan tren, namun memungkinkan laju pertumbuhan berubah di sejumlah lokasi terbatas, yang disebut titik perubahan. Di antara dua titik perubahan, tingkat pertumbuhan dijaga konstan. Dengan melakukan hal ini, tren dimodelkan sebagai rangkaian linier berkesinambungan, sehingga menghasilkan model non-linier yang dapat diinterpretasikan.

Jadi, misalkan Cadalah himpunan n𝒸 titik perubahan, trennya dapat dijelaskan dengan rumus berikut:

Mari kita selangkah demi selangkah untuk mengetahui maknanya.

Suku pertama (δ₀ + Γ(t)ᵀ δ) mewakili laju pertumbuhan pada waktu t, yang ditentukan dengan menjumlahkan laju pertumbuhan awal δ₀, jumlah dari penyesuaian laju di semua titik perubahan hingga langkah waktu t.

Suku kedua (ρ₀ + Γ(t)ᵀ ρ) melambangkan pengimbangan yang bergantung pada waktu. Sekali lagi, ρ₀ mewakili offset segmen pertama, dan offset pada waktu t diberikan oleh jumlah ρ₀ dan semua penyesuaian pada setiap titik perubahan hingga waktu t. Vektor konstanta potongan Γ(t) ∈ R menunjukkan apakah waktu t telah melewati setiap titik perubahan.

Pada gambar berikut kita dapat mengamati bagaimana NeuralProphet memodelkan tren untuk sampel deret waktu. Garis putus-putus mewakili posisi titik perubahan.

Musiman

Ide di balik pemodelan musiman di NeuralProphet adalah Deret Fourier, yang memungkinkan penguraian fungsi periodik kontinu f(x) sebagai deret sinus dan suku kosinus (yang disebut deret Fourier). Istilah-istilah ini disebut Fourier harmonik dan dicirikan oleh amplitudo dan frekuensinya sendiri.

Untuk memodelkan musiman, kita memerlukan suku Fourier (N) sebanyak siklus makroskopis deret tersebut, seperti terlihat pada gambar berikut:

Musiman dihitung melalui hubungan berikut:

Dimana k mewakili jumlah suku Fourier dan p mewakili periodisitas. Biasanya ada periodisasi yang berbeda, misalnya suatu rangkaian mungkin bergantung pada bulan dalam setahun, tetapi juga pada hari dalam seminggu. Oleh karena itu, rumus lengkap untuk memodelkan musiman di NeuralProphet adalah:

Dimana P mewakili himpunan semua periodisitas. NeuralProphet mendukung pola musiman aditif dan multiplikatif:

Dimana musiman dikalikan dengan tren T(t).

NeuralProphet memungkinkan musiman tahunan, mingguan, dan harian. Jumlah default suku Fourier per musim adalah k = 6 untuk p = 365,25 (tahunan), k= 3 untuk p = 7 (mingguan), dan k= 6 untuk p = 1 (harian). Namun, jumlah suku Fourier juga dapat disesuaikan.

Acara dan hari libur

Peristiwa dan hari libur terjadi secara sporadis, jika kehadirannya berdampak pada fenomena yang diteliti, maka dapat dimasukkan ke dalam model sebagai variabel biner. Demikian pula dengan fitur-fiturnya, dampaknya dapat bergantung pada tren atau tidak tergantung pada tren:

Pustaka NeuralProphet sudah menyertakan serangkaian hari libur yang telah ditentukan sebelumnya untuk setiap negara, namun pengguna dapat menentukan dan menambahkan acara lebih lanjut. Selain itu, dimungkinkan untuk memilih interval di sekitar tanggal acara. Misalnya, mengingat Natal, Anda mungkin ingin mempertimbangkan sebuah acara juga sehari sebelum dan sesudahnya, sehingga acara Natal Anda akan disertakan dari tanggal 24ᵗʰ hingga 26ᵗʰ.

Regresor di masa depan

Regressor adalah variabel eksternal yang pengaruhnya memengaruhi variasi variabel target (dalam kasus kami deret waktu). Di NeuralProphet, regressor yang nilainya diketahui di masa depan disebut regressor masa depan, sedangkan regressor yang nilainya tidak diketahui di masa depan disebut regressor tertinggal.

Mari kita mulai menjajaki regresi di masa depan. Mereka diwakili oleh rumus berikut:

Di mana:

T(t) mewakili tren dan Ff​(t) menunjukkan efek fitur f pada waktu t. Jika efek dari regressor f diperkuat seiring dengan perubahan tren, maka regressor tersebut harus dimodelkan sebagai perkalian.

Komponen NeuralProphet AutoRegressive (AR).

AR-net

Sebelum mendalami komponen model berdasarkan autoregresi, sebaiknya fokus pada AR-net.

Ide memanfaatkan jaringan saraf untuk melakukan autoregresi berasal dari penelitian terbaru oleh peneliti Stanford dan Facebook [3].

Mereka mengusulkan kerangka kerja baru yang menggabungkan model statistik tradisional dengan jaringan saraf. Berbeda dari NN yang paling banyak digunakan dalam deret waktu, seperti Recurrent Neural Networks (RNN), Convolutional Neural Networks (CNN), atau model berbasis perhatian, penulis mengadopsi Feed-Forward Neural Network (FFNN) sederhana, biasanya tanpa ada yang tersembunyi. lapisan.

Arsitektur NN yang setara dengan model AR dapat dilihat pada Gambar 5: keluaran jaringan adalah kombinasi linier antara masukan dan bobot yang dipelajari model selama pelatihan. Arsitektur ini memiliki dua keunggulan utama: kemampuan interpretasi dan pengurangan jumlah parameter yang harus disesuaikan.

Dengan hanya menggunakan nilai masa lalu sebagai masukan untuk memprediksi nilai masa depan, NN meniru proses AR tradisional, namun dengan keuntungan sebagai berikut:

1. Mempertahankan tingkat interpretasi yang sama seperti model AR klasik;

2. Kompleksitas komputasi berskala linier (kompleksitas komputasi model AR klasik berskala setidaknya secara kuadrat), sehingga AR-net dapat menskalakan dengan baik ke pesanan besar, memungkinkan perkiraan ketergantungan jangka panjang;

3. AR-net dapat secara otomatis memilih dan mempelajari koefisien renggang.

Selain itu, NN merupakan model data non-parametrik yang tidak memerlukan asumsi yang membatasi.

Untuk menjelaskan keuntungan pertama, penulis menyimulasikan proses AR, lalu memasang AR klasik dan FFNN. Dengan melihat gambar 6, kita dapat melihat bahwa, meskipun menggunakan teknik optimasi yang berbeda (yaitu kuadrat terkecil untuk AR dan SGD untuk AR-net), bobot yang dipelajari oleh kedua model tersebut hampir sama, yang juga sangat mirip dengan bobot sebenarnya.

Untuk menunjukkan keuntungan kedua, penulis mengukur waktu pelatihan aktual AR klasik dan AR-net untuk beberapa nilai urutan p (yaitu, jumlah nilai sebelumnya dari rangkaian waktu yang digunakan untuk menghitung perkiraan). Waktu pelatihan AR klasik meningkat hampir secara eksponensial dibandingkan dengan garis datar jaringan AR, seperti yang dapat dilihat pada gambar. 8. Hal ini menjadikan AR-net satu-satunya pilihan yang layak ketika pesanan tinggi.

Keuntungan ketiga dicapai dengan memperkenalkan istilah regularisasi, yang disebut R, pada kerugian. Ada dua konsekuensi utama:

  • Kemungkinan untuk menyesuaikan model yang lebih besar tanpa mengetahui terlebih dahulu tatanan AR yang sebenarnya
  • Akhir dari asumsi bahwa koefisien AR harus terdiri dari lag yang berurutan. Misalnya, dengan mempertimbangkan rangkaian waktu bisnis pada umumnya, terdapat data yang hilang selama akhir pekan. Time series seperti itu tidak bisa dimodelkan langsung dengan proses AR, karena lagnya tidak berurutan, memang hanya ada lima lag berturut-turut, lalu jump skip dua hari.

Pada gambar 8 Anda dapat melihat contoh Sparse AR. Terlepas dari urutan p=7 (yaitu, ada tujuh titik terakhir sebagai masukan), regularisasi mengecilkan beberapa kelambatan menjadi 0.

Pada gambar 9 terdapat contoh yang diambil langsung dari dokumentasi.

Di sini, parameter regularisasi ditingkatkan di plot bawah, dan sebagai konsekuensinya relevansi beberapa lag dikurangi menjadi 0. Perlu dicatat bahwa plot-plot ini mewakili relevansi lag rata-rata, karena untuk setiap titik di masa depan kami ingin memperkirakan pengaruh dari kelambatan masa lalu berbeda. Misalnya, jika kita ingin memprediksi data besok, AR yang terkait dengan hari ini akan mengambil nilai, namun saat kita memperkirakan lusa, AR yang terkait dengan hari ini akan mengambil nilai yang berbeda. Jadi, yang diplot adalah semacam nilai rata-rata (untuk semua titik perkiraan) untuk setiap lag.

Terakhir, untuk membandingkan AR-net tersebut dengan AR klasik, penulis memasangkan AR klasik dan AR-net sparse dengan ukuran model yang bervariasi ke proses AR urutan 3 (gbr. 10). Tanpa menjelaskan secara detail, pada sumbu y terdapat ukuran selisih antara bobot/koefisien yang dipelajari dan bobot/koefisien sebenarnya. Jadi, semakin rendah metriknya, semakin baik modelnya. AR-net renggang juga mampu mempertahankan performa yang baik dengan ukuran model yang lebih besar, sedangkan performa AR klasik menurun segera setelah pesanan menyimpang dari yang sebenarnya.

Jaringan AR yang mendalam

Kami dapat menyimpulkan penyimpangan kami pada AR-net pada saat ini, namun penulis memilih untuk mengeksplorasi lebih jauh, sehingga mendorong kami untuk melakukan hal yang sama. Memang benar, mereka juga mempertimbangkan kemungkinan untuk menyisipkan lapisan tersembunyi (lihat Gambar 11 di sebelah kiri). Dalam hal ini terdapat trade-off antara keakuratan perkiraan dan kemampuan interpretasi. Dengan menambahkan lapisan tersembunyi, bersama dengan fungsi aktivasi (misalnya, ReLU), dimungkinkan untuk memodelkan hubungan non-linier antara lag dan variabel respons, namun hubungan yang jelas antara bobot bersih AR dan bobot AR klasik akan hilang. Namun demikian, bobot setelah lapisan pertama masih dapat digunakan sebagai proksi relevansi kelambatan (Gambar 11 di sisi kanan).

Komponen AR diimplementasikan di NeuralProphet

Komponen autoregresif yang diterapkan di NeuralProphet sangat bergantung pada AR-net, namun ini bukan salinan biasa, seperti plug-and-play. Bagi sebagian besar pengguna, perubahan tersebut tidak relevan, namun untuk memberikan semua informasi dan mengetahui alat yang digunakan, kami menjelaskan secara singkat variasi tersebut. Pertama, mengenai versi AR mendalam, fungsi aktivasi ReLU dan bias setelah lapisan tersembunyi dihilangkan. Selain itu, fungsi regularisasi pada dasar AR renggang telah dimodifikasi. Secara khusus, pembaca yang tertarik dapat merujuk ke makalah AR-net dan NeuralProphet. Terakhir, perkembangan yang paling penting berkaitan dengan cakrawala perkiraan, yaitu berapa banyak langkah ke depan yang dapat kita perkirakan. AR-net standar dapat memperkirakan 1 poin, belum tentu merupakan langkah pertama ke depan. Jadi, jika kita ingin meramalkan hari esok dan lusa, kita harus membuat dua NN, satu untuk setiap langkah. Penulis NeuralProphet berhasil menghasilkan beberapa perkiraan dengan NN yang sama, yang dapat memperkirakan semua langkah. Sayangnya tidak ada rincian bagaimana mereka menanganinya. Umumnya, belum ada penelitian yang dipublikasikan tentang bagaimana perbedaan tersebut mempengaruhi kinerja. Sekali lagi, kami hanya ingin memberi tahu Anda tentang model yang Anda gunakan.

Sebagaimana dinyatakan oleh penulis, penting untuk diingat bahwa untuk setiap titik perkiraan terdapat lebih banyak prediksi, yang dibuat pada asal yang berbeda. Lihat gambar 13 sebagai contoh. Langkah pertama digunakan sebagai lag, oleh karena itu tidak ada perkiraan yang terkait. Perkiraan pertama yang tersedia adalah tahun 2020–09–06 dan dibuat pada langkah sebelumnya, terletak di kolom yhat1. Langkah selanjutnya (2020–09-13) memiliki dua prediksi, yhat1 melakukan langkah sebelumnya dan yhat2, melakukan dua langkah sebelumnya. Semakin banyak langkah ke depan, semakin banyak perkiraan yang ada, hingga jumlah langkah yang akan diperkirakan.

Regressor tertinggal

Komponen Lagged Regressor memanfaatkan jaringan saraf yang dijelaskan di atas untuk memperkirakan regressor yang nilai masa depannya tidak diketahui. Kemudian, mereka dapat dimodelkan seolah-olah mereka adalah regresi di masa depan. Setiap regressor, juga dikenal sebagai kovariat, dimodelkan oleh jaringan AR tertentu, dengan memasukkan p pengamatan terakhir dari regressor tersebut.

Mengikuti kebijakan penulis yang mudah digunakan, kemampuan untuk dengan mudah menambahkan regressor dengan nilai masa depan yang tidak diketahui tanpa membangun model khusus adalah hal yang luar biasa. Meskipun demikian, kendali yang Anda miliki terhadap perkiraan regresi tersebut terbatas, baik dalam hal parameter NN maupun kategori model, karena Anda hanya dapat meniru proses AR, yang tidak dijamin menjadi yang terbaik.

Contoh fleksibilitas baru: Menyesuaikan fungsi kerugian

Kami menyoroti peningkatan NeuralProphet dibandingkan dengan Nabi dan komponen utamanya. Di sini kami ingin memberikan contoh nyata tentang potensi NeuralProphet dalam hal fleksibilitas. Memang tanpa perlu memutarbalikkan model, kita cukup memasang fungsi custom loss, asalkan tertulis di PyTorch.

Dalam kasus penggunaan berbasis deret waktu yang kami kembangkan, karena kebutuhan bisnis yang spesifik, overshooting lebih disukai daripada undershooting, sehingga kami bereksperimen dengan fungsi kerugian yang disesuaikan. Seperti yang bisa Anda lihat pada rumus di bawah, kita mulai dengan mendefinisikan ukuran kesalahan relatif E. Lalu, jika E ‹ -0,05, yang berarti kita meremehkan nilai sebenarnya lebih dari 5%, kerugiannya adalah MSE dikalikan dengan konstanta k . Kalau tidak, yang rugi hanyalah UMK. Dengan cara ini fungsi kerugian tetap dapat terdiferensiasi, sekaligus memberikan penalti terhadap undershooting. Di sisi kanan gambar 14, implementasi python dari fungsi ini dapat ditemukan. C adalah singkatan dari kondisi, karena ini adalah kesalahan ketika target bukan 0, sebaliknya adalah target. Kemudian, l adalah UMK yang dikalikan jika c di bawah -0,05, jika tidak, maka UMK tersebut hanya mewakili UMK saja.

Pada Gambar 14 terdapat contoh percobaan yang kami lakukan. Secara khusus, ada tiga perkiraan berbeda yang dibuat masing-masing dengan fungsi kerugian ini: UMK klasik rugi, UMK terpidana dengan k = 2, dan UMK terpidana dengan k= 3. Meningkat k sedikit menggeser kurva perkiraan ke atas, seperti yang diharapkan.

NeuralProphet dikembangkan dengan tujuan menjadi alat sederhana, juga dapat digunakan oleh orang non-teknis, tanpa perlu menyiapkan model secara menyeluruh. Namun, kami menunjukkan bagaimana kemudahan ini tidak membatasi fleksibilitas dan potensi model. Di sini kami baru saja mendefinisikan fungsi kerugian kustom sederhana, namun pengguna tingkat lanjut juga dapat menggunakan jaringan saraf itu sendiri dan menyesuaikannya dengan kebutuhan mereka.

Kesimpulan

Singkatnya, NeuralProphet adalah alat menarik dan berkembang pesat yang menggabungkan model statistik klasik terbaik dan pembelajaran mendalam dalam hal perkiraan deret waktu. Perpaduan unik antara metode klasik dan modern, serta antarmuka yang lugas dan mudah digunakan, menjadikannya pilihan ideal bagi siapa pun yang ingin membuat model perkiraan yang akurat dan dapat ditafsirkan.

Artikel ini ditulis dengan kolaborasi berharga dari Riccardo Tambone

Referensi

[1] O. Triebe, H. Hewamalage, P. Pilyugina, N. Laptev, C. Bergmeir dan R. Rajagopal, “NeuralProphet: Peramalan yang Dapat Dijelaskan dalam Skala Besar,” arXiv,2021.

[2] “Dokumentasi NeuralProphet,” [Online]. Tersedia: https://neuralprophet.com/.

[3] O. Triebe, N. Laptev dan R. Rajagopal, “AR-Net: Jaringan Neural Auto-Regresif sederhana untuk deret waktu,” arXiv,2019.

[4] P. Montero-Manso dan R. J. Hyndman, “Prinsip dan algoritme untuk kelompok peramalan deret waktu: Lokalitas dan globalitas,” International Journal of Forecasting,vol. 37, tidak. 4, hlm. 1632–1653, 2021.

[5] H. Hewamalage, C. Bergmeir dan K. Bandara, “Model global untuk peramalan deret waktu: Studi simulasi,” Pattern Recognition,vol. 124, 2022.