Bagaimana saya bisa memprediksi lalu lintas berdasarkan data deret waktu sebelumnya?


18

Jika saya memiliki toko ritel dan memiliki cara untuk mengukur berapa banyak orang yang memasuki toko saya setiap menit, dan mencatat waktu data itu, bagaimana saya bisa memprediksi lalu lintas pejalan kaki di masa depan?

Saya telah mempelajari algoritma pembelajaran mesin, tetapi saya tidak yakin yang mana yang akan digunakan. Dalam data pengujian saya, tren tahun ke tahun lebih akurat dibandingkan dengan hal-hal lain yang pernah saya coba, seperti KNN (dengan apa yang saya pikir merupakan parameter yang masuk akal dan fungsi jarak).

Sepertinya ini bisa mirip dengan pemodelan keuangan, di mana Anda berurusan dengan data deret waktu. Ada ide?


Mungkin whitepaper ini bisa bermanfaat. knime.org/files/knime_bigdata_energy_timeseries_whitepaper.pdf Ini tentang pemodelan seri waktu termasuk musim. - Rosaria
Rosaria

Jawaban:


17

Masalah dengan model seperti KNN adalah bahwa mereka tidak memperhitungkan musim (variasi tergantung waktu dalam tren). Untuk memperhitungkannya, Anda harus menggunakan analisis Time Series.

Untuk menghitung data, seperti milik Anda, Anda dapat menggunakan model rata-rata bergerak regresif otomatis umum (GLARMA). Untungnya, ada paket R yang mengimplementasikannya ( glarma ).

The sketsa adalah sumber yang baik untuk teori di balik alat.


2
Paket lain yang sangat berguna untuk peramalan dan analisis deret waktu adalah ramalan oleh Prof. Rob J. Hyndman.
Def_Os

Apakah Anda tahu apakah ini sudah diterapkan dalam bahasa lain? Saya bukan pro dengan R. Saya pasti akan membaca koran setidaknya.
user1132959

Saya tidak terbiasa dengan itu. Jika Anda ingin menggunakan python, Anda dapat menggunakan paket rpy2 untuk memanggil fungsi glarma sambil melakukan sebagian besar pemrograman dengan python. Sebagian besar bahasa lain juga memiliki konektor semacam itu.
Christopher Louden

10

Saya pikir jawaban Christopher di atas sepenuhnya masuk akal. Sebagai pendekatan alternatif (atau mungkin hanya sebagai tambahan atas saran yang diberikannya), saya mungkin mulai dengan memvisualisasikan data sedikit untuk mencoba memahami apa yang sedang terjadi.

Jika Anda belum melakukan ini, Anda dapat mencoba menambahkan bulan dan hari dalam satu tanggal sebagai fitur - jika Anda akhirnya bertahan dengan KNN, ini akan membantu model mengambil musiman.

Sebagai cara yang berbeda untuk mengambil ini, Anda mungkin mempertimbangkan untuk memulai dengan model yang benar-benar dasar (seperti OLS) .. ini sering berjalan jauh dalam menghasilkan prediksi yang masuk akal.

Akhirnya, semakin kami tahu tentang data Anda, semakin mudah bagi kami untuk membantu menghasilkan saran - Kerangka waktu apa yang Anda amati? Apa saja fitur yang sedang Anda gunakan? dll.

Semoga ini membantu --


Ya, visualisasi adalah langkah pertama yang penting dalam analisis apa pun.
Christopher Louden

Saya memang menambahkan bulan, hari bulan, hari minggu, dan tahun sebagai fitur. Saya bahkan mencoba nilai "Recentness" yang menurun secara linear. Saya tidak berpikir saya sudah mencoba OLS. Saya mengamati kerangka waktu yang bisa berkisar dari beberapa minggu hingga beberapa tahun. Sejauh memvisualisasikannya, saya memang mencoba melakukan itu. Masalahnya adalah, kami ingin perangkat lunak dapat memprediksi secara otomatis, tanpa campur tangan manusia, untuk pelanggan yang berbeda.
user1132959

3

Anda bisa mencoba Neural Network. Anda dapat menemukan 2 penjelasan hebat tentang cara menerapkan NN pada deret waktu di sini dan di sini .

Perhatikan bahwa ini adalah praktik terbaik untuk:

  • Deseasonalisasi / detrend data input (sehingga NN tidak akan mempelajari musiman).
  • Skala ulang / normalkan data input.

Karena apa yang Anda cari adalah masalah regresi, fungsi aktivasi harus lineardan tidak sigmoidatau tanhdan Anda bertujuan untuk meminimalkan sum-of-squares error(sebagai oposisi terhadap maksimalisasi negative log-likelihooddalam masalah klasifikasi).


Saya melihat Neural Networks sebagai opsi, tetapi tidak tahu parameter seperti apa yang akan saya gunakan. Aku harus mencobanya.
user1132959

Sigmoid dan Tanh baik-baik saja, nonlinier ingin mempelajari interaksi yang lebih kompleks dan bobot akan memetakan ini ke berbagai jangkauan yang dianggap perlu oleh jaringan
Jan van der Vegt

3

