Algoritma apa yang dapat digunakan untuk memprediksi penggunaan bahan habis pakai yang diberikan data dari pembelian sebelumnya?


10

Berpikir tentang masalah yang seharusnya sederhana namun menarik, saya ingin menulis beberapa kode untuk memperkirakan konsumsi yang akan saya butuhkan dalam waktu dekat mengingat sejarah lengkap pembelian saya sebelumnya. Saya yakin masalah semacam ini memiliki beberapa definisi yang lebih umum dan dipelajari dengan baik (seseorang menyarankan ini terkait dengan beberapa konsep dalam sistem ERP dan sejenisnya).

Data yang saya miliki adalah riwayat lengkap pembelian sebelumnya. Katakanlah saya sedang melihat persediaan kertas, data saya terlihat seperti (tanggal, lembaran):

2007-05-10   500
2007-11-11  1000
2007-12-18  1000
2008-03-25   500
2008-05-28  2000
2008-10-31  1500
2009-03-20  1500
2009-06-30  1000
2009-09-29   500
2009-12-16  1500
2010-05-31   500
2010-06-30   500
2010-09-30  1500
2011-05-31  1000

itu bukan 'sampel' secara berkala, jadi saya pikir itu tidak memenuhi syarat sebagai data Time Series .

Saya tidak memiliki data tentang level stok aktual setiap saat. Saya ingin menggunakan data sederhana dan terbatas ini untuk memprediksi berapa banyak kertas yang akan saya butuhkan dalam (misalnya) 3,6,12 bulan.

Sejauh ini saya mengetahui bahwa apa yang saya cari disebut Extrapolation dan tidak lebih :)

Algoritma apa yang dapat digunakan dalam situasi seperti itu?

Dan algoritma apa, jika berbeda dari yang sebelumnya, juga dapat mengambil keuntungan dari beberapa titik data lebih lanjut memberikan tingkat pasokan saat ini (misalnya, jika saya tahu bahwa pada tanggal XI ada Y lembar kertas tersisa)?

Silakan mengedit pertanyaan, judul, dan tag jika Anda tahu istilah yang lebih baik untuk ini.

EDIT: untuk apa nilainya, saya akan mencoba kode ini dengan python. Saya tahu ada banyak perpustakaan yang mengimplementasikan lebih atau kurang algoritma apa pun di luar sana. Dalam pertanyaan ini saya ingin mengeksplorasi konsep dan teknik yang dapat digunakan, dengan implementasi yang sebenarnya dibiarkan sebagai latihan untuk pembaca.


1
ahli statistik sayang, saya hanya ingin memberi tahu Anda bahwa pertanyaan ini belum ditinggalkan. Saya akan kembali ke masalah khusus ini segera setelah saya menemukan waktu dan motivasi (baca: bos memberitahu saya untuk melakukan ini) dan akan menyelidiki jawaban Anda yang berharga dan akhirnya menandai satu sebagai diterima (yang bagi saya akan berarti "benar-benar dilaksanakan").
Luke404

Jawaban:


12

Pertanyaannya menyangkut tingkat konsumsi versus waktu. Ini panggilan untuk regresi tingkat terhadap waktu ( bukan regresi total pembelian terhadap waktu). Ekstrapolasi dicapai dengan membangun batas prediksi untuk pembelian di masa depan.

Beberapa model dimungkinkan. Mengingat pindah ke kantor tanpa kertas (yang telah berlangsung selama sekitar 25 tahun :-), kami mungkin mengadopsi model eksponensial (penurunan). Hasilnya digambarkan oleh sebaran konsumsi berikut, di mana ditarik kurva eksponensial (dipasang melalui kuadrat terkecil biasa untuk logaritma konsumsi) dan batas prediksi 95% nya. Nilai yang diekstrapolasi diharapkan akan terletak di dekat garis dan antara batas prediksi dengan kepercayaan 95%.

Angka

Sumbu vertikal menunjukkan halaman per hari pada skala linier. Garis biru tua yang solid adalah cocok: itu benar-benar eksponensial tetapi sangat dekat dengan linier. Efek dari fit eksponensial muncul di pita prediksi, yang pada skala linier ini ditempatkan secara asimetris di sekitar fit tersebut; pada skala log, mereka akan simetris.

Model yang lebih tepat akan menjelaskan fakta bahwa informasi konsumsi lebih tidak pasti selama periode waktu yang lebih pendek (atau ketika total pembelian lebih kecil), yang dapat dipasang menggunakan kuadrat terkecil tertimbang. Mengingat variabilitas dalam data ini dan kesetaraan kasar dari ukuran semua pembelian, itu tidak sepadan dengan usaha ekstra.

