Perencanaan Permintaan Pro, Holt-Winters dan XGboost

Habr, halo!

Ada banyak artikel di situs tentang perkiraan penjualan dari berbagai kategori FMCG, sementara kategori produk lainnya tidak begitu populer. Selain itu, ritel biasanya diselidiki dengan perkiraan beberapa hari sebelumnya, tetapi bukan dari distributor dengan perkiraan 2 bulan sebelumnya - meskipun yang terakhir lebih tertarik pada perkiraan kualitatif lebih sering daripada pengecer sekalipun. Sebagai tantangan tambahan, ada baiknya mempertimbangkan konservatisme dari sebagian besar distributor dalam arti memilih teknologi perkiraan. Cukup mudah untuk membayangkan praktik meramalkan penjualan tangan tengah perusahaan: mengumpulkan penjualan dari data master SAP + dalam Alat Excel buatan manusia, otomatisasi dalam kasus-kasus seperti itu dibatasi oleh metode peramalan yang cukup sederhana, yang tidak jauh dari tren rata-rata / linier dengan ilmu roket dalam bentuk HoltWinters.

Kebetulan, saat bertugas, saya menjumpai produsen merek kosmetik dekoratif murah (sekitar 500 SKU) dan melihat konsekuensi menyedihkan dari perkiraan konservatif dalam bentuk KPI rendah. Itu perlu untuk membuat perubahan kecil pada sistem perencanaan, termasuk proses peramalan, dan kemudian saya akan berbicara tentang penelitian saya.

Status Quo Ante Bellum


Sakit kepala utama merek selama beberapa tahun adalah tingkat layanan yang sangat rendah ( CSS = Dikirimkan / Dipesan ), secara signifikan lebih rendah dari rata-rata perusahaan, yang diperburuk oleh perkiraan berdasarkan penjualan rata-rata ( Prakiraan = Penjualan rata-rata ). Lingkaran setan: volume pesanan pelanggan, tidak menerima jumlah penuh dan waktu berikutnya datang dengan peningkatan permintaan, dan kami merencanakan masa depan hanya sesuai dengan kebutuhan yang puas.

Berdasarkan hal ini, diputuskan untuk memperkirakan bukan penjualan, tetapi pesanan dibersihkan dari pengulangan (mis. Jika klien menginginkan 100 buah dan pesanan setiap minggu, kami menganggap bahwa permintaan per bulan adalah 100 buah, bukan 400), jadi di sini penjualan lebih lanjut, kami akan menyebut pesanan dibersihkan dari duplikat. Setelah meningkatkan tingkat layanan, perbedaan antara persyaratan diratakan. Perusahaan menggunakan rumus ( Perkiraan akurasi = (1 - Jumlah modul perbedaan antara fakta dan perkiraan) / Prakiraan ) untuk memperkirakan keakuratan perkiraan di perusahaan, dan kami akan menggunakannya. Poin penting: ramalan dalam hal ini adalah ramalan dengan lag 2, yaitu jika kita mengevaluasi keakuratan pada bulan Oktober, maka kita membandingkan penjualan bulan Oktober dengan perkiraan yang dibuat pada bulan Agustus. Diyakini bahwa hasil lebih dari 35% dapat diartikan memuaskan. Ngomong-ngomong, perlu dicatat di sini bahwa kami tidak, pada kenyataannya, mengharapkan peningkatan akurasi pada awalnya - kami mengharapkan peningkatan tingkat layanan dan kami akan mengevaluasi hasilnya secara tepat berdasarkan kualitas pengiriman barang kepada pelanggan.

Saya tidak perlu banyak berkutat soal sampel untuk pelatihan - meskipun perusahaan tidak memiliki DWH analitis, tetapi ada unggahan pesanan berbulan-bulan, yang dikumpulkan dan dibersihkan oleh siklus Python kecil. Demikian pula, kami mendapat data master. Acara dan promo harus diabaikan dalam perhitungan karena kebisingan yang berlebihan (kami takut menambah lebih banyak noise daripada informasi yang berguna), karena pengecer terbesar secara berkala melakukan promo tanpa persetujuan atau pemberitahuan, memperkirakan volume acara, dll.

Sebagai model, kami memutuskan untuk menggunakan 3 cabang - Naive, Exponential Smoothing, dan MachineLearning.

Peramalan Naif


Alasan utama peramalan naif masih digunakan adalah kemudahan interpretasi bagi manusia. Memang, jika suatu kebiasaan bagi perusahaan untuk menganalisis setiap kode secara rinci, menggunakan metodologi 5 Mengapa, maka perkiraan rata-rata sangat cocok. Apakah pelanggan memesan 10 buah per bulan rata-rata? Adalah logis bahwa ia akan memesan 10 buah bulan depan. Hasilnya tidak seperti yang kami harapkan dan klien memesan 50 buah? Mungkin, klien sama sekali tidak tahu bagaimana memprediksi / pesanan otomatis telah rusak / robot sangat marah, dll., Anda harus menerapkan Peramalan Bersama dan bertukar file untuk menghilangkan stres dan meningkatkan akurasi perkiraan (tentu saja, lelucon, tetapi dengan kebenaran).

