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.
sumber
Jawaban:
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%.
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.
sumber
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 ).
sumber
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 .
sumber
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.
EDIT2: OK, jadi untuk menjawab pertanyaan, "Teknik apa yang bisa saya gunakan?"
Silakan lihat halaman ini untuk intro kecil tentang masing-masing: http://www.decisioncraft.com/dmdirect/forecastingtechnique.htm
sumber
Dimulai sebagai komentar, tumbuh terlalu lama ...
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.
sumber
Anda harus melihat-lihat WEKA. Ini adalah alat dan API Java dengan serangkaian algoritma pembelajaran mesin. Khususnya Anda harus mencari algoritma klasifikasi.
Semoga berhasil
sumber
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.
Jika Anda bisa, mungkin lebih baik melakukan bootstrap untuk mendapatkan perkiraan kesalahan prediksi yang lebih baik.
sumber
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?
sumber