Perkiraan Permintaan Produk untuk Ribuan Produk Di Berbagai Toko

9

Saat ini saya sedang mengerjakan tugas perkiraan permintaan, dengan data puluhan ribu produk di beberapa ribu toko. Lebih khusus lagi, saya memiliki data penjualan harian setiap tahun selama beberapa tahun di setiap toko, dan tujuan saya adalah meramalkan penjualan setiap item di setiap toko di masa depan, satu hari ke depan; lalu dua hari ke depan, dll.

Sejauh ini saya telah mempertimbangkan memecah setiap pasangan toko produk menjadi satu seri waktu, dan melakukan perkiraan untuk setiap seri waktu seperti yang dilakukan dalam makalah Neal Wagner, teknik-teknik Cerdas untuk meramalkan seri waktu banyak dalam sistem dunia nyata . Dengan kata lain, saya hanya akan menggunakan informasi historis tentang penjualan produk toko tertentu untuk memperkirakan penjualan produk tersebut di masa depan.

Namun, saya telah menelusuri Kaggle dan kompetisi seperti Corporaci Favorita Grocery Sales Forecasting menyarankan pendekatan yang berbeda, yaitu menggunakan informasi dari semua toko dan semua produk untuk memprediksi penjualan di masa depan. Seperti yang saya pahami, informasi penjualan historis dari semua produk di semua toko dibuang ke dalam set pelatihan, dari mana model akan belajar untuk meramalkan penjualan di masa depan. Ini sangat berbeda dari metode deret waktu tradisional, tetapi tampaknya, berdasarkan hasil kompetisi, ini berhasil.

Metode yang terakhir tampaknya menjanjikan dan lebih kuat. Namun, ada masalah karena harus memproses ratusan juta titik data.

Metode mana yang lebih tepat untuk tugas saya? Bagi mereka yang telah mengerjakan masalah serupa, metodologi mana yang akan Anda rekomendasikan?

merax
sumber
1
Ketika saya sudah mengerjakan ini, saya telah menggunakan pendekatan deret waktu, TETAPI dengan musiman diambil dari produk yang serupa (misalnya kategori) di toko yang sama (misalnya segmen geografis di mana cuaca akan serupa). Tapi ini, sebagian, karena kendala waktu: tidak semua data tiba pada saat yang sama, dan waktu antara kedatangan data terakhir dan ketika perkiraan diperlukan sedikit (kadang-kadang negatif!). Ini adalah pertimbangan operasional, bukan pertimbangan statistik.
zbicyclist
@ zbicyclist Terima kasih telah berbagi ini! Bolehkah saya tahu bagaimana Anda dapat memasukkan musiman produk serupa ke perkiraan? misalnya, apakah Anda mengambil musiman rata-rata dan menambahkannya sebagai fitur lain dalam model?
Merax
Deseasonalisasi, model, ramalan, lalu reseasonalisasi.
zbicyclist

Jawaban:

9

Saya tidak akan merekomendasikan pendekatan yang digunakan oleh Neal et al. . Data mereka unik karena dua alasan:

  • Mereka bekerja dengan data makanan, yang biasanya lebih padat dan lebih stabil daripada data dale produk ritel lainnya. Lokasi tertentu akan menjual puluhan karton susu atau paket telur per minggu dan akan telah menjual produk-produk yang sama selama beberapa dekade, dibandingkan dengan fesyen atau suku cadang mobil di mana tidak biasa memiliki penjualan satu barang tunggal setiap 3 atau 4 minggu, dan data tersedia hanya untuk satu atau dua tahun.

  • Mereka memperkirakan gudang bukan toko. Satu gudang mencakup beberapa toko, sehingga datanya bahkan lebih padat daripada rata-rata. Bahkan gudang biasanya digunakan sebagai tingkat agregasi / pengelompokan alami untuk toko, sehingga mereka pada dasarnya sudah melakukan pengelompokan data toko.

Karena sifat data mereka, mereka dapat langsung memodelkan serangkaian waktu individual. Tetapi sebagian besar data pengecer akan terlalu jarang pada tingkat sku / toko individu untuk melakukan itu.

Seperti yang dikatakan zbicyclist, masalah ini biasanya didekati dengan menggunakan peramalan hierarkis atau multi-eselon . Paket peramalan permintaan komersial semua menggunakan beberapa bentuk peramalan hierarki

Idenya adalah untuk mengelompokkan produk dan menyimpannya ke dalam produk dan wilayah yang serupa, di mana prakiraan agregat dihasilkan dan digunakan untuk menentukan keseluruhan musim dan tren, yang kemudian diselaraskan dengan menggunakan pendekatan Top-Down dengan prakiraan dasar yang dihasilkan untuk masing-masing individu. / kombinasi toko.