Pendekatan ini mengakomodasi data inventaris perantara , yang dapat digunakan untuk menginterpolasi tingkat konsumsi pada waktu-waktu menengah. Dalam kasus seperti itu, karena jumlah menengah konsumsi dapat sangat bervariasi, pendekatan kuadrat terkecil tertimbang akan disarankan.

Apa bobot untuk digunakan? Kami mungkin mempertimbangkan konsumsi kertas, yang harus dibayar dalam jumlah kertas yang tidak terpisahkan, sebagai jumlah yang bervariasi secara independen dari hari ke hari. Oleh karena itu, selama periode yang pendek, varians dari penghitungan akan proporsional dengan panjang periode. Varians dari hitungan per hari kemudian akan berbanding terbalik dengan panjang periode. Akibatnya bobot harus berbanding lurus proporsional dengan periode yang berlalu antara persediaan. Jadi, misalnya, konsumsi 1000 lembar antara 2007-05-10 dan 2007-11-11 (sekitar 180 hari) akan memiliki hampir lima kali lipat dari konsumsi 1000 lembar antara 2007-11-11 dan 2007-12- 18, periode hanya 37 hari.

Bobot yang sama dapat ditampung dalam interval prediksi. Ini akan menghasilkan interval yang relatif luas untuk prediksi konsumsi selama satu hari dibandingkan dengan prediksi untuk konsumsi selama, katakanlah, tiga bulan.

Harap perhatikan bahwa saran ini fokus pada model sederhana dan prediksi sederhana, sesuai untuk aplikasi yang dimaksud dan variabilitas besar yang jelas dalam data. Jika proyeksi melibatkan, katakanlah, pengeluaran pertahanan untuk negara besar, kami ingin mengakomodasi lebih banyak variabel penjelas, memperhitungkan korelasi temporal, dan memberikan informasi yang jauh lebih terperinci dalam model.


Apakah data telah diambil sampelnya secara berkala, apakah menggunakan penghitungan yang bertentangan dengan tarif sudah sesuai?
MannyG

1
@ MannyG Ya, tetapi hanya karena penghitungan akan berbanding lurus dengan tarif, bukan karena akan sesuai untuk menggunakan penghitungan itu sendiri. Kebutuhan untuk menggunakan tarif di sini jelas ketika kami mempertimbangkan apa artinya sebenarnya untuk memprediksi nilai masa depan: Anda harus menentukan interval waktu dari konsumsi yang diprediksi. Dengan demikian, seseorang memprediksi jumlah kali waktu untuk mendapatkan kuantitas, menyiratkan jumlah itu harus kuantitas per unit waktu: tingkat konsumsi .
whuber

@whuber Maafkan saya, tetapi saya tidak dapat dengan jelas memahami model mana yang dijelaskan dalam jawaban Anda dan di mana poin yang satu berakhir dan mulai yang lain. Saya memiliki masalah yang sama dan sebagian jawaban Anda tampaknya persis seperti yang saya butuhkan, tetapi saya harus melakukan beberapa penelitian lebih lanjut tentang masalah ini dan saya tidak dapat mengatakan dengan membaca jawaban Anda jika Anda berbicara tentang model yang berbeda atau yang tertentu yang ditingkatkan secara bertahap. Apakah ada nama resmi untuk model dengan bobot yang Anda gambarkan? Apakah model pertama Anda (penurunan eksponensial) melibatkan bobot? Terima kasih sebelumnya.
Agis

@ rensokuken Saya menjelaskan satu model dan variasi yang menimbang data. Bagian kedua dari jawaban ini menyarankan cara menentukan bobot. Saya tidak tahu nama resmi apa pun di luar "kuadrat terkecil tertimbang."
Whuber

@whuber saya mengerti. Pada awalnya Anda menjelaskan ini dan kemudian ketika Anda menambahkan bobot Anda menjelaskan ini , kan? Juga, apakah Anda memiliki sumber daya untuk dilihat, terkait dengan solusi khusus dan untuk pemula dalam peramalan? Terimakasih atas klarifikasinya.
Agis

5

Ini jelas merupakan masalah pembelajaran mesin (saya memperbarui tag di posting Anda). Kemungkinan besar, ini adalah regresi linier . Singkatnya, regresi linier mencoba memulihkan hubungan antara 1 variabel dependen dan 1 atau lebih independen. Variabel dependen di sini adalah penggunaan bahan habis pakai . Untuk variabel independen saya sarankan interval waktu antara pembelian. Anda juga dapat menambahkan lebih banyak variabel independen, misalnya, jumlah orang yang menggunakan barang habis pakai pada setiap saat, atau hal lain yang dapat memengaruhi jumlah pembelian. Anda dapat menemukan deskripsi yang bagus tentang regresi linier bersama dengan implementasi di Python di sini .

