PCA pada data teks dimensi tinggi sebelum klasifikasi hutan acak?

13

Apakah masuk akal untuk melakukan PCA sebelum melakukan Klasifikasi Hutan Acak?

Saya berurusan dengan data teks dimensi tinggi, dan saya ingin melakukan pengurangan fitur untuk membantu menghindari kutukan dimensi, tetapi bukankah Random Forests sudah melakukan semacam pengurangan dimensi?

Maus
sumber
7
Algoritma RF tidak benar-benar menderita dari jumlah prediktor yang tinggi karena hanya mengambil subset acak dari mereka (disebut mtryparameter) untuk membangun setiap pohon. Ada juga teknik penghapusan fitur rekursif yang dibangun di atas algoritma RF (lihat paket varSelRF R dan referensi di dalamnya). Namun demikian, tentu mungkin untuk menambahkan skema pengurangan data awal, meskipun harus menjadi bagian dari proses cross-validasi. Jadi pertanyaannya adalah: apakah Anda ingin memasukkan kombinasi linier fitur Anda ke RF?
chl
Berapa banyak fitur / dimensi, F? > 1 rb? > 10rb? Apakah fitur diskrit atau kontinu, misalnya frekuensi-istilah, tfidf, metrik kesamaan, vektor kata atau apa? Runtime PCA kuadrat ke F.
smci
Sangat terkait: stats.stackexchange.com/questions/258938
amoeba mengatakan Reinstate Monica

Jawaban:

12

Leo Brieman menulis bahwa "dimensi bisa menjadi berkah". Secara umum, hutan acak dapat berjalan pada kumpulan data besar tanpa masalah. Seberapa besar data Anda? Bidang yang berbeda menangani berbagai hal dengan cara yang berbeda tergantung pada pengetahuan materi pelajaran. Sebagai contoh, dalam studi ekspresi gen, gen sering dibuang berdasarkan varians rendah (tidak mengintip hasil) dalam proses yang kadang-kadang disebut penyaringan non-spesifik. Ini dapat membantu dengan waktu berjalan di hutan acak. Tapi itu tidak wajib.

Berpegang teguh pada contoh ekspresi gen, terkadang analis menggunakan skor PCA untuk mewakili pengukuran ekspresi gen. Idenya adalah mengganti profil serupa dengan satu skor yang berpotensi kurang berantakan. Hutan acak dapat dijalankan baik pada variabel asli atau skor PCA (pengganti untuk variabel). Beberapa melaporkan hasil yang lebih baik dengan pendekatan ini, tetapi tidak ada perbandingan yang baik untuk pengetahuan saya.

Singkatnya, tidak perlu melakukan PCA sebelum menjalankan RF. Tapi kamu bisa. Penafsiran bisa berubah tergantung pada tujuan Anda. Jika yang ingin Anda lakukan hanyalah memprediksi, interpretasi mungkin kurang penting.

Juliuli
sumber
Terima kasih atas tanggapannya. Kecepatan adalah masalah, lebih karena saya memiliki beberapa ribu kemungkinan label dalam masalah multi-label. Aplikasi ini mengklasifikasikan kumpulan data teks yang diambil dari twitter dan deskripsi analis tentang peristiwa tertentu. Saya menggunakan pembobotan tf-idf dan model kantong kata-kata.
Maus
8

Saya ingin menambahkan dua sen ke ini karena saya pikir jawaban yang ada tidak lengkap.

Melakukan PCA dapat sangat berguna sebelum melatih hutan acak (atau LightGBM, atau metode berbasis pohon keputusan lainnya) untuk satu alasan tertentu yang saya ilustrasikan dalam gambar di bawah ini.

Pada dasarnya, ini dapat membuat proses menemukan batas keputusan yang sempurna jauh lebih mudah dengan menyelaraskan set latihan Anda di sepanjang arah dengan varians tertinggi.

Pohon keputusan sensitif terhadap rotasi data, karena batas keputusan yang mereka buat selalu vertikal / horizontal (yaitu tegak lurus terhadap salah satu sumbu). Oleh karena itu, jika data Anda terlihat seperti gambar kiri, akan dibutuhkan pohon yang jauh lebih besar untuk memisahkan kedua klaster ini (dalam hal ini adalah pohon 8 layer). Tetapi jika Anda menyelaraskan data Anda di sepanjang komponen utamanya (seperti di gambar kanan), Anda dapat mencapai pemisahan sempurna hanya dengan satu lapisan!

Tentu saja, tidak semua dataset didistribusikan seperti ini, jadi PCA mungkin tidak selalu membantu, tetapi masih berguna untuk mencobanya dan melihat apakah itu benar. Dan hanya pengingat, jangan lupa untuk menormalkan ulang dataset Anda ke varian unit sebelum melakukan PCA!

PS: Untuk pengurangan dimensionalitas, saya akan setuju dengan orang-orang lain karena biasanya tidak masalah besar untuk hutan acak seperti untuk algoritma lainnya. Tapi tetap saja, ini mungkin sedikit membantu mempercepat latihan Anda. Waktu pelatihan pohon keputusan adalah O (n m log (m)), di mana n adalah jumlah instance pelatihan, m - jumlah dimensi. Dan meskipun hutan acak secara acak memilih subset dimensi untuk setiap pohon yang akan dilatih, semakin rendah fraksi dari jumlah total dimensi yang Anda pilih, semakin banyak pohon yang perlu Anda latih untuk mencapai kinerja yang baik.

masukkan deskripsi gambar di sini

Ivan Batalov
sumber
1

PCA sebelum hutan acak dapat bermanfaat bukan untuk pengurangan dimensi tetapi untuk memberi Anda data bentuk di mana hutan acak dapat melakukan lebih baik.

Saya yakin bahwa secara umum jika Anda mengubah data Anda dengan PCA menjaga dimensi yang sama dari data asli Anda akan memiliki klasifikasi yang lebih baik dengan hutan acak

Donbeo
sumber
PCA runtime adalah kuadratik untuk sejumlah fitur F, jadi tidak selalu murah.
smci
oleh perfomances yang saya maksud adalah prediksi ramalan. Saya tidak mengacu pada waktu komputasi
Donbeo
2
Bisakah Anda menambahkan beberapa pembenaran untuk klaim Anda? Tampaknya PCA tidak akan selalu meningkatkan hasil. Misalnya, ketika batas keputusan tidak sama dengan rotasi (misalnya lingkaran), melakukan PCA hanya akan mengubah skala dan memutar data (dan oleh karena itu, lingkaran), tetapi RF masih harus mendekati batas elips dengan banyak pemisahan persegi panjang.
Sycorax berkata Reinstate Monica