Selain tantangan yang disebutkan zbicyclist, masalah yang lebih besar adalah bahwa menemukan pengelompokan produk dan toko yang optimal bukanlah tugas sepele, yang membutuhkan kombinasi keahlian domain dan analisis empiris. Produk dan toko biasanya dikelompokkan bersama dalam hierarki yang rumit (Menurut departemen, pemasok, merek, dll. Untuk produk, berdasarkan wilayah, iklim, gudang, dll ... untuk lokasi) yang kemudian dimasukkan ke algoritma peramalan bersama dengan penjualan historis data itu sendiri.


Mengatasi komentar merax

Bagaimana dengan metode yang digunakan dalam Kompetisi Kaggle Prakiraan Penjualan Kelontong Corporación Favorita, di mana mereka memungkinkan model untuk belajar dari sejarah penjualan beberapa produk (mungkin tidak terkait), tanpa melakukan pengelompokan eksplisit? Apakah ini masih pendekatan yang valid?

Mereka melakukan pengelompokan secara implisit dengan menggunakan store, item, famlily, class, cluster sebagai fitur kategorikal.

Saya baru saja membaca sedikit bagian Rob Hyndman tentang peramalan hierarki. Tampaknya bagi saya bahwa melakukan pendekatan Top-Down memberikan perkiraan yang andal untuk tingkat agregat; Namun, ia memiliki kerugian besar kehilangan informasi karena agregasi yang dapat memengaruhi prakiraan untuk simpul tingkat bawah. Mungkin juga "tidak dapat menangkap dan memanfaatkan karakteristik seri individual seperti dinamika waktu, acara khusus".

Tiga poin tentang ini:

  • Kerugian yang ditunjukkannya tergantung pada pengelompokan data. Jika Anda mengumpulkan semua produk dan toko, maka ya ini akan menjadi masalah. Sebagai contoh, mengumpulkan semua toko dari semua wilayah akan melumpuhkan musiman khusus daerah. Tetapi Anda harus mengumpulkan hanya untuk pengelompokan yang relevan, dan seperti yang saya tunjukkan, ini akan memerlukan beberapa analisis dan eksperimen untuk menemukannya.
  • Dalam kasus spesifik permintaan ritel, kami tidak khawatir tentang "kehilangan informasi karena agregasi" karena sering kali rangkaian di simpul bawah (yaitu SKU / Toko) mengandung sangat sedikit informasi, itulah sebabnya kami mengumpulkannya hingga lebih tinggi tingkat di tempat pertama.
  • Untuk acara khusus SKU / toko, cara kami mendekatinya di tim saya adalah menghapus efek khusus acara sebelum membuat prakiraan, dan kemudian menambahkannya kembali nanti, setelah prakiraan dihasilkan. Lihat di sini untuk detailnya.
Skander H.
sumber
Terima kasih atas wawasan ini! Bagaimana dengan metode yang digunakan dalam Kompetisi Kaggle Prakiraan Penjualan Kelontong Perusahaan Penjualan, di mana mereka memungkinkan model untuk belajar dari sejarah penjualan beberapa produk (mungkin tidak terkait), tanpa melakukan pengelompokan eksplisit? Apakah ini masih pendekatan yang valid?
Merax
Saya baru saja membaca sedikit bagian Rob Hyndman tentang peramalan hierarki. Tampaknya bagi saya bahwa melakukan pendekatan Top-Down memberikan perkiraan yang andal untuk tingkat agregat; Namun, ia memiliki kerugian besar kehilangan informasi karena agregasi yang dapat memengaruhi prakiraan untuk simpul tingkat bawah. Mungkin juga "tidak dapat menangkap dan memanfaatkan karakteristik seri individual seperti dinamika waktu, acara khusus".
merax
@meraxes lihat edit saya.
Skander H.
Terima kasih atas penjelasannya, @Alex! Mengenai poin terakhir Anda, dan ini mungkin sedikit di luar topik, tetapi apakah Anda memperlakukan liburan dengan cara yang sama? yaitu menghapus efeknya sebelum menghasilkan prakiraan, lalu menambahkannya kembali nanti?
merax
^ Saya bertanya karena saya perhatikan bahwa perkiraan saya tampaknya sangat sensitif terhadap pencilan data. Pendekatan saya saat ini adalah untuk winorize data, kemudian gunakan penganalisa lonjakan seri seperti yang dijelaskan dalam makalah oleh Neal Wagner et al. untuk mengidentifikasi lonjakan yang dapat dijelaskan oleh hari libur untuk ditambahkan kembali setelahnya. Saya mengerti bahwa cara lain adalah dengan menggunakan variabel dummy untuk menghilangkan efek liburan. Pendekatan mana yang akan Anda rekomendasikan?
merax