Secara teori, ada kemungkinan juga bahwa tidak hanya interval waktu antara pembelian, tetapi juga saat-saat dalam waktu itu sendiri mempengaruhi jumlah. Misalnya, untuk beberapa alasan pada bulan Januari orang mungkin menginginkan lebih banyak kertas daripada, katakanlah, pada bulan April. Dalam hal ini Anda tidak dapat menggunakan jumlah bulan sebagai variabel independen itu sendiri karena sifat regresi linier itu sendiri (jumlah bulan hanya label, tetapi akan digunakan sebagai jumlah). Jadi Anda punya 2 cara bagaimana mengatasinya.

Pertama, Anda dapat menambahkan 12 variabel tambahan , satu untuk setiap bulan , dan mengatur setiap variabel menjadi 1 jika itu merupakan bulan pembelian dan ke 0 jika tidak. Kemudian gunakan regresi linier yang sama.

Kedua, Anda dapat menggunakan algoritma yang lebih canggih, seperti M5 ' , yang merupakan campuran dari regresi linier dan pohon keputusan (Anda dapat menemukan deskripsi terperinci dari algoritma ini dalam Penambangan Data: Alat dan Teknik Pembelajaran Mesin Praktis ).


Itu tergantung pada seberapa banyak data tentang pengguna yang Anda miliki. Jika cukup (katakanlah,> 100 transaksi lebih dari> 1 tahun), Anda dapat melatih model untuk pengguna khusus ini. Jika tidak, model umum atas semua pengguna dapat memberi Anda hasil yang lebih baik. Anda dapat menggunakan validasi silang untuk mengukur kinerja kedua pendekatan.
Berteman

5

itu bukan 'sampel' secara berkala, jadi saya pikir itu tidak memenuhi syarat sebagai data Time Series.

Berikut adalah gagasan tentang cara memperkirakan pembelian: pertimbangkan data sebagai rangkaian permintaan yang terputus - putus . Artinya, Anda memang memiliki rangkaian waktu sampel secara berkala, tetapi nilai-nilai positifnya jelas tidak beraturan. Rob Hyndman memiliki tulisan yang bagus tentang penggunaan metode Croston untuk meramalkan seri permintaan berselang. Walaupun saya juga banyak memprogram dalam Python, Anda akan menghemat banyak waktu eksplorasi dengan menggunakan metode Croston, serta metode peramalan deret waktu lainnya, tersedia dalam ramalan paket R yang sangat baik dari Rob .


1
+1 Untuk menawarkan ide baru. Namun, meneliti dengan teliti dan menarik kesimpulan dari makalah Shenstone & Hyndman, menunjukkan bahwa metode Croston umumnya tidak terlalu bagus: makalah ini berfokus pada upaya membenarkan dan memahami prosedur populer yang ternyata terbatas; yang terbaik yang dapat penulis katakan adalah bahwa meskipun demikian, "perkiraan ... mungkin masih berguna." Selain itu, sepertinya model ini tidak dapat mengakomodasi data tambahan tentang "level pasokan saat ini" seperti yang diminta oleh OP.
whuber

3

Saya cukup yakin Anda mencoba melakukan beberapa analisis regresi agar sesuai dengan garis ke titik data Anda. Ada banyak alat di luar sana untuk membantu Anda - MS Excel yang paling mudah diakses. Jika Anda ingin meluncurkan solusi Anda sendiri , lebih baik baca statistik Anda (di sini dan di sini , mungkin). Setelah Anda memasukkan satu baris ke data Anda, Anda dapat memperkirakan di masa depan.

EDIT: Ini adalah screenshot contoh excel yang saya sebutkan di komentar di bawah. Tanggal yang dicetak tebal adalah tanggal acak di masa depan yang saya ketikkan sendiri. Nilai tebal di kolom B adalah nilai ekstrapolasi yang dihitung dengan rasa Excel tentang regresi eksponensial. masukkan deskripsi gambar di sini

EDIT2: OK, jadi untuk menjawab pertanyaan, "Teknik apa yang bisa saya gunakan?"

  • regresi eksponensial (disebutkan di atas)
  • Metode Holt
  • Metode musim dingin
  • ARIMA

Silakan lihat halaman ini untuk intro kecil tentang masing-masing: http://www.decisioncraft.com/dmdirect/forecastingtechnique.htm


Hal ini menyebabkan saya untuk bertanya pada diri sendiri: apa yang titik data saya? bukan pembelian tunggal - yang tidak akan memperhitungkan berapa banyak waktu yang berlalu di antara mereka dan dengan demikian total konsumsi sumber daya yang diberikan. Mungkin saya harus menginterpolasi mereka untuk mendapatkan rata-rata secara berkala (mis., Kuantitas per minggu) dan kemudian menggunakannya sebagai input data deret waktu untuk mengekstrapolasi data masa depan?

