Lakukan normalisasi fitur sebelum atau di dalam validasi model?


52

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:

  1. Hindari bobot model ekstra kecil untuk tujuan stabilitas numerik.
  2. 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:


46

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).


Saya menemukan ini agak membingungkan. OP mengatakan dia IS melakukan normalisasi fitur pada validasi dan menguji set data. Balasan Anda pertama mengatakan bahwa pendekatannya benar. Kemudian Anda mengatakan "seseorang perlu membatasi perhitungan parameter normalisasi ke set pelatihan" yang bukan apa yang dia lakukan. Jadi respons Anda bertentangan dengan mengatakan kepadanya apa yang dia lakukan adalah benar dan kemudian menyarankan sebaliknya. Apa yang kulewatkan di sini?
mahonya

4
Apa yang OP lakukan dijelaskan dalam paragraf terakhirnya dan inilah yang saya katakan. Tentu saja normalisasi diterapkan pada set tes / validasi jika telah diterapkan pada set pelatihan. Poin pentingnya adalah, bahwa parameter normalisasi ini telah dihitung hanya pada data pelatihan dan bukan pada keseluruhan set. Semoga ini membantu.
steffen

Ah, terima kasih banyak. Saya salah mengerti jawaban Anda. Saya pikir Anda menyarankan 'aplikasi' normalisasi ke set pelatihan saja, yang jelas bukan apa yang Anda sarankan.
mahonya

2

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.


1
Alasan mengapa normalisasi data dapat mempercepat penurunan gradien, saya kira, adalah bahwa tanpa normalisasi rss memiliki kontur elips, jadi mengingat tingkat pembelajaran tetap, mungkin perlu lebih banyak iterasi untuk penurunan gradien untuk bertemu. Sedangkan dengan penskalaan, rss memiliki kontur lingkaran (simetris), sehingga penurunan gradien cepat. Apakah saya benar?
alpukat

1

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.


Poin yang sangat bagus! terima kasih telah membawanya masuk. Saya ingat dari studi saya selalu menormalkan matriks input sebelum menghitung PCA.
SkyWalker
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.