Mengoptimalkan Pendapatan Pengecer dengan AI Peramalan Penjualan
Diterbitkan: 2022-03-11Peramalan adalah teknik yang menggunakan data dan peristiwa historis untuk membangun perkiraan tentang tren masa depan, potensi bencana, dan perilaku keseluruhan subjek apa pun. Peramalan dapat digunakan sebagai dukungan probabilistik untuk analisis keputusan, untuk memperkirakan pengeluaran, pendapatan, dan rencana anggaran.
Peramalan dalam bisnis dapat dibagi menjadi dua kategori yang berbeda: peramalan kualitatif dan peramalan kuantitatif .
- Peramalan kualitatif. Peramalan kualitatif berkaitan dengan riset pasar dan strategi pasar, karena itu lebih didorong oleh pakar dan dipengaruhi oleh faktor manusia. Hal ini biasanya ditujukan untuk membangun strategi jangka pendek.
- Peramalan kuantitatif. Peramalan kuantitatif tidak memasukkan faktor manusia apa pun. Itu hanya bergantung pada data historis yang dimiliki entitas dan bertujuan untuk memprediksi beberapa faktor seperti penjualan, harga, dan aspek keuangan lainnya dalam jangka panjang.
Untuk informasi lebih lanjut, Anda dapat melihat primer Peramalan Keuangan Investopedia.
Kedua jenis peramalan telah menunjukkan banyak harapan dan berhasil menciptakan peningkatan bisnis untuk banyak entitas.
Jika Anda ingin mempelajari lebih lanjut tentang bagaimana peramalan dapat memengaruhi keputusan pasar, tempat yang baik untuk memulai adalah Pasar Prediksi: Dasar-dasar, Desain, dan Aplikasi oleh Stefan Luckner et al.
Salah satu masalah yang dapat kita atasi dengan menggunakan peramalan kuantitatif adalah peramalan permintaan atau peramalan penjualan.
Pendekatan Peramalan Permintaan dan Peramalan Penjualan
Misalkan Anda adalah pengecer yang mengoperasikan banyak toko, dan setiap toko memiliki sistem pengisian stok produk statis berdasarkan keputusan manusia yang didasarkan pada peristiwa tertentu seperti musim dan tren pasar.
Kadang-kadang, Anda akan mengalami salah satu dari masalah ini yang dapat menyebabkan dua masalah utama:
- Produk yang kelebihan stok. Memiliki stok produk yang cukup besar yang direncanakan untuk dijual selama jangka waktu tertentu tetapi tidak terjual.
- Produk kehabisan stok. Memiliki peluang untuk menjual produk tetapi tidak mampu karena produk tidak tersedia.
Menurut survei IHL Group terhadap 600 rumah tangga dan pengecer, pengecer kehilangan hampir $ 1 triliun dalam penjualan setiap tahun karena masalah kehabisan stok.
“Pembeli mengalami kehabisan stok dalam satu dari tiga perjalanan belanja, menurut laporan itu, yang dikirim melalui email ke Retail Dive. Di pengecer makanan, obat-obatan, dan massal, mereka menemukan barang-barang yang kehabisan stok dalam satu dari lima perjalanan, di department store dan pengecer khusus satu dari empat, dan di toko elektronik satu dari tiga,” IHL Group menemukan.
Seperti yang tampak, kedua masalah ini menyebabkan penurunan pendapatan karena kami kehilangan kemungkinan penjualan atau kami menginvestasikan lebih banyak uang dalam produk yang tidak terjual, yang berarti memiliki aset yang tidak akan menghasilkan pendapatan dalam waktu dekat untuk mengkompensasi biaya mereka.
Ini jelas merugikan arus kas entitas, dan untuk mengatasi risiko ini, kita memerlukan dua hal:
- Lebih banyak masukan untuk membantu kami membuat keputusan
- Tim peramalan yang dapat melakukan perencanaan strategis jangka panjang untuk sistem pengisian stok
Jadi, pertanyaannya adalah: Apa indikasi Anda perlu mengadopsi AI di perusahaan Anda untuk membantu proses peramalan Anda?
Untuk membuat keputusan ini, Anda memerlukan jawaban ahli untuk pertanyaan-pertanyaan berikut:
- Apakah memprediksi jalur penjualan Anda sulit?
- Apakah perkiraan penjualan Anda tidak akurat, atau tidak cukup akurat (meskipun Anda memiliki data historis)?
- Apakah Anda mengalami masalah kehabisan stok atau kelebihan stok?
- Apakah Anda tidak dapat mengekstrak wawasan deskriptif dan inferensial dari data yang Anda miliki untuk mendorong keputusan dan perencanaan Anda?
Jawaban atas pertanyaan-pertanyaan ini harus menjadi sinyal yang jelas yang membantu Anda memutuskan apakah akan mulai menggunakan AI ke dalam strategi perkiraan Anda atau tidak.
Bagaimana AI Dapat Menguntungkan Proses Peramalan Penjualan?
AI telah menunjukkan hasil yang luar biasa dalam mengungguli perkiraan manusia di banyak perusahaan, memungkinkan pengambilan keputusan dan perencanaan yang lebih cepat serta strategi manajemen risiko yang lebih andal. Inilah sebabnya mengapa perusahaan papan atas mengadopsi AI dalam perencanaan mereka.
Ketika berhadapan dengan masalah peramalan permintaan, metode peramalan deret waktu dapat digunakan untuk memprediksi penjualan untuk setiap produk, sehingga memungkinkan perusahaan untuk mengoptimalkan pengisian stok dan meminimalkan terjadinya masalah tersebut. Namun, banyak model berjuang dengan peramalan pada tingkat produk individu, atau tingkat kategori produk, karena kurangnya fitur yang diperlukan. Jadi, pertanyaannya adalah: Bagaimana kita bisa membuatnya bekerja dan memaksimalkan data kita?
Untuk pengecer kehidupan nyata, masalah ini sama sekali tidak sepele. Anda memiliki 1.000+ produk yang memperkenalkan banyak non-linearitas dalam kumpulan data dan dependensi multivarian, atau Anda perlu diperingatkan tentang jumlah pengisian stok yang diproyeksikan dengan banyak pemberitahuan sebelumnya untuk dapat memproduksi atau membelinya, atau lakukan apa pun yang Anda butuhkan untuk mendapatkannya pada saat permintaan terwujud.
Dalam hal ini, model klasik seperti ARIMA dan ETS tidak akan berfungsi, dan kami akan membutuhkan metode yang lebih kuat seperti RNN dan XGBoost, dan inilah mengapa kami membutuhkan banyak pembuatan fitur untuk mengatasi masalah ini.
Agar ini berfungsi, kita perlu:
- Memperoleh fitur masukan yang diperlukan untuk menjelaskan keragaman dan keragaman produk.
- Kategorikan data kami, sehingga setiap kategori memiliki perilaku deret waktu yang sama, dan setiap kategori akan ditangani menggunakan model mandiri.
- Latih model kami tentang fitur input yang dikategorikan yang diperoleh.
Demi artikel ini, kami akan mengambil XGBoost sebagai contoh model seperti itu.
Fitur yang Diperlukan dalam Model Peramalan Penjualan
Kumpulan fitur yang diperlukan untuk masalah ini diklasifikasikan ke dalam empat kelompok utama:
- Fitur terkait waktu
- Fitur terkait penjualan
- Fitur terkait harga
- Fitur terkait stok
Fitur terkait waktu
Tidak seperti deep learning (Recurrent Neural Network), model pembelajaran mesin tidak bisa mendapatkan dependensi jangka panjang atau jangka pendek dalam deret waktu tanpa membuat lapisan ekstraksi fitur manual untuk fitur datetime .
Banyak fitur yang dapat diekstraksi dari tanggal, seperti:
- Tahun
- Hari
- Jam
- Akhir pekan atau hari kerja (apakah hari itu adalah hari kerja atau akhir pekan)
- Hari dalam seminggu
Banyak pendekatan hanya mengekstrak fitur waktu tersebut dan menggunakannya sebagai input dan melatih model, tetapi rekayasa lebih lanjut dapat dilakukan. Seperti yang dapat kita lihat, fitur (hari, jam, hari dalam seminggu) bersifat periodik, yang berarti memiliki rentang nilai yang berulang. Bagaimana seorang model bisa menghadapi ini?
Jawaban singkatnya adalah, tidak bisa karena yang dilihat model adalah bahwa jam 00:00 adalah 23 jam dari 23:00, tetapi pada kenyataannya, itu adalah satu jam. Salah satu cara untuk menyelesaikannya adalah dengan mengubah fitur-fitur ini menjadi transformasi siklik.
Menggunakan konsep sinus dan kosinus, atau representasi vektor, seseorang dapat mengubah setiap jam (24 jam) menjadi sudut, dan menggunakan sin dan kosinusnya akan mempermudah model untuk mendeteksi proporsi nyata antara jam, terlepas dari dari periodisitas.
Ini akan menghilangkan diskontinuitas yang terjadi pada fitur waktu periodik, atau fitur periodik lainnya.
Untuk artikel kami, kami akan menggunakan kumpulan data Sample Superstore yang ditemukan secara publik dan mencoba memprediksi target penjualan bulanan untuk kategori produk tertentu.
Juga, kami akan menggunakan lingkungan Python 3.7 dengan perpustakaan berikut:
- JumlahPy
- panda
- XGBoost
- Sklearn
Sekarang, saya akan menunjukkan kepada Anda bagaimana membangun fungsi konversi fitur periode dan menguji apakah itu membantu atau tidak.

