Saya cukup baru dalam pembelajaran mesin, teknik-teknik CART dan sejenisnya, dan saya harap kenaifan saya tidak terlalu jelas.
Bagaimana Random Forest menangani struktur data multi-level / hierarkis (misalnya ketika interaksi lintas-level menarik)?
Yaitu, kumpulan data dengan unit analisis pada beberapa tingkatan hierarkis ( mis . Siswa bersarang di sekolah, dengan data tentang siswa dan sekolah).
Sama seperti contoh, pertimbangkan kumpulan data multi-level dengan individu di tingkat pertama ( misalnya , dengan data tentang perilaku memilih, demografi, dll.) Yang bersarang di dalam negara di tingkat kedua (dengan data tingkat negara; misalnya , populasi):
ID voted age female country population
1 1 19 1 1 53.01
2 1 23 0 1 53.01
3 0 43 1 1 53.01
4 1 27 1 1 53.01
5 0 67 0 1 53.01
6 1 34 1 2 47.54
7 0 54 1 2 47.54
8 0 22 1 2 47.54
9 0 78 0 2 47.54
10 1 52 0 2 47.54
Katakanlah itu voted
adalah variabel respon / dependen dan yang lainnya adalah variabel prediktor / independen. Dalam jenis kasus ini, margin dan efek marginal dari suatu variabel (ketergantungan parsial) untuk beberapa variabel tingkat yang lebih tinggi ( misalnya , population
) untuk variabel tingkat individu yang berbeda, dll., Bisa sangat menarik. Dalam kasus yang mirip dengan ini, glm
tentu saja lebih tepat - tetapi ketika ada banyak variabel, interaksi dan / atau nilai-nilai yang hilang, dan / atau dataset skala besar dll, glm
tidak begitu dapat diandalkan.
Subquestions: Dapatkah Random Forest secara eksplisit menangani jenis struktur data ini dalam beberapa cara? Jika digunakan, bias apa yang diperkenalkannya? Jika Random Forest tidak sesuai, apakah ada metode ensemble-type lainnya?
(Pertanyaan Hutan acak pada data yang dikelompokkan mungkin serupa, tetapi tidak benar-benar menjawab ini.)
sumber
Jawaban:
Random Forests akan bekerja dengan baik, tetapi Anda harus sangat berhati-hati ketika menyetel hyperparameter (terutama jika Anda menginginkan ukuran realistis dari kinerja generalisasi). Perkiraan kesalahan OOB tradisional akan menjadi cara yang optimis karena ada "kembaran" yang merajalela dalam data Anda.
Untuk mendapatkan perkiraan penyesuaian dan generalisasi yang tepat, Anda perlu memahami apa karakteristik dari setiap data baru yang Anda harapkan akan temui. Jika Anda ingin melakukan ekstrapolasi ke negara-negara baru, maka Anda perlu mengatur beberapa cara penyetelan berbasis sampel ulang (seperti validasi silang k-fold) yang melakukan stratifikasi pengambilan sampel berdasarkan negara.
Anda juga perlu berhati-hati bagaimana Anda menyandikan data ke dalam Hutan Acak. Tampaknya itu
country
adalah variabel kategori. Memberi makan sebagai angka akan sedikit kasar, tetapi tidak sia-sia (terutama jika Anda memesan ID dengan sesuatu yang bermanfaat).sumber
Saya sebenarnya mengerjakan paket R yang menjalankan randomForest sebagai classifier lokal di sepanjang hierarki kelas yang telah ditentukan. Paket ini dapat ditemukan di R Forge di bawah 'hie-ran-forest'. Paket ini sudah operasional, meskipun gagal salah satu dari tes cran (untuk MAC), saya tidak yakin persis mengapa. Selain benar-benar menjalankan randomForest untuk setiap simpul induk di hierarki, paket juga berisi fungsi prediksi dan fungsi kinerja. Salah satu ukuran kinerja sebenarnya menjelaskan struktur kelas hirarkis.
Paket ini membahas interaksi lintas level dengan terlebih dahulu menjalankan hutan acak sebagai pengklasifikasi lokal di setiap simpul induk dari hirarki kelas. Selanjutnya fungsi prediksi mengambil proporsi suara keluar dari kantong yang diterima setiap kasus di setiap classifier lokal. Lalu ada dua cara untuk mengubah proporsi suara menjadi klasifikasi renyah: 1. aturan mayoritas bertahap - Mulailah dengan classifier lokal yang paling dekat dengan root tree dan pilih anak dari classifier ini yang menerima proporsi suara tertinggi. Selanjutnya, lihat semua anak-anak dari simpul yang dipilih dan pilih lagi anak yang menerima proporsi suara tertinggi dalam pengklasifikasi lokal yang relevan. Lanjutkan sampai simpul terminal tercapai. 2.
Proporsi penggandaan suara sebanding dengan proporsi suara yang dihasilkan oleh randomForest biasa
sumber
Dalam pohon klasifikasi tunggal, kelompok-kelompok ini diberi kode sama dengan variabel kategori lainnya. Ini sering dilakukan sebagai pengkodean biner atau hanya menggunakan integer. Ada berbagai argumen untuk menggunakan keduanya. Di hutan acak jika Anda menggunakan kode biner, beberapa grup akan dimasukkan / dikecualikan untuk pohon tertentu. Jadi, Anda mungkin memiliki indikator untuk
country_2
tetapi tidakcountry_3
. Jika Anda meninggalkan variabel grup sebagai integer maka pemesanan dapat mempengaruhi hasilnya juga. Apa artinya untukcountry > 5
dancountry < 12
? Bagaimana hal itu berubah jika Anda secara acak memberi label ulang pada negara-negara dengan bilangan bulat baru?Pada setiap langkah dalam menumbuhkan pohon, algoritma mencari split yang mengoptimalkan kriteria. Jika ada perbedaan besar antara kelompok maka variabel pengelompokan akan menjadi penting, tetapi jika itu hanya cukup penting dan Anda memangkas pohon, maka variabel tersebut pada dasarnya dapat dikecualikan.
Seperti kebanyakan algoritma pembelajaran mesin lainnya, CART dan hutan acak tidak selalu menjelaskan ketergantungan antar pengamatan dalam kelompok seperti yang Anda harapkan dalam model regresi hirarkis. Jika ada yang ketergantungan antara pengamatan, itu harus ditangkap oleh algoritma hutan acak melalui generasi banyak pohon yang menggunakan variabel pengelompokan. Namun jika variabel lain menunjukkan diskriminasi yang lebih besar maka variabel pengelompokan dapat diabaikan.
Dalam kasus Anda,
country
danpopulation
sangat collinear. Tidak ada informasi yang diperoleh dengan menggunakan kedua variabel dalam model Anda. Jadi Anda dapat berpikir tentang bagaimana model hutan acak akan memperlakukan variabel-variabel ini dalam data Anda.sumber