Untuk menambahkan sedikit relevansi dengan metode, kami menyarankan bahwa musiman barang identik dengan musiman kategori (paket statmodels digunakan untuk mengidentifikasi musiman, gambar menunjukkan 3 hasil utama).

gambar

Kami mengambil 4 metode - rata-rata dan median untuk seluruh riwayat penjualan (masing-masing akurasi 0,32 dan 0,30) dan 6 poin terakhir (0,36 dan 0,26). 0,36 akan menjadi tolok ukur kami - di masa depan kami harus mendapatkan hasil yang lebih baik.

Peramalan ESM


Perataan eksponensial sering kali merupakan impian utama dalam perencanaan permintaan dan mudah diketahui sebabnya. Perkiraan akurasi di dahi menunjukkan hasil yang paling tidak sebanding untuk ESM dan ML dalam hal akurasi, mereka termasuk dalam semua sistem peramalan industri (JDA, Oracle RDF, dll.), Perhitungan lebih cepat dan lebih mudah untuk ditafsirkan - itu sebabnya klasik lebih hidup daripada semua makhluk hidup. Di sisi lain, hasilnya mungkin tidak sepenuhnya jujur ​​karena persiapan fitur yang tidak memadai.

Untuk perkiraan, kami menggunakan paket statmodels yang sama. Untuk mulai dengan, kami mengambil kelas Holt untuk seluruh sejarah penjualan dengan membersihkan musiman grup dan untuk 6 poin terakhir (akurasi 0,34 dan 0,37).

Selanjutnya, kami membagi SKU menjadi 2 kelompok - produk dengan sejarah panjang diprediksi oleh kelas HoltWinters, dan untuk sejarah singkat kami meninggalkan Holt pada 6 poin. Hasilnya jauh lebih baik - 0,44, ini mudah dijelaskan. Jika pada tingkat atas tampaknya semua barang adalah saudara kembar, maka, turun ke subkategori, kita dapat melihat perbedaannya.

gambar

Peramalan ML


Kerugian utama dari metode standar adalah kurangnya kedalaman perhitungan, karena kami tidak menggunakan semua informasi yang tersedia. Sebagai contoh, sejarah peristiwa: biasanya, dalam pendekatan klasik, kita harus mengurangi pipa yang terjadi dari sejarah, membuat perkiraan dasar dan menambahkan pipa yang direncanakan dengan kalender yang sesuai. Dalam hal pencatatan peristiwa yang kurang akurat, hasilnya bisa mengecewakan (dalam kasus Holt-Winters kami berhasil mendapatkan - 5 pp untuk akurasi). Banyak alasan dapat disajikan - misalnya, kategori KAM meremehkan untuk menunjukkan pemenuhan berlebih dan menerima bonus. Jika kita beralih dari pendekatan ( Forecast = Baseline + Pipes ) ke perkiraan berdasarkan fitur, maka kita akan dapat menambahkan bagian dari informasi yang tersedia untuk kita. Untuk melakukan ini, kami telah menyusun daftar 50 fitur (harga, data master, penjualan, pelanggan terpisah, dll.). Dari perpustakaan Sklearn kami mengambil basis Lasso / Ridge / KNN Regressor, yang sering memberikan kemenangan cepat, tetapi dalam kasus kami hanya KNN yang senang dengan akurasi 0,44. Hutan acak memiliki kinerja yang baik dalam sampel kecil, dalam kasus kami, akurasinya adalah 0,48. Yah, tentu saja, kami tidak melupakan Xgboost, yang setelah sedikit validasi silang menghasilkan hasil terbaik - 0,51. Di bawah ini adalah grafik dengan akurasi masing-masing model

gambar

Kekhawatiran


Apa yang bisa konservatif mengenai penggunaan ML dalam meramalkan penjualan? Misalnya, umpan balik: sejumlah pengecer ecom dan offline menggunakan jaringan saraf dan meningkatkan gradien dan secara berkala membuat Anda takut dengan pesanan gila. Ya, tentu saja, jika pengecer akan mengukur keakuratan ramalan, maka hasilnya mungkin optimis, tetapi ini sampai batas tertentu merupakan ramalan yang memuaskan sendiri: jika ada kesalahan, maka penjualan / Jumat hitam / ulang tahun jaringan dihidupkan, dll.

Oleh karena itu, penting bagi kami untuk menunjukkan bahwa hasil Xgboost tidak hanya lebih akurat, tetapi juga lebih stabil (dan bukan roulette acak, seperti yang terlihat sebagai glider yang tidak siap). Untuk melakukan ini, kami membandingkan distribusi distribusi kesalahan HoltWinters dan Xgboost dan memastikan bahwa hasil yang terakhir memiliki pusat yang lebih padat di sekitar nol dan berekor ringan.

gambar

gambar

Hasil Antara


Sejak awal penulisan artikel / perkiraan run pertama, 2 lebih banyak merek kosmetik dekoratif telah beralih ke Xgboost, karena hasil yang positif. Pada akhir November, peningkatan rata-rata dalam tingkat layanan adalah + 16%, yaitu tingkat rata-rata perusahaan tercapai

MerekNovember SL FY19November SL FY20SL Delta
Merek173%89%16%
Merek280%85%5%
Merek363%93%30%
Total73%89%16%

Source: https://habr.com/ru/post/id479308/


All Articles