Saya memiliki dataset yang memiliki beberapa set label biner. Untuk setiap set label, saya melatih classifier, mengevaluasinya dengan validasi silang. Saya ingin mengurangi dimensi menggunakan analisis komponen utama (PCA). Pertanyaanku adalah:
Apakah mungkin untuk melakukan PCA satu kali untuk seluruh dataset dan kemudian menggunakan dataset baru dengan dimensi yang lebih rendah untuk validasi silang seperti dijelaskan di atas? Atau apakah saya perlu melakukan PCA terpisah untuk setiap set pelatihan (yang berarti melakukan PCA terpisah untuk setiap classifier dan untuk setiap lipatan validasi silang)?
Di satu sisi, PCA tidak menggunakan label apa pun. Di sisi lain, itu memang menggunakan data uji untuk melakukan transformasi, jadi saya khawatir itu bisa membiaskan hasilnya.
Saya harus menyebutkan bahwa selain menyelamatkan saya beberapa pekerjaan, melakukan PCA sekali pada seluruh dataset akan memungkinkan saya untuk memvisualisasikan dataset untuk semua set label sekaligus. Jika saya memiliki PCA yang berbeda untuk setiap set label, saya perlu memvisualisasikan setiap set label secara terpisah.
caret
paket: PCA dan k-fold Cross Validation in Caret .Jawaban:
Untuk mengukur kesalahan generalisasi, Anda perlu melakukan yang terakhir: PCA terpisah untuk setiap set pelatihan (yang berarti melakukan PCA terpisah untuk setiap classifier dan untuk setiap flip CV).
Anda kemudian menerapkan transformasi yang sama ke set tes: yaitu Anda tidak melakukan PCA terpisah pada set tes! Anda mengurangi rata-rata (dan jika perlu dibagi dengan standar deviasi) dari set pelatihan, seperti yang dijelaskan di sini: Nol memusatkan set pengujian setelah PCA pada set pelatihan . Kemudian Anda memproyeksikan data ke PC set pelatihan.
Anda harus menentukan kriteria otomatis untuk jumlah PC yang akan digunakan.
Karena ini hanyalah langkah pengurangan data pertama sebelum klasifikasi "aktual", menggunakan beberapa PC terlalu banyak kemungkinan tidak akan mengganggu kinerja. Jika Anda memiliki harapan berapa banyak PC yang baik dari pengalaman, Anda mungkin bisa menggunakannya.
Anda juga dapat menguji setelah itu apakah mengulang PCA untuk setiap model pengganti diperlukan (mengulang analisis hanya dengan satu model PCA). Saya pikir hasil tes ini layak dilaporkan.
Saya pernah mengukur bias tidak mengulangi PCA, dan menemukan bahwa dengan data klasifikasi spektroskopi saya, saya mendeteksi hanya setengah dari tingkat kesalahan generalisasi ketika tidak mengulangi PCA untuk setiap model pengganti.
Yang sedang berkata, Anda dapat membangun model PCA tambahan dari seluruh data yang ditetapkan untuk tujuan deskriptif (misalnya visualisasi). Pastikan Anda memisahkan kedua pendekatan dari satu sama lain.
Tetapi tidak melihat data. Dan jika varians antar kelas besar dibandingkan dengan varians dalam kelas, varians antar kelas akan mempengaruhi proyeksi PCA. Biasanya langkah PCA dilakukan karena Anda perlu menstabilkan klasifikasi. Yaitu, dalam situasi di mana kasus - kasus tambahan mempengaruhi model.
Jika varians antar-kelas kecil, bias ini tidak akan banyak, tetapi dalam kasus itu PCA tidak akan membantu untuk klasifikasi: proyeksi PCA kemudian tidak dapat membantu menekankan pemisahan antara kelas-kelas.
sumber
Jawaban untuk pertanyaan ini tergantung pada desain eksperimental Anda. PCA dapat dilakukan pada seluruh kumpulan data selama Anda tidak perlu membuat model terlebih dahulu untuk mengetahui data yang ingin Anda prediksi. Jika Anda memiliki dataset di mana Anda memiliki banyak sampel, beberapa di antaranya diketahui dan beberapa tidak diketahui dan Anda ingin memprediksi yang tidak diketahui, termasuk yang tidak diketahui dalam PCA akan memberi Anda pandangan yang lebih kaya tentang keragaman data dan dapat membantu meningkatkan kinerja. dari model. Karena PCA tidak diawasi, itu tidak "memuncak" karena Anda dapat melakukan hal yang sama untuk sampel yang tidak diketahui seperti yang Anda bisa untuk yang diketahui.
Jika, di sisi lain, Anda memiliki kumpulan data di mana Anda harus membangun model sekarang dan di beberapa titik di masa depan Anda akan mendapatkan sampel baru yang harus diprediksi menggunakan model prebuilt itu, Anda harus melakukan PCA terpisah di setiap lipatan untuk memastikan itu akan digeneralisasi. Karena dalam hal ini kita tidak akan tahu seperti apa fitur-fitur baru itu dan kita tidak dapat membangun kembali model untuk memperhitungkan fitur-fitur baru, melakukan PCA pada data pengujian akan "memuncak". Dalam hal ini, baik fitur dan hasil untuk sampel yang tidak diketahui tidak tersedia ketika model akan digunakan dalam praktik, sehingga mereka tidak harus tersedia saat melatih model.
sumber
Lakukan yang terakhir, PCA pada set pelatihan setiap kali
Di PCA, kita belajar mengurangi matriks: U yang membantu kita mendapatkan proyeksi
Z_train = U x X_train
Pada waktu ujian, kami menggunakan U yang sama yang dipelajari dari fase pelatihan dan kemudian menghitung proyeksi
Z_test = U x X_test
Jadi, pada dasarnya kami memproyeksikan set uji ke ruang fitur berkurang yang diperoleh selama pelatihan.
Asumsi yang mendasari, adalah bahwa set tes dan kereta api harus berasal dari distribusi yang sama, yang menjelaskan metode di atas.
sumber