Prakiraan Penjualan dan Stok dengan Machine Learning
Prakiraan penjualan membantu Anda menyiapkan stok, produksi, dan jadwal staf. Mulailah dari data yang rapi dan metode sederhana, lalu uji dengan jujur sebelum memakai model yang lebih rumit.
Banyak pemilik bisnis menebak kebutuhan stok dari perasaan: bulan lalu ramai, jadi bulan ini dibeli lebih banyak. Kadang tepat, kadang barang menumpuk di gudang atau justru habis saat pelanggan datang. Prakiraan penjualan adalah cara yang lebih teratur untuk menjawab pertanyaan "berapa yang akan terjual minggu depan?".
Kapan prakiraan penjualan berguna
Prakiraan paling bermanfaat ketika ada keputusan yang harus diambil sebelum penjualan terjadi, dan salah tebak berbiaya nyata. Contohnya:
- Stok dan pembelian bahan. Barang yang cepat rusak atau modal yang terbatas membuat kelebihan stok terasa mahal.
- Jadwal produksi. Anda bisa menyiapkan kapasitas sebelum lonjakan pesanan, bukan sesudahnya.
- Jadwal staf. Hari dan jam yang biasanya ramai bisa diisi orang yang cukup, tanpa membayar lembur di hari sepi.
Kalau penjualan masih sedikit dan stok bisa diubah setiap hari tanpa rugi berarti, catatan rutin di spreadsheet sering sudah cukup.
Data yang dibutuhkan
Kualitas prakiraan lebih ditentukan oleh data daripada oleh model. Pastikan Anda punya:
- Riwayat penjualan yang cukup panjang. Untuk menangkap pola musiman tahunan, idealnya ada data minimal dua tahun. Untuk pola mingguan, beberapa bulan sudah bisa memberi gambaran.
- Data yang rapi dan konsisten. Satu baris per transaksi atau per hari, tanggal yang benar, nama produk yang seragam, dan tidak ada hari yang hilang tanpa keterangan.
- Catatan promo dan diskon. Lonjakan karena promo jangan sampai dibaca sebagai permintaan normal.
- Hari libur dan musim. Ramadan, Lebaran, libur sekolah, akhir tahun, atau musim panen bisa mengubah penjualan jauh dari biasanya.
- Kejadian khusus. Stok kosong, toko tutup, atau gangguan pengiriman perlu ditandai, karena penjualan nol saat stok habis bukan berarti tidak ada permintaan.
Mulai dari metode sederhana
Buat dulu prakiraan yang bisa dihitung di spreadsheet. Cara ini menjadi pembanding: model yang lebih rumit baru layak dipakai kalau terbukti lebih akurat.
- Pekan lalu sebagai tebakan. Penjualan Senin depan diperkirakan sama dengan Senin lalu. Kedengarannya terlalu sederhana, tetapi sering sulit dikalahkan.
- Rata-rata bergerak. Ambil rata-rata beberapa minggu terakhir untuk meredam naik turun yang kebetulan.
- Pola musiman. Hitung berapa persen penjualan biasanya naik pada bulan atau hari tertentu, lalu terapkan ke rata-rata terbaru.
Machine learning baru masuk akal ketika ada banyak produk, banyak faktor yang saling memengaruhi, dan data yang cukup untuk mempelajarinya. Model seperti gradient boosting atau LSTM bisa menangkap pola yang lebih rumit, tetapi juga lebih mudah tertipu oleh data yang berantakan.
Cara mengukur akurasi dengan jujur
Kesalahan yang paling sering terjadi adalah menguji model dengan data yang sudah ia lihat saat belajar. Hasilnya tampak bagus di atas kertas, lalu meleset saat dipakai. Cara yang lebih jujur:
- Sisihkan periode terakhir. Misalnya, latih model dengan data sampai tiga bulan lalu, lalu uji pada tiga bulan terakhir yang belum pernah dilihatnya.
- Uji secara bergulir. Ulangi dengan jendela waktu yang bergeser, supaya hasilnya tidak bergantung pada satu periode yang kebetulan mudah.
- Jangan pakai informasi masa depan. Data yang baru diketahui setelah hari penjualan tidak boleh dipakai untuk memprakirakan hari itu.
- Bandingkan dengan metode sederhana. Ukur selisih rata-rata antara prakiraan dan penjualan nyata, lalu bandingkan dengan rata-rata bergerak. Kalau tidak lebih baik, pakai yang sederhana.
Contoh dari kami: prototipe LSTM
Untuk mempelajari cara menguji prakiraan dengan benar, kami membuat prototipe pribadi berupa model LSTM dengan attention yang memprakirakan harga saham 1 sampai 30 hari ke depan. Perlu ditegaskan: datanya adalah harga saham, bukan data penjualan, dan proyek ini masih prototipe yang belum dipakai klien. Kodenya tersedia di repo publik.
Yang relevan untuk prakiraan penjualan adalah cara pengujiannya. Model diuji dengan validasi walk-forward: dilatih pada satu jendela data, diuji pada periode berikutnya, lalu jendelanya digeser dan langkahnya diulang. Indikator dihitung dengan jeda satu hari, dan penskalaan data hanya dipelajari dari data latih. Harga saham termasuk data yang paling sulit diprakirakan, jadi prototipe ini kami perlakukan sebagai latihan metode, bukan alat untuk keputusan investasi.
Pengujian yang sama bisa dipakai untuk permintaan, stok, atau penjualan bisnis Anda. Hasilnya juga bisa ditampilkan di dashboard, seperti dashboard yang kami pakai di Numekara, yang menulis "belum tersedia" bila datanya belum ada, bukan angka nol palsu.
Batasan yang perlu Anda ketahui
- Kejadian luar biasa tidak bisa ditebak dari masa lalu. Pandemi, bencana, atau produk pesaing yang tiba-tiba viral akan membuat prakiraan meleset.
- Data sedikit berarti ketidakpastian besar. Produk baru atau bisnis yang baru berjalan beberapa bulan belum punya pola yang bisa dipelajari.
- Prakiraan adalah kisaran, bukan angka pasti. Lebih berguna mengatakan "antara 80 dan 110 unit" daripada satu angka yang terlihat yakin.
Langkah memulai
- Rapikan riwayat penjualan Anda dalam satu tabel, satu baris per hari per produk.
- Tambahkan kolom promo, hari libur, dan hari stok kosong.
- Hitung prakiraan sederhana dengan rata-rata bergerak, lalu catat seberapa jauh melesetnya.
- Bila selisihnya masih merugikan dan datanya cukup, baru uji model machine learning dengan data yang disisihkan.
- Pakai hasilnya sebagai bahan diskusi, dan tetap biarkan keputusan akhir di tangan Anda.
Prakiraan yang baik bukan yang paling rumit, tetapi yang sudah diuji dengan jujur dan lebih baik daripada tebakan sederhana.