Ikhtisar Time Series Menggunakan Draf
Bayangkan ini!
- Anda bekerja sebagai ilmuwan data untuk perusahaan yang menyediakan solusi untuk bisnis. Pada satu hari, bos Anda menyerahkan dua set data dengan catatan tidak ada penumpang udara (penumpang udara) dan susu yang diproduksi oleh sapi (terutama susu), meminta analisis data secara rinci dan memprediksi nilai masa depannya.
- Dengan memeriksa, Anda tidak menemukan hubungan antara keduanya. Akibatnya, Anda memutuskan untuk membuat dua model secara terpisah. Jadi Anda memproses kumpulan data (panda), menemukan musiman (model statistik), dan melatih dua model (Tensorflow/Pytorch). Setelah banyak hyper-tuning, Anda menemukan kecocokan dan memprediksi hasilnya.
- A dengan konsekuensi, Anda pergi ke bos Anda, dan seperti biasa, bos Anda bertanya "tidak bisakah kita melakukan ini menggunakan satu model?".
Pertanyaan yang diajukan oleh bos memang benar. Meskipun banyak perbaikan di lapangan, orang-orang merasa sulit untuk mengerjakannya DATA DERI WAKTU. Jadi perusahaan, Unit8, membuat paket python yang disebut PANAHAN, yang bertujuan untuk memecahkan masalah dalam skenario.
Artikel ini adalah pengantar praktis tentang cara memulai perpustakaan. Tepatnya, kami akan membuat ulang skenario yang sama dan melihat apa yang ditawarkan perpustakaan ini kepada kami. Jadi mari kita mulai.
Pemasangan Draf untuk Time Series
Untuk memulai, kami akan menginstal panahan. Menggunakan anaconda lingkungan sangat dianjurkan. Dengan asumsi Anda telah membuat lingkungan, buka terminal dan masukkan perintah berikut:
conda install -c conda-forge -c pytorch u8darts-semua
Catatan: Mungkin perlu waktu karena ukuran yang dapat diunduh kira-kira 2.98 Gb dan akan mengunduh semua model yang tersedia!
Setelah instalasi, luncurkan notebook jupyter dan coba impor perpustakaan menggunakan:
anak panah impor
Jika tidak ada yang keluar, berarti berhasil diimpor, jika tidak, google kesalahannya :)
Memuat Dataset dari Perpustakaan Dart
Untuk mempermudah, kita akan menggunakan perpustakaan kumpulan data dart untuk memuat datanya.
dari darts.datasets, impor AirPassengersDataset, MonthlyMilkDataset
Di sini kami telah mengimpor dua set data yang diperlukan saat kami meniru skenario.
Mencetak Kumpulan Data
Sekarang mari kita mencetak dataset. Ada banyak cara untuk melakukannya, tetapi kami akan fokus pada dua yang paling intuitif.
Sebagai Data Array
Secara umum, kita dapat memuat dataset secara langsung menggunakan memuat() metode, menghasilkan campuran dari susunan dan mengkoordinasikan - Array Data memiliki bulan tersebut. tipe data sebagai tanggal-waktu (mewakili deret waktu).
AirPassengersDataset().load() BulananMilkDataset().load()
Keluaran:
Sebagai Dataframe
Atau, dapat dimuat sebagai bingkai data menggunakan pd_dataframe().
display("Dataset Penumpang Udara",AirPassengersDataset().load().pd_dataframe()) display("Dataset Susu Bulanan",MonthlyMilkDataset().load().pd_dataframe())
Sepertinya kami memiliki 144 pengamatan untuk penumpang udara dan 168 pengamatan untuk dataset susu bulanan.
Merencanakan Titik Data
Dataframe tidak apa-apa, tetapi tidak mengungkapkan banyak hal, jadi kami dapat memplot dataset kami menggunakan matplotlib:
# memuat pustaka impor matplotlib.pyplot sebagai plt %matplotlib sebaris
# Memuat Dataset sebagai Data-Array air_series = AirPassengersDataset().load() milk_series = MonthlyMilkDataset().load()
#plot chart air_series.plot(label="Jumlah Penumpang") milk_series.plot(label="Pounds Susu Diproduksi Per Bulan" ) plt.legend();
Dalam kode di atas, kita hanya sarat data dan diplot dia. Juga, kami menyertakan label dan legenda sehingga mudah dipahami.
Hasilnya keluar sebagai grafik yang terlihat bagus:
Di sini sumbu x mewakili bulan, dan sumbu y- Data.
Perhatikan bahwa Anda perlu menurunkan versi ke matplotlib 3.1.3 agar kode berfungsi di collab.
Pengolah Data
Dengan cermat mengamati hal di atas, kita dapat menemukan bahwa data tidak diskalakan, yaitu menunjukkan variabilitas, jadi ada baiknya jika kita skalakan ulang.
Penskalaan Standar
Untungnya kami memiliki Scaler () kelas untuk ini di perpustakaan itu sendiri, dan kita dapat menggunakannya dengan membuat objek scaler dan kemudian memasangnya ke dataset.
-
# impor
-
dari darts.dataprocessing.transformers import Scaler
-
# membuat objek penskala
-
scaler_air , scaler_milk = Scaler(), Scaler()
-
#melakukan penskalaan
-
air_series_scaled = scaler_air.fit_transform(air_series)
-
milk_series_scaled = scaler_milk.fit_transform(seri_susu)
Dalam kode di atas, kami telah mengimpor Scaler, dibuat dua objek skala, dan melakukan skala.
Sekarang mari kita lihat perubahannya untuk melihat perbedaannya:
# plottingair_ds.plot(label="Jumlah Penumpang") air_series_scaled.plot(label = "Penumpang Udara Berskala") milk_series_scaled.plot(label = "Susu Dalam Pound") plt.legend();
Seperti yang dapat disaksikan, data kami diskalakan dan terbukti dalam sumbu y plot.
Perpecahan Uji Kereta
Sekarang menggunakan data skala, kami akan membagi dataset kami. Untuk ini, kami akan mengambil 36 sampel pertama sebagai set pelatihan dan tetap sebagai set validasi untuk kedua set data.
air_series_train, air_series_val = air_series_scaled[:-36], air_series_scaled[-36:] milk_series_train, milk_series_val = milk_series_scaled[:-36], milk_series_scaled[-36:]
Perhatikan ini bukan bingkai data melainkan objek deret waktu panah.
Untuk konfirmasi, Anda dapat melakukan:
jenis (air_series_train)
Melatih Model Deret Waktu menggunakan Dart
Akhirnya, kami dalam keadaan untuk melakukan pelatihan. DART menyediakan banyak solusi seperti Arima, Auto-Arima, Varima FFT, Empat Theta, Nabi, dan beberapa model pembelajaran mendalam seperti RNN, Blok RNN (Menggunakan LSTM), TCN, NBEATS, Transformer.
Memuat Model Seri Waktu Darts
Untuk kasus penggunaan kami, kami akan menggunakan N-BEAT model disediakan karena mendukung peramalan deret waktu multivarian (data memiliki banyak fitur), yang memungkinkan kami melakukan semua peramalan menggunakan satu model. Jadi mari kita memuatnya.
# mengimpor model dari darts.models mengimpor NBEATSModel print('model_loaded')
>> model_loaded
CATATAN: Anda bebas menggunakan model apa pun yang Anda sukai, tetapi pastikan Anda membaca dokumentasi dan melihat fitur setiap model.
Membuat Objek Model
Setelah memuat model kita, mari kita mulai.
# membuat model objek model = NBEATSModel(input_chunk_length=24 , output_chunk_length=12, n_epochs = 100 , random_state = 15)
Salah satu hal cepat yang perlu diperhatikan di sini adalah memasukkan, dan panjang potongan keluaran is 24 bulan dan 12 bulan, masing-masing. Dalam deret waktu, kami biasanya lebih memilih jendela dari waktu ke waktu daripada menggunakan data nyata. Juga, kami melakukan pelatihan kami untuk 100 zaman.
Elaborasi Tambahan
- Pada tahap/epoch pertama, kami akan menyediakan 24 bulan data sebagai data input dan 12 bulan sebagai data output.
- Pada langkah berikutnya, kami akan bergerak satu langkah ke depan dan memberikan data 24 bulan ke depan sebagai input dan output 12 bulan, dan seterusnya hingga semua titik data dari set pelatihan habis.
- Berdasarkan ini pada setiap langkah kerugian dihitung dan model belajar untuk tampil lebih baik dan lebih baik dari waktu ke waktu.
Pas Data Untuk Model
Sekarang akhirnya, mari kita latih model kita dengan menyesuaikan data pelatihan kita. Mungkin butuh waktu, jadi bersabarlah!
# pas model model.fit([air_series_train, milk_series_train], verbose = True)
Verbose = Benar menjamin log.
Prediksi dan Evaluasi Model Time Series Menggunakan Darts
Untuk memastikan model yang dilatih berkinerja baik, kami dapat memeriksanya PETA – Rata-rata kesalahan persentase absolut untuk data yang diprediksi.
# impor dari darts.metrics impor mape
pred_air = model.predict(n = 36, series = air_series_train) pred_milk = model.predict(n =36, series = milk_series_train)
print("Peta = {:.2f}%".format(mape(air_series_scaled , pred_air))) print("Peta = {:.2f}%".format(mape(milk_series_scaled , pred_milk))))
Keluaran:
>> Mape = 6.74% >> Mape = 16.82%
Terbukti, kesalahannya cukup rendah, dan pola menarik muncul bahwa ada agak hubungan antara susu yang dihasilkan oleh sapi dan jumlah penumpang udara bepergian, yang cukup menarik. Juga, perhatikan bahwa kami telah menggunakan satu model untuk memprediksi kedua kumpulan data! (masalah yang ditangani oleh bos kami untuk diperbaiki😁).
Visualisasi Deret Waktu menggunakan Prediksi Model Dart
Terakhir, mari kita lihat bagaimana prediksi kita muncul pada grafik menggunakan cara yang sama seperti kita memeriksa dataset kita, tetapi menggunakan dataset yang diskalakan untuk interpretasi yang lebih baik.
# hasil plot air_series_scaled .plot(label = "actual") pred.plot(label = "forecasted") # validasi data set plt.legend()
# hasil plot milk_ds_scaled.plot(label = "actual") pred.plot(label = "forecasted") # validasi data set plt.legend()
Garis biru mewakili data yang diprediksi sangat dekat dengan aktual (bkekurangan garis). Berarti kami telah berhasil dalam pencarian kami dan memecahkan masalah yang dibahas dalam skenario kami. Selamat untuk Anda!
Kesimpulan
Beberapa kesimpulan yang dapat ditarik adalah:
- Perpustakaan seperti dart dapat memberi kita cara baru untuk bekerja dari waktu ke waktu, memungkinkan fleksibilitas dan efisiensi.
- Sebagai bukti, kita dapat memuat, memproses, dan bahkan melatih beberapa kumpulan data menggunakan satu pustaka dan model.
- Dengan segala daya tariknya, seseorang dapat berhasil menobatkannya sebagai scikit-belajar untuk data deret waktu.
Dengan ini, kita telah sampai pada akhir artikel miniatur ini. Saya harap Anda menemukan ini menarik dan akan menerapkan yang dipelajari di beberapa proyek Anda.
Sampai jumpa lagi.
REFERENSI:
Buku Catatan Kode:- Collab
Untuk menghubungkan:- Linkedin, Twitter, Github, AnalitikVidhya
Semua gambar oleh penulis.
Sumber: https://www.analyticsvidhya.com/blog/2021/10/time-series-forecasting-made-easy-using-darts/
- "
- 100
- 7
- 98
- Mutlak
- Semua
- Membiarkan
- analisis
- analisis
- artikel
- membangun
- bisnis
- kode
- perusahaan
- membuat
- data
- ilmuwan data
- kumpulan data
- hari
- belajar mendalam
- efisiensi
- Lingkungan Hidup
- Fitur
- Akhirnya
- Pertama
- cocok
- keluwesan
- Fokus
- Gratis
- masa depan
- Umum
- baik
- di sini
- Seterpercayaapakah Olymp Trade? Kesimpulan
- How To
- HTTPS
- pengimporan
- IT
- Notebook Jupyter
- jalankan
- belajar
- pengetahuan
- Perpustakaan
- baris
- memuat
- Media
- Metrik
- susu
- model
- bulan
- pindah
- menawarkan
- Buka
- pola
- Konsultan Ahli
- pound
- ramalan
- Prediksi
- Diproduksi
- memprojeksikan
- Ular sanca
- pytorch
- pencarian
- arsip
- penelitian
- Hasil
- skala
- Seri
- set
- Ukuran
- So
- Solusi
- MEMECAHKAN
- membagi
- awal
- mulai
- Negara
- Mendukung
- uji
- Theta
- waktu
- Pelatihan
- us
- visualisasi
- Kerja