Bagaimana cara memilih split di Random forest untuk prediktor kategoris (fitur)?

8

Saya mengerti bagaimana pemisahan terbaik dipilih untuk forest acak untuk prediktor numerik (fitur).

Prediktor numerik diurutkan kemudian untuk setiap nilai Gini kenajisan atau entropi dihitung dan ambang dipilih yang memberikan perpecahan terbaik. Tetapi bagaimana pemisahan terbaik dipilih untuk prediktor kategori karena tidak ada pemesanan khusus?

Ajay
sumber

Jawaban:

9

Implementasi vanilla yang biasa mencoba semua kemungkinan kombinasi dari kategori Anda. Ini menyatakan kombinasi ini sebagai bilangan bulat yang mewakili kategori mana yang dipilih dan yang ditinggalkan di split. Ia bergerak dari kiri ke kanan. Misalnya jika Anda memiliki variabel dengan kelas "Kucing", "Anjing", "Sapi", "Tikus" itu akan menyapu melalui kemungkinan perpecahan, yang berarti sesuatu seperti:

Anjing vs yang lain = 0100 (ingat, baca dari kiri ke kanan)

Kucing vs sisanya = 1000

Sendiri, tetapi juga

Anjing dan Kucing vs Sapi dan Tikus = 1100

Sapi dan Kucing vs Anjing dan Tikus = 1010

Dan kemudian, seperti yang disebutkan, ia menggunakan bilangan bulat untuk menangani ini, untuk mewakili pemisahan:

library(R.utils)
> intToBin(12)
[1] "1100"
JEquihua
sumber
0

Hutan adalah metode ansambel pohon. Jadi saya pikir pertanyaan Anda lebih didasarkan pada algoritma pohon tentang variabel pemisahan. Ada dua jenis prediktor kategori, faktor keteraturan, dan bukan faktor keteraturan.

Faktor pesanan mirip dengan variabel numerik dan hutan acak akan menemukan titik potong, sedangkan yang terakhir digunakan algoritma lain seperti di bawah ini.

Ini akan mencoba untuk menangkap faktor tingkat pertama sebagai pemisahan dan mencoba menyesuaikan model dan menemukan kinerja dengan fungsi kerugian. Kemudian coba temukan level kedua dan paskan lagi dan temukan performanya dan sebagainya. Pada akhirnya, ia menemukan kombinasi level pemisahan terbaik sesuai dengan kinerja terbaik.

Jadi Anda akan menemukan bahwa ini membutuhkan waktu yang lebih lama dan memori untuk model pohon atau model hutan acak agar sesuai dengan faktor dibandingkan numerik.

Vincent
sumber
0

Jika fitur Anda kategorikal, ide pertama yang muncul di benak saya adalah membuat fitur biner untuk setiap nilai yang mungkin dalam kategori tersebut.

Jadi, jika Anda memiliki fitur yang sesuai dengan "merek ponsel" yang hanya dapat "Samsung, Apple, HTC atau Nokia", saya akan menyatakannya sebagai empat kategori (1, 0, 0, 0), (0, 1, 0, 0), (0, 0, 1, 0) dan (0, 0, 0, 1) masing-masing. Dengan cara ini ambang akan memilih antara menjadi merek atau merek lain di setiap pemisahan, tanpa memiliki efek aneh.

Semoga ini membantu!

Cristina
sumber
0

Pilih beberapa kategori acak dan gunakan kategori yang memberikan pemisahan terbaik, atau pilih beberapa kombinasi kategori acak dan gunakan kombinasi yang memberikan pemecahan terbaik.

Saya pikir itu tidak terlalu penting mana dari dua metode yang Anda pilih karena pemisahan pada kombinasi kategori pada satu node dapat disimulasikan dengan memisahkan pada satu kategori pada beberapa node.

herman
sumber