Menetapkan lebih banyak bobot untuk pengamatan terbaru dalam regresi


9

Bagaimana cara memberi bobot lebih pada pengamatan terbaru di R?

Saya menganggap ini sebagai pertanyaan atau keinginan yang umum diajukan, tetapi saya memiliki kesulitan untuk mencari tahu bagaimana menerapkannya. Saya telah mencoba mencari banyak untuk ini tetapi saya tidak dapat menemukan contoh praktis yang baik.

Dalam contoh saya, saya akan memiliki dataset besar dari waktu ke waktu. Saya ingin mengatakan menerapkan semacam pembobotan eksponensial dari baris data yang lebih baru. Jadi saya akan memiliki semacam fungsi eksponensial yang mengatakan pengamatan pada 2015 ___ lebih penting untuk melatih model daripada pengamatan pada 2012.

Variabel dataset saya berisi campuran nilai kategoris dan numerik dan target saya adalah nilai numerik - jika itu penting.

Saya ingin menguji / mencoba menggunakan model seperti GBM / Random Forest, idealnya dalam paket CARET.

pembaruan-pertanyaan

Saya menghargai tanggapan yang diberikan di bawah ini tentang bagaimana cara membusuk secara eksponensial dengan jarak tanggal antara dua titik.

Namun, ketika datang untuk melatih model ini dalam caret, bagaimana sebenarnya faktor bobot? Nilai bobot di setiap baris pelatihan adalah jarak antara beberapa titik di masa depan dan saat titik itu terjadi secara historis.

Apakah bobot hanya berperan selama prediksi? Karena jika mereka ikut bermain selama pelatihan, bukankah itu akan menyebabkan berbagai masalah karena berbagai lipatan silang akan memiliki bobot yang berbeda-beda, mencoba memprediksi sesuatu yang mungkin benar-benar ada pada titik waktu sebelumnya?


3
Closevote karena penanya perlu mengklarifikasi masalah statistik. Tidak jelas bagi saya bahwa GBN atau RF sesuai di sini. Menyarankan ini dimigrasi ke CV.com
DWin

baik. Saya akan menambahkan contoh segera. Saya hanya melihat pertanyaan semacam ini di internet, tetapi tidak ada contoh nyata bagaimana menerapkan / menyelesaikannya.
user3788557

Jawaban:


5

Bagaimana cara memberi bobot lebih pada pengamatan terbaru di R?

Saya kira Anda memiliki stempel waktu yang terkait dengan setiap pengamatan. Anda dapat menghitung variabel timeElapsed = modelingTime - observationTime. Sekarang Anda menerapkan fungsi eksponensial sederhana sebagai W=K*exp(-timeElapsed/T), di mana Kkonstanta penskalaan dan Tadalah konstanta waktu untuk fungsi peluruhan. Wberfungsi sebagai case-weight.

Sepengetahuan saya, banyak fungsi di caretizinkan weightsebagai parameter, yang merupakan kolom bobot kasus yang akan disediakan untuk observasi terkait (sehingga memiliki panjang yang sama dengan #rows).


1
Fungsi dalam caret::trainadalah weights.
timcdlucas

Terima kasih Ujjwal - tetapi apa metodologi dalam menentukan 'K' dalam persamaan Anda? ada pedoman atau praktik terbaik? Juga, apa yang Anda maksud dengan 'periode waktu' untuk fungsi peluruhan?
user3788557

K hanyalah konstanta penskalaan dan tidak akan terlalu memengaruhi hasil model. Anda bisa mengatur ke beberapa nilai sehingga kisaran nilai case-weight mungkin dekat dengan kisaran 0-1. Mengenai "periode-waktu", ini juga disebut konstanta waktu untuk fungsi peluruhan eksponensial orde 1 ATAU usia rata-rata. Anda dapat mencarinya di wikipedia.
Ujjwal Kumar

Silakan lihat pembaruan saya untuk posting saya. Apakah ini akan berfungsi dengan benar selama pelatihan? Apakah model pelatihan memiliki bias karena Bobot hanya dapat diterapkan ketika digunakan terhadap set tes? Ketika perangkat pelatihan dikocok secara acak, bisa jadi buruk jika bobot yang lebih tinggi digunakan untuk memprediksi harga di masa lalu atau terhadap periode waktu yang tidak berada di dekat waktu.
user3788557

Tanpa bobot kasus, pelatihan model Anda akan memberikan kepentingan yang sama untuk data lama dan baru tetapi dengan bobot kasus yang diusulkan, itu akan memberikan lebih penting bagi data yang lebih baru, jadi dalam hal ini, itu bias terhadap pengamatan yang lebih baru, tetapi itu adalah apa yang kamu inginkan. Saya tidak mengerti mengapa "bobot hanya bisa diizinkan untuk kasus uji" . Juga, berapa bobot yang lebih tinggi akan digunakan untuk nilai yang lebih lama ketika set pelatihan diacak secara acak? saat modelingTime tetap sama untuk semua kasus pelatihan. Bobot case PS tidak berlaku ketika hanya menggunakan model, itu hanya berlaku untuk periode pelatihan.
Ujjwal Kumar

0

Data (bukan analis membuat asumsi - tebakan) sering dapat menyarankan bentuk skema pembobotan. Ini dilakukan melalui GLS di mana bobot yang sesuai untuk model kuadrat terkecil tertimbang diperoleh dari perbedaan signifikan secara statistik yang ditemukan dalam varian kesalahan. Lihatlah Deteksi perubahan dan pencilan dengan ARIMA (prosedur Tsay) dan di sini http://docplayer.net/12080848-Outliers-level-shifts-and-variance-changes-in-time-series.html . Jika Anda ingin memposting data, silakan lakukan di sini dan saya akan mencoba dan membantu lebih lanjut karena saya memiliki akses rutin ke perangkat lunak yang mungkin mencerahkan Anda.

Ada versi R dari perangkat lunak yang saya gunakan.

Anda mungkin melihat Bagaimana cara memasukkan variabel kontrol dalam analisis Intervensi dengan ARIMA? karena memiliki contoh bagaimana bobot diidentifikasi dan digunakan untuk menstabilkan varians kesalahan sehingga secara efektif mempercayai / tidak percaya / mendiskon / menimbang / membobot / mempercayai nilai-nilai sebelumnya tertentu.

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.