Unicorn Investors ingin berinvestasi dalam bentuk transportasi baru – JetRail. JetRail menggunakan teknologi propulsi Jet untuk menjalankan rel dan memindahkan orang dengan kecepatan tinggi. Investasi hanya masuk akal jika mereka bisa mendapatkan lebih dari 1 Juta pengguna bulanan dalam 18 bulan ke depan. Untuk membantu Unicorn Ventures dalam mengambil keputusan, Anda perlu memperkirakan lalu lintas di JetRail untuk 7 bulan ke depan. Anda diberi data lalu lintas JetRail sejak awal dalam file uji Show Anda bisa mendapatkan datasetnya di sini Disarankan untuk melihat dataset setelah menyelesaikan bagian pembuatan hipotesis Yuk Pahami, Apa Itu Data Time Series? Time Series umumnya adalah data yang dikumpulkan dari waktu ke waktu dan bergantung padanya. Di sini kita melihat bahwa hitungan mobil tidak bergantung pada waktu, jadi ini bukan deret waktu. Sementara tingkat CO2 meningkat sehubungan dengan waktu, maka itu adalah deret waktu Mari kita lihat definisi formal Time Series Serangkaian poin data yang dikumpulkan dalam urutan waktu dikenal sebagai deret waktu. Sebagian besar rumah bisnis mengerjakan data deret waktu untuk menganalisis angka penjualan untuk tahun depan, lalu lintas situs web, jumlah lalu lintas, jumlah panggilan yang diterima, dll. Data deret waktu dapat digunakan untuk peramalan Tidak setiap data yang dikumpulkan sehubungan dengan waktu mewakili deret waktu. Beberapa contoh prediksi deret waktu Python adalah Harga saham Jumlah Penumpang Maskapai Suhu Dari Waktu ke Waktu Sejumlah Pengunjung di Hotel Sekarang kita dapat membedakan antara data Time Series dan non-Time Series. mari kita jelajahi Time Series lebih jauh Sekarang setelah kita memiliki pemahaman tentang apa itu time series dan perbedaan antara time series dan non-time series, sekarang mari kita lihat komponen time series Komponen Peramalan Deret Waktu dengan Python 1. Kecenderungan. Tren adalah arah umum di mana sesuatu berkembang atau berubah. Jadi kami melihat tren yang meningkat dalam deret waktu ini. Kita dapat melihat bahwa jumlah penumpang meningkat seiring dengan bertambahnya tahun. Mari kita memvisualisasikan tren deret waktu Contoh Di sini garis merah mewakili tren peningkatan deret waktu 2. Musiman. – Pola lain yang jelas juga dapat dilihat pada deret waktu di atas, yaitu. e. , pola tersebut berulang pada interval waktu yang teratur yang dikenal sebagai musiman. Setiap perubahan atau pola yang dapat diprediksi dalam rangkaian waktu yang berulang atau berulang selama periode waktu tertentu dapat dikatakan musiman. Mari kita bayangkan musiman dari deret waktu Contoh Kita dapat melihat bahwa deret waktu mengulangi polanya setiap 12 bulan i. e ada puncak setiap tahun selama bulan Januari dan palung setiap tahun di bulan September, maka rangkaian waktu ini memiliki musiman 12 bulan Perbedaan Antara Seri Waktu dan Masalah Regresi Di sini Anda mungkin berpikir bahwa karena variabel target bersifat numerik, ia dapat diprediksi menggunakan teknik regresi, tetapi masalah deret waktu berbeda dari masalah regresi dengan cara berikut Jadi, memprediksi deret waktu menggunakan teknik regresi bukanlah pendekatan yang baik Analisis deret waktu terdiri dari metode untuk menganalisis data deret waktu untuk mengekstraksi statistik yang bermakna dan karakteristik data lainnya. Peramalan deret waktu adalah penggunaan model untuk memprediksi nilai masa depan berdasarkan nilai yang diamati sebelumnya Memahami DataKita akan mulai dengan langkah pertama, i. e Pembangkitan Hipotesis. Pembuatan Hipotesis adalah proses membuat daftar semua faktor yang mungkin dapat mempengaruhi hasil Pembuatan hipotesis dilakukan sebelum melihat data untuk menghindari bias yang mungkin timbul setelah observasi 1) Pembangkitan HipotesisAkan ada peningkatan lalu lintas seiring berlalunya waktu
Lalu Lintas akan Tinggi dari Mei hingga Oktober
Lalu lintas pada Hari Kerja akan Lebih Banyak Dibandingkan dengan Akhir Pekan / Hari Libur
Lalu lintas selama Jam Puncak akan Tinggi
Kami akan mencoba memvalidasi masing-masing hipotesis ini berdasarkan dataset. Sekarang mari kita lihat datasetnya Setelah membuat hipotesis kami, kami akan mencoba untuk memvalidasi mereka. Sebelum itu, kami akan mengimpor semua paket yang diperlukan 2) Menyiapkan Sistem dan Memuat DataVersi
Sekarang kita akan mengimpor semua paket yang akan digunakan di seluruh notebook import pandas as pd import numpy as np # For mathematical calculations import matplotlib.pyplot as plt # For plotting graphs from datetime import datetime # To access datetime from pandas import Series # To work on series %matplotlib inline import warnings # To ignore the warnings warnings.filterwarnings("ignore") Sekarang mari kita baca data kereta dan uji Kode Piton Mari kita buat salinan data latih dan uji sehingga meskipun kita melakukan perubahan pada dataset ini, kita tidak kehilangan dataset aslinya train_original=train.copy() test_original=test.copy()_ Setelah memuat data, mari kita lihat sekilas dataset untuk mengetahui data kita dengan lebih baik 3) Struktur dan Konten Kumpulan DataMari selami lebih dalam dan lihat kumpulan datanya. Pertama-tama, mari kita lihat fitur-fitur di dataset train dan test train.columns, test.columns Kami memiliki ID, Datetime, dan jumlah penumpang yang sesuai di file pelatihan. Untuk file pengujian kami hanya memiliki ID dan Datetime sehingga kami harus memprediksi Hitungan untuk file pengujian Mari kita pahami setiap fitur terlebih dahulu
Mari kita lihat tipe data dari setiap fitur train.dtypes, test.dtypes
Sekarang kita akan melihat bentuk dataset train.shape, test.shape_ Kami memiliki 18288 catatan berbeda untuk Jumlah penumpang di set kereta dan 5112 di set uji Sekarang kami akan mengekstrak lebih banyak fitur untuk memvalidasi hipotesis kami 4) Ekstraksi FiturKami akan mengekstrak waktu dan tanggal dari Datetime. Kita telah melihat sebelumnya bahwa tipe data Datetime adalah objek. Jadi pertama-tama kita harus mengubah tipe data ke format DateTime jika tidak, kita tidak dapat mengekstraksi fitur darinya train['Datetime'] = pd.to_datetime(train.Datetime,format='%d-%m-%Y %H:%M') test['Datetime'] = pd.to_datetime(test.Datetime,format='%d-%m-%Y %H:%M') test_original['Datetime'] = pd.to_datetime(test_original.Datetime,format='%d-%m-%Y %H:%M') train_original['Datetime'] = pd.to_datetime(train_original.Datetime,format='%d-%m-%Y %H:%M') Kami membuat beberapa hipotesis tentang pengaruh jam, hari, bulan, dan tahun terhadap jumlah penumpang. Jadi, mari ekstrak tahun, bulan, hari, dan jam dari Datetime untuk memvalidasi hipotesis kita for i in (train, test, test_original, train_original): i['year']=i.Datetime.dt.year i['month']=i.Datetime.dt.month i['day']=i.Datetime.dt.day i['Hour']=i.Datetime.dt.hour_ Kami membuat hipotesis untuk pola lalu lintas pada hari kerja dan juga akhir pekan. Jadi, mari buat variabel akhir pekan untuk memvisualisasikan dampak akhir pekan terhadap lalu lintas
Mari kita tetapkan 1 jika hari dalam seminggu adalah akhir pekan dan 0 jika hari dalam seminggu bukan akhir pekan def applyer(row): if row.dayofweek == 5 or row.dayofweek == 6: return 1 else: train_original=train.copy() test_original=test.copy()0 train_original=train.copy() test_original=test.copy()1 Mari kita lihat deret waktu train_original=train.copy() test_original=test.copy()_2 Di sini kita dapat menyimpulkan bahwa ada tren yang meningkat dalam rangkaian tersebut, yaitu. e. , jumlah hitungan meningkat terhadap waktu. Kita juga bisa melihat bahwa pada titik-titik tertentu terjadi peningkatan jumlah hitungan secara tiba-tiba. Alasan yang mungkin di balik ini bisa jadi pada hari tertentu, karena beberapa peristiwa lalu lintasnya tinggi Kami akan mengerjakan file pelatihan untuk semua analisis dan akan menggunakan file pengujian untuk peramalan Mari kita mengingat kembali hipotesis yang kita buat sebelumnya
Setelah melihat kumpulan data, sekarang kita akan mencoba memvalidasi hipotesis kita dan membuat kesimpulan lain dari kumpulan data tersebut 5) Analisis EksplorasiMari kita coba memverifikasi hipotesis kita menggunakan data aktual Hipotesis pertama kami adalah lalu lintas akan meningkat seiring berlalunya waktu. Jadi mari kita lihat jumlah penumpang tahunan train_original=train.copy() test_original=test.copy()_3 Hipotesis kedua kami adalah tentang peningkatan lalu lintas dari Mei hingga Oktober. Jadi, mari kita lihat hubungan antara hitungan dan bulan train_original=train.copy() test_original=test.copy()_4 Di sini terlihat penurunan rata-rata jumlah penumpang dalam tiga bulan terakhir. Ini tidak terlihat benar. Mari kita lihat rata-rata bulanan setiap tahun secara terpisah train_original=train.copy() test_original=test.copy()_5
Mari kita lihat rata-rata harian jumlah penumpang train_original=train.copy() test_original=test.copy()_6 Kami tidak mendapatkan banyak wawasan dari hitungan harian penumpang. Kami juga membuat hipotesis bahwa lalu lintas akan lebih banyak pada jam sibuk. Jadi mari kita lihat rata-rata jumlah penumpang per jam train_original=train.copy() test_original=test.copy()_7
Mari kita coba memvalidasi hipotesis kami di mana kami berasumsi bahwa lalu lintas akan lebih banyak pada hari kerja Dapat disimpulkan dari plot di atas bahwa lalu lintas lebih banyak pada hari kerja dibandingkan dengan akhir pekan yang memvalidasi hipotesis kami Sekarang kita akan mencoba melihat jumlah penumpang harian Catatan. - 0 adalah awal minggu, i. e. , 0 adalah hari Senin dan 6 adalah hari Minggu train_original=train.copy() test_original=test.copy()_8 Dari diagram batang di atas, kita dapat menyimpulkan bahwa jumlah penumpang pada hari Sabtu dan Minggu lebih sedikit dibandingkan dengan hari-hari lain dalam seminggu. Sekarang kita akan melihat teknik pemodelan dasar. Sebelum itu, kami akan menghapus variabel ID karena tidak ada hubungannya dengan jumlah penumpang kereta api = kereta api. jatuhkan('ID',1) Seperti yang telah kita lihat bahwa ada banyak noise dalam deret waktu per jam, kami akan menggabungkan deret waktu per jam menjadi deret waktu harian, mingguan, dan bulanan untuk mengurangi kebisingan dan membuatnya lebih stabil dan karenanya akan lebih mudah untuk sebuah model. train_original=train.copy() test_original=test.copy()_9 Mari kita lihat deret waktu per jam, harian, mingguan, dan bulanan train.columns, test.columns0 Kita dapat melihat bahwa deret waktu menjadi semakin stabil ketika kita menggabungkannya setiap hari, setiap minggu, dan setiap bulan. Tetapi akan sulit untuk mengubah prediksi bulanan dan mingguan menjadi prediksi per jam, karena pertama-tama kita harus mengubah prediksi bulanan menjadi mingguan, mingguan menjadi harian, dan prediksi harian menjadi per jam, yang akan menjadi proses yang sangat luas. Jadi, kami akan mengerjakan deret waktu harian train.columns, test.columns1 Teknik Pemodelan dan EvaluasiKarena kami telah memvalidasi semua hipotesis kami, mari lanjutkan dan buat model untuk Time Series Forecasting. Tetapi sebelum kita melakukan itu, kita memerlukan dataset (validasi) untuk memeriksa kinerja dan kemampuan generalisasi model kita. Di bawah ini adalah beberapa properti dari kumpulan data yang diperlukan untuk tujuan dalam artikel ini untuk (Peramalan Deret Waktu)
Jadi, karena dua alasan di atas, kami biasanya membagi kumpulan data kereta menjadi dua bagian. Satu bagian digunakan untuk melatih model dan bagian lainnya digunakan sebagai dataset validasi. Sekarang ada beberapa cara untuk membagi dataset pelatihan seperti Divisi Acak dll 1) Memisahkan data menjadi bagian pelatihan dan validasi Sekarang kita akan membagi data kita menjadi pelatihan dan validasi. Kita akan membuat model pada bagian train dan memprediksi pada bagian validasi untuk mengecek keakuratan prediksi kita CATATAN. - Selalu merupakan praktik yang baik untuk membuat kumpulan validasi yang dapat digunakan untuk menilai model kita secara lokal. Jika metrik validasi(rmse) berubah sebanding dengan skor papan peringkat publik, ini menyiratkan bahwa kami telah memilih teknik validasi yang stabil Untuk membagi data menjadi set pelatihan dan validasi, kami akan mengambil 3 bulan terakhir sebagai data validasi dan sisanya sebagai data pelatihan. Kami hanya akan mengambil 3 bulan karena tren akan menjadi yang paling banyak di dalamnya. Jika kami mengambil lebih dari 3 bulan untuk set validasi, set pelatihan kami akan memiliki lebih sedikit poin data karena total durasinya adalah 25 bulan. Jadi, akan menjadi pilihan yang baik untuk mengambil 3 bulan untuk set validasi Tanggal mulai dari dataset adalah 25-08-2012 seperti yang telah kita lihat di bagian eksplorasi dan tanggal berakhirnya adalah 25-09-2014 train.columns, test.columns2
Sekarang kita akan melihat bagaimana bagian pelatihan dan validasi telah dibagi train.columns, test.columns_3 Di sini bagian biru mewakili data kereta dan bagian oranye mewakili data validasi Kami akan memprediksi lalu lintas untuk bagian validasi dan kemudian memvisualisasikan seberapa akurat prediksi kami. Terakhir, kami akan membuat prediksi untuk dataset uji Kami akan melihat berbagai model untuk Time Series Forecasting. Metode yang akan kita bahas untuk peramalan adalah
Kami akan membahas masing-masing metode ini secara rinci sekarang i) Pendekatan Naif Dalam teknik peramalan ini, kami mengasumsikan bahwa titik yang diharapkan berikutnya sama dengan titik yang diamati terakhir. Jadi kita bisa mengharapkan garis horizontal lurus sebagai prediksi. Mari kita pahami dengan contoh dan gambar Misalkan kita memiliki jumlah penumpang selama 5 hari seperti yang ditunjukkan di bawah ini Dan kita harus memprediksi jumlah penumpang untuk 2 hari ke depan. Pendekatan naif akan menetapkan jumlah penumpang hari ke-5 ke hari ke-6 dan ke-7, i. e. , 15 akan ditugaskan pada hari ke-6 dan ke-7 Sekarang mari kita pahami dengan sebuah contoh Contoh. - Garis biru adalah prediksi di sini. Semua prediksi sama dengan titik pengamatan terakhir Mari membuat prediksi menggunakan pendekatan naif untuk set validasi train.columns, test.columns_4
rmse=sqrt∑i=1N1N(p−a)2 Kami sekarang akan menghitung RMSE untuk memeriksa keakuratan model kami pada kumpulan data validasi train.columns, test.columns5 Kami dapat menyimpulkan bahwa metode ini tidak cocok untuk kumpulan data dengan variabilitas tinggi. Kita dapat mengurangi nilai rmse dengan mengadopsi teknik yang berbeda 2) Rata-Rata Bergerak
Mari kita ambil contoh untuk memahaminya Contoh Di sini prediksi dibuat berdasarkan rata-rata dari beberapa poin terakhir alih-alih mengambil semua nilai yang diketahui sebelumnya Mari coba rolling mean selama 10, 20, dan 50 hari terakhir dan visualisasikan hasilnya train.columns, test.columns6 train.columns, test.columns7 train.columns, test.columns_8 train.columns, test.columns_9 Kami mengambil rata-rata dari 10, 20, dan 50 pengamatan terakhir dan memprediksi berdasarkan itu. Nilai ini dapat diubah dalam kode di atas. bergulir(). mean() bagian. Kita dapat melihat bahwa prediksi semakin lemah seiring bertambahnya jumlah pengamatan train.dtypes, test.dtypes0 3) Pemulusan Eksponensial Sederhana Dalam teknik ini, kami menetapkan bobot yang lebih besar untuk pengamatan yang lebih baru daripada pengamatan dari masa lalu yang jauh Bobot menurun secara eksponensial karena pengamatan berasal lebih jauh di masa lalu, bobot terkecil dikaitkan dengan pengamatan tertua CATATAN. - – Jika kita memberikan seluruh bobot hanya pada nilai yang diamati terakhir, metode ini akan mirip dengan pendekatan naif. Jadi, kita dapat mengatakan bahwa pendekatan naif juga merupakan teknik pemulusan eksponensial sederhana di mana seluruh bobot diberikan pada nilai pengamatan terakhir. Mari kita lihat contoh pemulusan eksponensial sederhana Contoh Di sini prediksi dibuat dengan memberikan bobot yang lebih besar pada nilai-nilai terkini dan bobot yang lebih kecil pada nilai-nilai lama train.dtypes, test.dtypes1 train.dtypes, test.dtypes2 train.dtypes, test.dtypes_3 113. 43708111884514 Kita dapat menyimpulkan bahwa kecocokan model telah meningkat seiring dengan berkurangnya nilai rmse 4) Model Tren Linear Holt
Pertama-tama mari kita memvisualisasikan tren, musiman, dan kesalahan dalam rangkaian tersebut Kita dapat menguraikan deret waktu menjadi empat bagian
Mari kita visualisasikan semua bagian ini train.dtypes, test.dtypes_4 Tren yang meningkat dapat dilihat pada dataset, jadi sekarang kita akan membuat model berdasarkan tren tersebut train.dtypes, test.dtypes5 train.dtypes, test.dtypes6 Kita dapat melihat garis miring di sini karena model telah mempertimbangkan tren deret waktu Mari kita hitung nilai modelnya train.dtypes, test.dtypes_7 112. 94278345314041 Dapat disimpulkan bahwa nilai rmse mengalami penurunan Sekarang kita akan memprediksi jumlah penumpang untuk dataset uji menggunakan berbagai model Media yang ditampilkan dalam artikel ini bukan milik Analytics Vidhya dan digunakan atas kebijaksanaan Penulis Apakah deret waktu adalah pembelajaran mesin?Deret waktu adalah teknik pembelajaran mesin yang memperkirakan nilai target hanya berdasarkan riwayat nilai target yang diketahui. Ini adalah bentuk regresi khusus, yang dikenal dalam literatur sebagai pemodelan regresi otomatis. Input untuk analisis deret waktu adalah urutan nilai target.
Apakah Python bagus untuk deret waktu?Python menyediakan banyak pustaka dan alat yang mudah digunakan untuk melakukan peramalan deret waktu dengan Python . Secara khusus, pustaka statistik di Python memiliki alat untuk membuat model ARMA, model ARIMA, dan model SARIMA hanya dengan beberapa baris kode.
Model pembelajaran mesin mana yang terbaik untuk data deret waktu?Model machine learning terbaik untuk perkiraan deret waktu . Model naif. . Model pemulusan eksponensial. . ARIMA/SARIMA. . Metode regresi linier. . Multi-Lapisan Perceptron (MLP). Jaringan Syaraf Berulang (RNN). Memori Jangka Pendek Panjang (LSTM). Kaggle Apa yang lebih baik dari LSTM untuk deret waktu?Model ARIMA menghasilkan nilai error yang lebih rendah daripada model LSTM dalam rangkaian bulanan dan mingguan yang menunjukkan bahwa ARIMA lebih berhasil daripada LSTM untuk peramalan bulanan dan mingguan. Sedangkan nilai error yang dihasilkan oleh LSTM lebih rendah dibandingkan dengan ARIMA untuk peramalan harian pada model rolling forecasting. |