Praktek umum yang baik dalam Pembelajaran Mesin adalah melakukan normalisasi fitur atau standardisasi data dari variabel prediktor, hanya itu, pusatkan data dengan mengurangkan rata-rata dan menormalkannya dengan varian (atau standar deviasi juga). Untuk pengendalian diri dan pemahaman saya, kami melakukan ini untuk mencapai dua hal utama:
- Hindari bobot model ekstra kecil untuk tujuan stabilitas numerik.
- Pastikan konvergensi cepat dari algoritma optimasi seperti misalnya Konjugasi Gradien sehingga besarnya satu dimensi prediktor wrt yang lain tidak mengarah pada konvergensi yang lambat.
Kami biasanya membagi data menjadi set pelatihan, validasi dan pengujian. Dalam literatur kita biasanya melihat bahwa untuk melakukan normalisasi fitur mereka mengambil mean dan varians (atau standar deviasi) di seluruh rangkaian variabel prediktor. Kelemahan besar yang saya lihat di sini adalah bahwa jika Anda melakukannya, Anda sebenarnya memasukkan informasi masa depan ke dalam variabel prediktor pelatihan yaitu informasi masa depan yang terkandung dalam mean dan varians.
Oleh karena itu, saya melakukan normalisasi fitur pada data pelatihan dan menyimpan mean dan varians. Kemudian saya menerapkan normalisasi fitur ke variabel prediktor dari validasi dan data uji set menggunakan rata-rata pelatihan dan varians. Apakah ada kelemahan mendasar dengan ini? adakah yang bisa merekomendasikan alternatif yang lebih baik?
Jawaban:
Pendekatan Anda sepenuhnya benar. Meskipun transformasi data sering dinilai rendah sebagai "preprocessing", orang tidak dapat cukup menekankan bahwa transformasi untuk mengoptimalkan kinerja model dapat dan harus diperlakukan sebagai bagian dari proses pembangunan model.
Penalaran: Suatu model harus diterapkan pada data yang tidak terlihat yang secara umum tidak tersedia pada saat model dibangun. Proses validasi (termasuk pemisahan data) mensimulasikan ini. Jadi untuk mendapatkan estimasi kualitas model (dan kekuatan generalisasi) yang baik, seseorang perlu membatasi perhitungan parameter normalisasi (rata-rata dan varians) ke perangkat pelatihan.
Saya hanya bisa menebak mengapa ini tidak selalu dilakukan dalam literatur. Satu argumen bisa jadi, bahwa perhitungan rata-rata dan varians tidak begitu sensitif terhadap variasi data kecil (tetapi bahkan ini hanya benar jika ukuran sampel dasar cukup besar dan data tersebut kira-kira terdistribusi normal tanpa pencilan ekstrim).
sumber
Normalisasi fitur adalah membuat fitur yang berbeda dalam skala yang sama. Penskalaan mempercepat penurunan gradien dengan menghindari banyak iterasi tambahan yang diperlukan ketika satu atau lebih fitur mengambil nilai yang jauh lebih besar daripada yang lain (Tanpa penskalaan, fungsi biaya yang divisualisasikan akan menunjukkan asimetri yang hebat).
Saya pikir masuk akal jika menggunakan mean dan var dari set pelatihan saat data uji datang. Namun jika ukuran data sangat besar, baik set pelatihan dan validasi dapat kira-kira dipandang sebagai distribusi normal, sehingga mereka berbagi rata-rata dan var.
sumber
Metodologi yang telah Anda gambarkan adalah sehat seperti yang dikatakan orang lain. Anda harus melakukan transformasi yang sama persis pada fitur set tes Anda seperti yang Anda lakukan pada fitur dari set pelatihan Anda.
Saya pikir perlu menambahkan bahwa alasan lain untuk normalisasi fitur adalah untuk meningkatkan kinerja proses tertentu yang peka terhadap perbedaan pada skala variabel tertentu. Sebagai contoh, analisis komponen utama (PCA) bertujuan untuk menangkap proporsi varian terbesar, dan sebagai hasilnya akan memberikan bobot lebih pada variabel yang menunjukkan varian terbesar jika normalisasi fitur tidak dilakukan pada awalnya.
sumber