Hutan acak pada data multi-level / hierarkis terstruktur

13

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 votedadalah 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, glmtentu saja lebih tepat - tetapi ketika ada banyak variabel, interaksi dan / atau nilai-nilai yang hilang, dan / atau dataset skala besar dll, glmtidak 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.)

Mikael Poul Johannesson
sumber
Hai @MikaelAndersson, apakah Anda menemukan solusi untuk pertanyaan yang Anda ajukan? Saya menghadapi situasi yang sama dan berharap untuk mendengar pengalaman Anda. Terima kasih.
NoviceProg

Jawaban:

4

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 countryadalah variabel kategori. Memberi makan sebagai angka akan sedikit kasar, tetapi tidak sia-sia (terutama jika Anda memesan ID dengan sesuatu yang bermanfaat).

Shea Parkes
sumber
Bisakah Anda memperluas sedikit tentang mengapa estimasi kesalahan OOB akan terlalu optimis?
dmartin
2
Saya kira optimisme mereka tergantung pada seperti apa data baru itu nantinya. Jika data baru datang dari negara lain, maka hutan acak ini kemungkinan tidak akan berkinerja sebaik yang ditunjukkan kesalahan OOB. Ini karena kesalahan OOB masih berasal dari sampel dari set kabupaten yang sama misalnya.
Shea Parkes
3

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

Yoni Gavish
sumber
2
Bisakah Anda mengklarifikasi bahwa paket Anda membahas "interaksi lintas level", & jika ya, bagaimana caranya? Hanya mengatakan bahwa sebuah paket ada tidak banyak jawaban (saya tidak bermaksud terlalu kritis di sini, tetapi CV sedang mencari untuk membangun repositori permanen informasi ML berkualitas tinggi & fakta bahwa sebuah paket ada tidak cukup memenuhi standar itu.)
gung - Reinstate Monica
Catatan, nama pengguna Anda, dengan tautan ke halaman pengguna Anda, secara otomatis dilampirkan ke setiap posting yang Anda buat di sini. Jadi tidak perlu menandatangani posting Anda - pada kenyataannya, kami lebih suka Anda tidak. Jika Anda ingin orang lain dapat menghubungi Anda, Anda dapat memposting metode (misalnya, alamat email Anda) di halaman pengguna Anda.
gung - Reinstate Monica
Itu bagus, terima kasih @YoniGavish. Mengapa tidak mengedit jawaban Anda & menambahkan informasi itu ke dalamnya?
gung - Reinstate Monica
Apakah itu @gung lebih baik?
Yoni Gavish
Ya, itu akan berhasil, @YoniGavish, +1. Selamat datang di situs ini.
gung - Reinstate Monica
3

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_2tetapi tidak country_3. Jika Anda meninggalkan variabel grup sebagai integer maka pemesanan dapat mempengaruhi hasilnya juga. Apa artinya untuk country > 5dan country < 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, countrydan populationsangat 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.

Ellis Valentiner
sumber