PCA dan hutan acak

12

Untuk kompetisi Kaggle baru-baru ini, saya (secara manual) mendefinisikan 10 fitur tambahan untuk set pelatihan saya, yang kemudian akan digunakan untuk melatih classifier hutan acak. Saya memutuskan untuk menjalankan PCA pada dataset dengan fitur-fitur baru, untuk melihat bagaimana mereka dibandingkan satu sama lain. Saya menemukan bahwa ~ 98% varians dibawa oleh komponen pertama (vektor eigen pertama). Saya kemudian melatih classifier beberapa kali, menambahkan satu fitur pada suatu waktu, dan menggunakan cross-validation dan RMS error untuk membandingkan kualitas klasifikasi. Saya menemukan bahwa klasifikasi ditingkatkan dengan setiap fitur tambahan, dan bahwa hasil akhir (dengan semua 10 fitur baru) jauh lebih baik daripada yang pertama dijalankan dengan (katakanlah) 2 fitur.

  • Mengingat bahwa PCA mengklaim ~ 98% varians ada di komponen pertama dataset saya, mengapa kualitas klasifikasi meningkat sangat banyak?

  • Apakah ini berlaku untuk pengklasifikasi lain? RF berskala lintas banyak inti, jadi ini jauh lebih cepat untuk melatih daripada (katakanlah) SVM.

  • Bagaimana jika saya telah mengubah dataset menjadi ruang "PCA", dan menjalankan classifier pada ruang yang diubah. Bagaimana hasil saya berubah?

Vishal
sumber
2
Apakah Anda menormalkan data Anda sebelum menjalankan PCA? Jika saya harus menebak saya akan berpikir salah satu fitur Anda berada pada skala yang jauh lebih besar daripada yang lain ...
Marc Shivers
1
Fungsi PCA secara otomatis menormalkan segalanya ketika melakukan perhitungan.
Vishal
1
Mungkin itu hanya saya, tetapi bisakah Anda menjelaskan hal-hal berikut: langkah pertama Anda adalah menambahkan 10 fitur (mentah), satu per satu, atau apakah Anda bekerja langsung dengan komponen PCA? Seperti yang dinyatakan, saya mengerti ini adalah kasus pertama dan Anda bertanya-tanya apakah Anda dapat bekerja secara langsung dengan hasil dari PCA. Dalam kedua kasus, apakah Anda menerapkan PCA pada semua variabel, termasuk fitur baru, atau hanya nanti?
chl
Saya menerapkan PCA ke matriks asli dengan 10 fitur tambahan. Saya kemudian melatih classifier, dengan menambahkan satu fitur pada satu waktu, sehingga saya bisa mengukur peningkatan tambahan yang disediakan dengan penambahan setiap fitur. Pertanyaan saya adalah bagaimana jika saya mengubah dataset (dengan 10 fitur baru) ke dalam ruang PCA, dan kemudian menjalankan classifier langsung pada dataset di ruang PCA
Vishal

Jawaban:

7

Saat melakukan pemodelan prediktif, Anda mencoba menjelaskan variasi dalam respons, bukan variasi dalam fitur. Tidak ada alasan untuk percaya bahwa menjejalkan sebanyak mungkin variasi fitur ke dalam satu fitur baru akan menangkap sejumlah besar daya prediksi fitur secara keseluruhan.

Ini sering dijelaskan sebagai perbedaan antara Regresi Komponen Utama daripada Kuadrat Terkecil Sebagian.

Shea Parkes
sumber
"Tidak ada alasan untuk percaya bahwa menjejalkan sebanyak mungkin variasi fitur ke dalam satu fitur baru akan menangkap sejumlah besar kekuatan prediksi fitur secara keseluruhan." Itu tidak pernah menjadi intinya, dan melakukan ini akan menghasilkan klasifikasi yang sangat membingungkan! Tujuannya adalah untuk memiliki serangkaian fitur, semuanya menggambarkan berbagai aspek dataset, dengan maksud untuk mengurangi kesalahan generalisasi. Titik mengambil PCA adalah melihat betapa berbedanya fitur. Dan maksud posting saya adalah bahwa fitur saya tidak jauh berbeda, namun hasil RF masih membaik.
Vishal
1
Logika yang sama masih bisa diterapkan. Fitur baru sangat berkolaborasi dengan fitur sebelumnya masih dapat membawa daya prediksi lebih banyak. Khusus untuk randomForest: jika fitur duplikat dekat adalah penting secara umum, satu versi atau lebih sekarang lebih mungkin untuk dipilih sebagai kandidat pemisah.
Shea Parkes
Ini menimbulkan pertanyaan tindak lanjut, bagaimana Anda a-priori memilih fitur untuk classifier hutan acak Anda untuk meningkatkan klasifikasi, tanpa benar-benar menjalankan classifier? Apakah ada proses penyaringan? Bagaimana Anda melakukannya? :)
Vishal
Saya tidak tahu metode seleksi a-priori yang berguna. Anda dapat melakukan banyak loop bersarang yang penting dan seleksi melalui beberapa paket R seperti Boruta. Saya belum menemukan mereka berguna. Saya merasa tidak masuk akal untuk percaya bahwa fitur yang diberikan tidak berpengaruh. Saya percaya menekankan fitur-fitur tertentu di atas yang lain bisa berguna, tetapi dasar algoritma randomForest sudah cukup baik. Jika Anda terlalu terlibat dalam pemodelan dan ingin lebih banyak kinerja, saya sarankan menumpuk algoritma lain, beberapa karena beberapa pohon didorong, dengan randomForest Anda.
Shea Parkes
1
Anda dapat secara apriori menghitung beberapa tindakan pemisahan untuk kelas Anda berdasarkan fitur Anda (jarak Jeffries-Matusita, Divergence, dll). Ini bisa membantu Anda mengetahui secara umum fitur mana yang membantu Anda membedakan antara kelas tetapi karena cara kerja RF tidak mudah untuk memilih dari sini fitur mana yang menyediakan set terbaik untuk klasifikasi. Satu kendala yang jelas di sini adalah bahwa RF menemukan interaksi variabel dengan sendirinya.
JEquihua
6

Komponen utama pertama adalah kombinasi linear dari semua fitur Anda. Fakta bahwa itu menjelaskan hampir semua variabilitas berarti bahwa sebagian besar koefisien variabel dalam komponen utama pertama adalah signifikan.

Sekarang pohon klasifikasi yang Anda hasilkan juga sedikit berbeda. Mereka melakukan pemisahan biner pada variabel kontinu yang memisahkan kategori terbaik yang ingin Anda klasifikasikan. Itu tidak persis sama dengan menemukan kombinasi linear ortogonal dari variabel kontinu yang memberikan arah varian terbesar. Bahkan kita baru-baru ini membahas sebuah makalah tentang CV di mana PCA digunakan untuk analisis kluster dan penulis menemukan bahwa ada situasi di mana pemisahan terbaik ditemukan tidak dalam beberapa komponen utama tetapi pada komponen terakhir.

Michael R. Chernick
sumber
3
"Sebenarnya kita baru saja membahas makalah tentang CV di mana PCA" apakah Anda memiliki tautan ke ini? Saya sangat tertarik :)
user603
Saya akan mencari diskusi.
Michael R. Chernick
Apakah Anda akan berbaik hati melihat pertanyaan terkait ?
nadya