Haruskah kita menerapkan normalisasi untuk menguji data juga?

17

Saya sedang mengerjakan proyek tentang masalah identifikasi penulis. Saya telah menerapkan normalisasi tf-idf untuk melatih data dan kemudian melatih svm pada data itu.

Sekarang ketika menggunakan classifier saya harus menormalkan data uji juga. Saya merasa bahwa tujuan dasar dari normalisasi adalah untuk membuat pembelajaran juga memberikan bobot lebih untuk fitur-fitur yang lebih penting saat belajar. Jadi, begitu sudah dilatih, ia sudah tahu fitur mana yang penting, mana yang tidak. Jadi apakah ada kebutuhan untuk menerapkan normalisasi untuk menguji data juga?

Saya baru di bidang ini. Jadi tolong abaikan jika pertanyaannya tampak konyol?

Kishan Kumar
sumber
4
Data tes Anda harus dalam skala yang sama dengan data pelatihan Anda.
Jon

Jawaban:

36

Ya, Anda perlu menerapkan normalisasi untuk menguji data, jika algoritme Anda berfungsi atau membutuhkan data pelatihan yang dinormalisasi *.

Itu karena model Anda bekerja pada representasi yang diberikan oleh vektor inputnya. Skala angka-angka itu adalah bagian dari representasi. Ini agak seperti mengkonversi antara kaki dan meter. . . suatu model atau formula akan bekerja hanya dengan satu jenis unit secara normal.

Anda tidak hanya membutuhkan normalisasi, tetapi Anda harus menerapkan penskalaan yang sama persis seperti untuk data pelatihan Anda. Itu berarti menyimpan skala dan offset yang digunakan dengan data pelatihan Anda, dan menggunakannya lagi. Kesalahan pemula yang umum adalah menormalkan data kereta dan tes Anda secara terpisah.

Dalam Python dan SKLearn, Anda dapat menormalkan nilai input / X Anda menggunakan Standard Scaler seperti ini:

scaler = StandardScaler()
train_X = scaler.fit_transform( train_X )
test_X = scaler.transform( test_X )

Perhatikan bagaimana konversi train_Xmenggunakan fungsi yang sesuai (mencari tahu params) kemudian menjadi normal. Sementara test_Xkonversi hanya bertransformasi, menggunakan param yang sama yang dipelajari dari data kereta.

Normalisasi tf-idf yang Anda terapkan harus bekerja dengan cara yang sama, karena mempelajari beberapa parameter dari kumpulan data secara keseluruhan (frekuensi kata dalam semua dokumen), serta menggunakan rasio yang ditemukan di setiap dokumen.


* Beberapa algoritma (seperti yang didasarkan pada pohon keputusan) tidak memerlukan input yang dinormalisasi, dan dapat mengatasi fitur yang memiliki skala inheren yang berbeda.

Neil Slater
sumber
+1 untuk menjelaskan bahwa parameter normalisasi untuk tes harus sama dengan yang ditentukan dari pelatihan. Ini pemahaman saya bahwa logika ini meluas ke set validasi juga.
Greenstick
@ Greenstick: Ya tentu saja, itu meluas ke perawatan semua data yang dimasukkan ke dalam model. Termasuk data baru jika model akan digunakan untuk inferensi dalam produksi. Saya pikir jawabannya cukup lama tanpa mencakup semua itu, dan titik Anda memisahkan data validasi sangat bervariasi (banyak model memiliki ini dibangun untuk langkah pelatihan), jadi tidak dapat menampilkan contoh kode.
Neil Slater
2
Haruskah Anda menskalakan (fit_transformasi) data uji DENGAN data pelatihan? Atau lakukan secara terpisah menggunakan skala yang sama (scaler.transform)?
Bob Ebert
2
@ BobEbert: Anda bisa melakukannya. Secara teknis Anda mungkin membocorkan sejumlah kecil informasi dari tes ke kereta, jika Anda memang cocok scaler ke set data gabungan - sehingga versi "resmi" bisa sesuai scaler untuk melatih data saja, dan menerapkannya ke semua lainnya set data sesudahnya. Namun, kebocoran ini sangat kecil dan saya belum pernah melihatnya menyebabkan masalah dalam praktiknya jika Anda memasukkan scaler ke semua data yang Anda miliki.
Neil Slater
Terima kasih telah mengonfirmasi asumsi saya bahwa saya perlu menggunakan penskalaan set-turunan pelatihan untuk data pengujian. Tetapi bisakah Anda memberikan tautan dengan penjelasan di balik ini? EDIT: nevermind, penjelasannya ada di sini: datasetcience.stackexchange.com/questions/58597/…
crazysantaclaus
6

Tentunya Anda harus menormalkan data Anda. Anda menormalkan data untuk tujuan berikut:

  • Untuk memiliki fitur yang berbeda dalam skala yang sama, yaitu untuk mempercepat proses pembelajaran.

  • Untuk merawat berbagai fitur cukup tanpa peduli skala.

Setelah pelatihan, algoritma pembelajaran Anda telah belajar untuk menangani data dalam bentuk skala, jadi Anda harus menormalkan data pengujian Anda dengan parameter normalisasi yang digunakan untuk data pelatihan.

Media
sumber