Pikirkan perbedaan waktu sebagai perbedaan dalam nilai 'x' Anda pada plot. Sebagian besar jenis analisis regresi akan memperhitungkan perbedaan yang bervariasi. Coba data sampel Anda menggunakan fungsi GROWTH di Excel, yang menggunakan regresi eksponensial. Jika Anda mengubah tanggal, nilai yang diproyeksikan akan berubah sesuai dengan itu.

3

Dimulai sebagai komentar, tumbuh terlalu lama ...

itu bukan 'sampel' secara berkala, jadi saya pikir itu tidak memenuhi syarat sebagai data Time Series

Ini adalah kesimpulan yang salah - itu tentu saja deret waktu. Rangkaian waktu mungkin merupakan sampel yang tidak teratur, hanya cenderung memerlukan perbedaan dari pendekatan biasa saat itu.

Masalah ini tampaknya terkait dengan masalah stokastik seperti tingkat bendungan (air biasanya digunakan pada tingkat yang cukup stabil dari waktu ke waktu, kadang-kadang meningkat atau menurun lebih atau kurang cepat, sementara di lain waktu itu cukup stabil), sedangkan tingkat bendungan cenderung hanya meningkat cepat (pada dasarnya dalam lompatan), saat curah hujan terjadi. Penggunaan kertas dan pola pengisian ulang mungkin agak serupa (meskipun jumlah yang dipesan cenderung jauh lebih stabil dan dalam jumlah yang lebih bulat daripada jumlah curah hujan, dan terjadi setiap kali tingkatnya rendah).

Ini juga terkait dengan modal perusahaan asuransi (tetapi agak terbalik) - selain modal awal, uang dari premi (biaya operasi bersih) dan investasi datang dengan cukup stabil (kadang-kadang lebih atau kurang), sementara pembayaran polis asuransi cenderung dibuat dalam jumlah yang relatif besar jumlah.

Kedua hal tersebut telah dimodelkan, dan dapat memberikan sedikit wawasan untuk masalah ini.


-1

Anda harus melihat-lihat WEKA. Ini adalah alat dan API Java dengan serangkaian algoritma pembelajaran mesin. Khususnya Anda harus mencari algoritma klasifikasi.

Semoga berhasil


Bagaimana algoritma klasifikasi memberi saya prediksi kuantitatif?

@ Luke404: Weka memiliki 3 jenis algoritma (klasifikasi, pengelompokan dan penambangan asosiasi), dan mereka memutuskan untuk memasukkan regresi ke dalam bagian klasifikasi. Tetapi secara umum Anda benar, klasifikasi dan prediksi kuantitatif adalah hal yang sedikit berbeda.
berteman dengan

-1

Saya akan menggunakan linear kuadrat terkecil agar sesuai dengan model dengan konsumsi kumulatif (yaitu menjalankan total halaman berdasarkan tanggal). Asumsi awal adalah menggunakan polinomial tingkat pertama. Namun residual menunjukkan bahwa derajat pertama kekurangan data dalam contoh, sehingga langkah logis berikutnya adalah meningkatkannya ke kecocokan derajat kedua (yaitu kuadratik). Ini menghilangkan kelengkungan dalam residu, dan koefisien sedikit negatif untuk istilah kuadrat berarti bahwa tingkat konsumsi menurun dari waktu ke waktu, yang tampaknya intuitif mengingat sebagian besar orang cenderung cenderung menggunakan lebih sedikit kertas dari waktu ke waktu. Untuk data ini saya tidak berpikir Anda perlu melampaui tingkat kedua, karena Anda mungkin mulai overfitting dan ekstrapolasi yang dihasilkan mungkin tidak masuk akal.

Anda dapat melihat pasangannya (termasuk ekstrapolasi) dan residu dalam plot di bawah ini.

cocok sisa

Jika Anda bisa, mungkin lebih baik melakukan bootstrap untuk mendapatkan perkiraan kesalahan prediksi yang lebih baik.


Karena residu dalam konsumsi kumulatif akan sangat berkorelasi, metode ini tidak tampak dibenarkan secara statistik. Menggunakan kertas kuadrat hanya untuk masalah mendasar ini; itu tidak bisa menyembuhkannya.
Whuber

-2

Saya pikir Anda bisa mendapatkan data menggunakan riset operasi .

Mengapa Anda tidak mencoba mencari beberapa persamaan yang dianggap sebagai variabel jumlah kertas yang digunakan per periode waktu, pengguna kertas, dll?

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.