Seperti yang disebutkan oleh @Christopher Lauden di atas, analisis deret waktu paling tepat untuk hal semacam ini. Namun, jika Anda ingin melakukan "pendekatan pembelajaran mesin" yang lebih tradisional, sesuatu yang telah saya lakukan di masa lalu adalah untuk memblokir data Anda menjadi tumpang tindih jendela waktu sebagai fitur, kemudian menggunakannya untuk memprediksi hari-hari berikutnya (atau minggu) ) lalu lintas.

Matriks fitur Anda akan menjadi seperti:

t1 | t2 | ... | tN
t2 | t3 | ... | tN+1
t3 | t4 | ... | tN+2
...
tW | tW+1 | ... |tN+W

di mana tIlalu lintas pada hari itu I. Fitur yang akan Anda prediksi adalah lalu lintas pada hari setelah kolom terakhir. Intinya, gunakan jendela lalu lintas untuk memprediksi lalu lintas hari berikutnya.

Segala jenis model ML akan bekerja untuk ini.

Edit

Menanggapi pertanyaan, "dapatkah Anda menguraikan bagaimana Anda menggunakan matriks fitur ini":

Matriks fitur memiliki nilai yang menunjukkan lalu lintas masa lalu selama periode waktu tertentu (misalnya, lalu lintas per jam selama 1 minggu), dan kami menggunakan ini untuk memprediksi lalu lintas untuk beberapa periode waktu tertentu di masa mendatang. Kami mengambil data historis kami dan membangun matriks fitur lalu lintas historis dan memberi label ini dengan lalu lintas pada beberapa periode di masa mendatang (misalnya 2 hari setelah jendela dalam fitur). Menggunakan semacam model pembelajaran mesin regresi, kita dapat mengambil data lalu lintas historis, dan mencoba dan membangun model yang dapat memprediksi bagaimana lalu lintas bergerak dalam kumpulan data historis kami. Asumsinya adalah bahwa lalu lintas masa depan akan menyerupai lalu lintas masa lalu.


Bisakah Anda menguraikan bagaimana Anda akan menggunakan matriks fitur ini? Apakah Anda mencoba belajar berdasarkan perubahan lalu lintas lintas hari?
user1132959

Saya mengedit respons untuk semoga memberi lebih banyak kejelasan.
gallamine

2

Yah, pertama, saya bahkan tidak akan menggunakan hal-hal seperti Machine learning tanpa memiliki pengetahuan yang mendalam. Hal-hal sederhana yang akan saya lakukan jika saya memiliki rangkaian waktu ini adalah:

  1. Tulis kueri sql untuk memahami saat mana Anda memiliki lalu lintas tersibuk, rata-rata, dan rendah.
  2. Kemudian cobalah untuk memvisualisasikan seri seluruh waktu, dan Anda bisa menggunakan algoritma pencocokan pola dasar untuk mengambil pola.

Dua hal ini akan membantu Anda memahami apa yang dikatakan data Anda. Kemudian, dengan itu di tangan, Anda mungkin akan berada dalam kondisi yang lebih baik untuk menggunakan algoritma pembelajaran mesin.

Selain itu, saya saat ini sedang bekerja membangun sesuatu berdasarkan deret waktu, dan menggunakan analisis deret waktu akan membantu Anda lebih dari sekadar pembelajaran mesin. Misalnya, ada algoritme pengenalan pola yang dapat Anda gunakan yang menggunakan data setiap hari untuk menunjukkan pola, dan yang menggunakan data hingga 3 hingga 6 bulan untuk menangkap suatu pola.


0

Saya akan menyarankan agar Anda tidak menggunakan jaringan saraf atau yang setara, saya berasumsi, Anda telah mendapat hasil yang baik berdasarkan pengalaman Anda dengan toko (yaitu bahwa mungkin ada tren harian / musiman dan beberapa tingkat kelancaran) dan Saya membayangkan jumlah data yang relatif kecil. Opsi IMO yang lebih baik adalah menggunakan metode kernel seperti Proses Gaussian atau SVM.


0

Membawa utas ini kembali ke kehidupan, karena ini bisa bermanfaat bagi orang lain yang mendarat di sini dengan pertanyaan serupa.

Facebook baru-baru ini merilis dan open-source salah satu alat peramalan internal mereka yang disebut Nabi https://facebookincubator.github.io/prophet/

Ini tersedia sebagai paket R & Python, dan terbukti menjadi solusi menarik bagi seseorang dengan sedikit latar belakang Pembelajaran Mesin. Namun, beberapa pengetahuan ML tambahan memungkinkan untuk menyempurnakan dan mengoptimalkan model yang dihasilkan.

Saya merekomendasikan untuk mencoba Nabi sebagai langkah pertama. Kemenangan cepat pada solusi ini adalah kemudahan dan kecepatan pembuatan dan pengujian model: Anda benar-benar bisa mendapatkan proyeksi penurunan dalam hitungan menit. Itu berperilaku sangat baik pada deret waktu, menangkap musiman data yang ada di tangan "secara alami".

Di bawah tenda, itu mirip dengan model aditif umum (GAM) - detail lebih lanjut pada makalah khusus: https://facebookincubator.github.io/prophet/static/prophet_paper_20170113.pdf

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.