def convert_periodic(val,period): theta = 2*np.pi*val/period sin_period = np.sin(theta) cos_period = np.cos(theta) return sin_period,cos_period def convert_month(x): return convert_periodic(x,12) df['sin_month'], df['cos_month'] = zip(*df['month'].map(convert_month))
Dengan ini, kami siap menguji apakah fitur yang ditambahkan akan meningkatkan kinerja atau tidak.
X = df.drop(['Order Date','Sales','sin_month', 'cos_month'],axis = 1) y = np.log1p(df['Sales']) X_train,X_test,y_train,y_test = train_test_split(X,y,test_size = 0.2, shuffle=False)
Seperti yang kita lihat, kami telah melakukan transformasi log 1p untuk fitur target penjualan kami, karena ini adalah fitur miring (tidak terdistribusi normal).
Sekarang, kita akan memasang regressor XGBoost pada data.
y_pred = model.predict(X_test) print(f'Loss without cyclic conversion on testing set is {sqrt(mean_squared_error(y_pred,y_test))}') Loss without cyclic conversion on testing set is 0.4313676193485837
Selanjutnya, kami akan mencoba dengan fitur yang kami buat.
X = df.drop(['Order Date','Sales'],axis = 1) y = np.log1p(df['Sales']) X_train,X_test,y_train,y_test = train_test_split(X,y,test_size = 0.2, shuffle=False) y_pred = model.predict(X_test) print(f'Loss with cyclic conversion on testing set is {sqrt(mean_squared_error(y_pred,y_test))}') Loss with cyclic conversion on testing set is 0.33868030449130826
Seperti yang bisa kita lihat, kerugian meningkat dari 0,43 RMSE menjadi 0,33 RMSE.
Beberapa fitur terkait waktu lainnya yang dapat Anda pikirkan, tergantung pada masalah Anda, adalah:
- Jumlah bulan sejak barang itu ada di toko
- Jumlah hari sejak penjualan terakhir
Fitur terkait penjualan
Ini adalah fitur input inti utama yang diperlukan untuk memprediksi penjualan kami, jadi bagaimana cara mendapatkan hasil maksimal dari data penjualan? Kita dapat mencapai ini dengan menggunakan konsep lag dan autokorelasi.
Fitur lag adalah catatan penjualan historis untuk produk. Misalnya, jika kami mengambil fitur 12-lag untuk penjualan bulanan sebagai masukan ke model kami untuk memprediksi penjualan Mei 2020, itu berarti kami akan menyediakan model dengan catatan data antara Mei 2019 dan April 2020. Ini bisa sangat membantu.
Selain itu, dapat diinterpretasikan menggunakan plot autokorelasi untuk memeriksa seberapa berkorelasi fitur target dengan fitur lag-nya. Ini juga membantu untuk memilih hanya fitur yang berkorelasi di antara fitur yang tertinggal, jadi kami mengurangi penggunaan memori dan redundansi fitur.
Ini adalah bagaimana kami dapat menambahkan fitur lag ke dalam kerangka data kami:
for i in range(3): df[f'lag_{i+1}'] = df['Sales'].shift(i+1) df = df.dropna() df.head()
Di sini, saya memilih nilai fitur tiga lag untuk disertakan dalam set pelatihan kami. Fitur ini adalah hyperparameter—Anda dapat memilihnya berdasarkan plot autokorelasi atau dengan mencoba banyak nilai dan hanya memilih yang terbaik dalam tahap penyetelan.
X = df.drop(['Order Date','Sales'],axis = 1) y = np.log1p(df['Sales']) X_train,X_test,y_train,y_test = train_test_split(X,y,test_size = 0.2, shuffle=False) y_pred = model.predict(X_test) print(f'Loss with lag features on testing set is {sqrt(mean_squared_error(y_pred,y_test))}') Loss with lag and aggregated sales features on testing set is 0.2862175857169188
Sekarang, RMSE telah meningkat menjadi 0,28, menggunakan fitur lag dan konversi siklik.
Beberapa fitur tambahan terkait penjualan yang dapat Anda tambahkan:
- Pecahan barang yang terjual (bagian dari barang yang terjual dalam hal total penjualan di toko)
- Frekuensi acara penjualan untuk kategori barang
- Menambahkan konsep senioritas
Senioritas adalah konsep yang diperkenalkan untuk menetapkan tingkat senioritas ke item baru di toko:
- Senioritas 0: item baru bagi perusahaan
- Senioritas 1: barang tidak pernah dijual di toko ini tetapi dijual di toko lain perusahaan
- Senioritas 2: item yang pernah dijual di toko ini sebelumnya
Fitur terkait harga
Argumen sederhananya adalah bahwa salah satu penyebab langsung kenaikan dan penurunan penjualan adalah harga dan promosi. Harga adalah salah satu cara terbaik untuk membedakan antara berbagai kategori, subkategori, dan superkategori produk.
Misalnya, dengan asumsi bahwa kategori dan subkategori telah ditetapkan untuk setiap produk, seseorang dapat membuat fitur harga berikut:
- (Rata-rata, Maks, Min, Median) harga di seluruh kategori
- (Rata-rata, Maks, Min, Median) harga di seluruh subkategori
- Perbandingan antara statistik tersebut, seperti perbedaan antara masing-masing statistik dalam kategori dan subkategori
Agregasi ini dapat dilakukan beberapa kali menggunakan banyak pengelompokan berdasarkan subjek (dengan asumsi kami bertujuan untuk memprediksi permintaan bulanan), seperti:
- Bulanan, Toko, kategori
- Bulanan, Toko, subkategori
- Bulanan, Toko, Barang, kategori
- Bulanan, Toko, Barang, subkategori
Selain itu, lebih banyak fitur dapat ditambahkan tidak termasuk pengelompokan Bulanan untuk mempelajari perilaku harga secara keseluruhan.
Fitur terkait stok
Yang satu ini tidak begitu umum di antara pengecer dan peramal penjualan, tetapi membuat banyak perbedaan dalam model peramalan penjualan. Kumpulan data stok terutama memiliki data inventaris setiap produk, setiap hari di setiap toko. Dari sini, kita dapat menggabungkannya dengan data penjualan untuk mendapatkan rasio omset bulanan untuk setiap produk. Rasio ini akan menunjukkan seberapa cepat stok suatu produk terjual sepenuhnya, dan memiliki dua manfaat utama:
- Ini dapat membantu model meramalkan penjualan berdasarkan tingkat persediaan saat ini.
- Ini dapat membantu kami menggunakan nilai ini untuk mengelompokkan produk menjadi produk yang bergerak lambat, sedang, dan cepat. Pengelompokan ini akan membantu kami dalam pengambilan keputusan dan pemodelan.
Untuk itu, Anda memerlukan data persediaan harian untuk setiap produk, beserta data penjualannya, kemudian Anda dapat menghitung rasio perputaran persediaan sebagai berikut:
Petunjuk: Agregasi ini dilakukan berdasarkan rentang waktu. Misalnya, jika kita sedang mengerjakan peramalan penjualan bulanan, maka ITO akan dihitung sebagai total penjualan pada bulan terakhir di atas rata-rata nilai persediaan selama bulan yang sama.
Peramalan Penjualan Dapat Mengubah Data Menjadi Peluang
Singkatnya, peramalan penjualan dapat membantu perusahaan meningkatkan pendapatan dan menghasilkan keuntungan, asalkan mereka memiliki saluran data yang tepat dan menggunakan metode rekayasa fitur yang benar. Artikel ini merupakan percobaan untuk menunjukkan bahwa semua jenis data dapat berguna dalam memecahkan masalah ini.
Setiap perusahaan harus menyelidiki apakah AI diperlukan untuk masalah peramalannya, dan jika memang demikian, diperlukan insinyur AI ahli dan saran dari insinyur pembelajaran mesin untuk membuat sistem perkiraan penjualannya sendiri.
Jika Anda adalah perusahaan/retailer yang ingin menerapkan teknik prakiraan penjualan ini, mulailah dengan mengumpulkan semua data yang Anda bisa, terutama penjualan harian, inventaris harian, dan transaksi harian.
Setelah Anda memiliki data ini, Anda dapat menggunakannya untuk meningkatkan pendapatan Anda dan mengoptimalkan strategi pengisian stok, memungkinkan bisnis Anda menghasilkan keuntungan setinggi mungkin dengan sumber daya yang tersedia, seperti yang ditunjukkan dalam beberapa contoh di atas, serta praktik perkiraan penjualan yang digunakan oleh pengecer terkemuka .
Referensi:
kumpulan data
Bacaan lebih lanjut tentang peramalan keuangan