Normalisasi sebelum validasi silang

16

Apakah data normalisasi (memiliki nol rata-rata dan standar deviasi kesatuan) sebelum melakukan validasi silang k-fold berulang-ulang memiliki konsekuensi negatif seperti overfitting?

Catatan: ini untuk situasi di mana #cases> total #features

Saya mengubah beberapa data saya menggunakan transformasi log, kemudian menormalkan semua data seperti di atas. Saya kemudian melakukan pemilihan fitur. Selanjutnya saya menerapkan fitur yang dipilih dan data yang dinormalisasi ke cross-validasi 10 kali lipat untuk mencoba dan memperkirakan kinerja classifier umum dan khawatir bahwa menggunakan semua data untuk menormalkan mungkin tidak tepat. Haruskah saya menormalkan data tes untuk setiap lipatan menggunakan data normalisasi yang diperoleh dari data pelatihan untuk lipatan itu?

Pendapat apa pun diterima dengan penuh syukur! Mohon maaf jika pertanyaan ini tampak jelas.

Sunting: Pada pengujian ini (sesuai dengan saran di bawah) saya menemukan bahwa normalisasi sebelum CV tidak membuat banyak perbedaan kinerja-bijaksana bila dibandingkan dengan normalisasi dalam CV.

BGreene
sumber

Jawaban:

13

Untuk menjawab pertanyaan utama Anda, akan lebih optimal dan lebih tepat untuk mengukur dalam CV. Tapi itu mungkin tidak akan terlalu menjadi masalah dan mungkin tidak penting dalam praktik sama sekali jika classifier Anda mengubah skala data, yang paling banyak dilakukan (setidaknya dalam R).

Namun, memilih fitur sebelum validasi silang adalah TIDAK BESAR dan akan menyebabkan overfitting, karena Anda akan memilihnya berdasarkan kinerja mereka pada seluruh kumpulan data. Log-transformasi boleh dilakukan di luar, karena transformasi tidak bergantung pada data aktual (lebih pada tipe data) dan bukan sesuatu yang tidak akan Anda lakukan jika Anda hanya memiliki 90% data, bukan 100% dan tidak di-tweak sesuai data.

Untuk juga menjawab komentar Anda, jelas apakah itu akan mengakibatkan overfitting akan tergantung pada cara Anda memilih fitur. Jika Anda memilihnya secara kebetulan (mengapa Anda melakukan itu?) Atau karena pertimbangan teoretis apriori (literatur lain) tidak masalah. Tetapi jika itu tergantung pada set data Anda itu akan. Elemen Pembelajaran Statistik memiliki penjelasan yang baik. Anda dapat dengan bebas dan legal mengunduh .pdf di sini http://www-stat.stanford.edu/~tibs/ElemStatLearn/

Poin tentang Anda ada di bagian 7.10.2 di halaman 245 dari cetakan kelima. Judulnya "Cara yang Salah dan Benar untuk melakukan Cross-validation".

Erik
sumber
Terima kasih - tentu saja jika satu-satunya hasil yang dilaporkan adalah untuk perkiraan kinerja yang diperoleh dengan menggunakan model yang dipilih (fitur) di setiap lipatan ini tidak dapat menghasilkan overfitting? Setelah semua, Anda hanya melaporkan kinerja umum dari subset fitur yang diberikan.
BGreene
Saya memperluas jawaban saya untuk menanggapi komentar Anda. Saya pikir penjelasan di tautan lebih baik daripada apa yang bisa saya masak saat ini.
Erik
Terima kasih. Ini menunjukkan bahwa pemilihan fitur berbasis filter standar tidak boleh digunakan dan pemilihan fitur berbasis wrapper atau yang setara digunakan. Apakah ini masih berlaku untuk situasi di mana #Cases> #Features? (Saya memiliki 259 kasus, total 56 fitur). Saya akan menganggap potensi kesalahan kurang di sini?
BGreene
4

Validasi silang paling baik dilihat sebagai metode untuk memperkirakan kinerja prosedur statistik, daripada model statistik. Dengan demikian untuk mendapatkan perkiraan kinerja yang tidak bias, Anda perlu mengulangi setiap elemen dari prosedur itu secara terpisah di setiap lipatan validasi silang, yang akan mencakup normalisasi. Jadi saya akan mengatakan normal di setiap lipatan.

Satu-satunya waktu ini tidak diperlukan adalah jika prosedur statistik benar-benar tidak sensitif terhadap penskalaan dan nilai rata-rata data.

Dikran Marsupial
sumber
Saya pikir ini adalah jawaban yang baik, meskipun tidak keras, tetapi perlu dijelaskan. Saya pikir artinya adalah bahwa jika Anda menormalkan dalam setiap lipatan, dijamin bahwa normalisasi tidak akan mengganggu kinerja. Cara itu ditulis sepertinya tidak ada cara lain untuk menghindari bias, meskipun Dikran menunjukkan di baris terakhir bahwa ada cara lain. Jika Anda melakukan normalisasi di dalam CV, itu tidak pernah meningkatkan bias, dibandingkan melakukannya di luar, yang mungkin. Biasnya mungkin tidak banyak berpengaruh, seperti ditunjukkan dalam jawaban lainnya.
Tom Anderson
1

Saya pikir jika normalisasi hanya melibatkan dua parameter dan Anda memiliki sampel ukuran yang baik yang tidak akan menjadi masalah. Saya akan lebih peduli tentang transformasi dan proses pemilihan variabel. 10 kali lipat validasi silang tampaknya menjadi hal yang populer saat ini. Tidak adakah yang menggunakan bootstrap 632 atau 632+ untuk estimasi tingkat kesalahan pengklasifikasi seperti yang disarankan pertama kali oleh Efron (1983) di JASA dan ditindaklanjuti kemudian dalam sebuah makalah oleh Efron dan Tibshirani dengan 632+?

Michael R. Chernick
sumber
0

Saya pribadi suka metode .632. Yang pada dasarnya meningkatkan dengan penggantian. Jika Anda melakukannya dan menghapus duplikat Anda akan mendapatkan 632 entri dari set input 1000. Jenis rapi.

MannyK
sumber
Estimasi 632 berbeda dari yang Anda katakan. Ini sebenarnya adalah kombinasi linear dari dua penaksir tingkat kesalahan memberikan bobot 0,632 untuk bootstrape0estimator dan 0,368 ke tingkat kesalahan semu (juga disebut estimasi resubstitusi).
Michael R. Chernick