Saya sedang melatih model klasifikasi dengan Random Forest untuk membedakan antara 6 kategori. Data transaksional saya memiliki sekitar 60k + pengamatan dan 35 variabel. Berikut adalah contoh bagaimana kira-kira terlihat.
_________________________________________________
|user_id|acquisition_date|x_var_1|x_var_2| y_vay |
|-------|----------------|-------|-------|--------|
|111 | 2013-04-01 | 12 | US | group1 |
|222 | 2013-04-12 | 6 | PNG | group1 |
|333 | 2013-05-05 | 30 | DE | group2 |
|444 | 2013-05-10 | 78 | US | group3 |
|555 | 2013-06-15 | 15 | BR | group1 |
|666 | 2013-06-15 | 237 | FR | group6 |
Setelah model dibuat, saya ingin membuat skor pengamatan dari beberapa minggu terakhir. Karena ada perubahan pada sistem, pengamatan yang lebih baru akan lebih mirip dengan lingkungan pengamatan saat ini yang ingin saya prediksi. Oleh karena itu, saya ingin membuat variabel bobot sehingga Hutan Acak akan lebih mementingkan pengamatan baru-baru ini.
Apakah ada yang tahu jika paket randomForest di R mampu menangani bobot per pengamatan?
Bisakah Anda menyarankan metode apa yang baik untuk membuat variabel bobot? Misalnya, karena data saya dari tahun 2013, saya berpikir bahwa saya dapat mengambil angka bulan dari tanggal sebagai berat. Adakah yang melihat masalah dengan metode ini?
Banyak terima kasih sebelumnya!
sumber
Jawaban:
The
ranger
paket di R ( pdf ), yang relatif baru, akan melakukan hal ini. Implementasi ranger hutan acak memilikicase.weights
argumen yang mengambil vektor dengan bobot kasus / pengamatan individu.sumber
Anda dapat menguji ulang data agar lebih mewakili titik data yang lebih baru. Rf melibatkan langkah sampel-dengan-replacment dan "mengantongi kurang lebih seimbang" untuk kelas yang tidak seimbang menggunakan pengambilan sampel untuk mewakili kelas minoritas secara berlebihan dan menghasilkan hasil yang baik atau lebih baik daripada kelas hutan acak berbobot kelas dalam pengalaman saya.
Anda bisa melakukan resample pada tingkat pembuatan matrik pelatihan ( referensi ) Anda alih-alih selama mengantongi agar implementasi mudah meskipun saya menyarankan melakukan banyak pengulangan dalam kasus itu.
Secara internal beberapa implementasi hutan acak termasuk scikit-belajar sebenarnya menggunakan bobot sampel untuk melacak berapa kali setiap sampel ada di dalam tas dan itu harus setara dengan oversampling di tingkat bagging dan hampir oversampling di tingkat pelatihan dalam validasi silang.
sumber
Anda harus melihat ke dalam parameter "classwt". Ini sepertinya bukan apa yang secara langsung Anda minati, tetapi ini mungkin memberi Anda perasaan tentang apa yang ingin Anda lakukan.
Lihat di sini: Stack Exchange pertanyaan # 1
Dan di sini: Pertanyaan Stack Exchange # 2
Artikel tentang hutan acak tertimbang: PDF
Ide dasarnya adalah kelas bobot sedemikian sehingga kelompok / klasifikasi yang jarang diamati lebih cenderung dipilih dalam sampel bootstrap Anda. Ini berguna untuk data yang tidak seimbang (ketika probabilitas sebelumnya dari kelas yang berbeda sangat berbeda).
Sepertinya saya ingin melakukan sesuatu yang serupa, tetapi untuk acara terkini (bukan untuk grup / klasifikasi tertentu). Cara sederhana untuk melakukan ini adalah dengan membuat pengamatan duplikat (yaitu dimasukkan ke dalam, baris identik berulang) untuk pengamatan yang lebih baru. Namun, ini berpotensi menjadi tidak efisien. Saya tidak tahu cara untuk secara langsung memberi bobot pada setiap pengamatan dalam R, tetapi saya mungkin tidak menyadarinya.
Anda dapat mencoba mencari-cari implementasi alternatif, misalnya dalam C - paling buruk, ini dapat dikustomisasi dengan sedikit pengkodean.
sumber