Data numerik: Normalisasi

Setelah memeriksa data melalui teknik statistik dan visualisasi, Anda harus mengubah data dengan cara yang akan membantu model Anda berlatih lebih efektif. Tujuan normalisasi adalah mengubah fitur agar berada pada skala yang sama. Misalnya, pertimbangkan dua fitur berikut:

  • Fitur X mencakup rentang 154 hingga 24.917.482.
  • Fitur Y mencakup rentang 5 hingga 22.

Kedua fitur ini mencakup rentang yang sangat berbeda. Normalisasi dapat memanipulasi X dan Y sehingga mencakup rentang yang serupa, mungkin 0 hingga 1.

Normalisasi memberikan manfaat berikut:

  • Membantu model menyatu lebih cepat selama pelatihan. Jika rentang fitur berbeda, penurunan gradien dapat "memantul" dan memperlambat konvergensi. Namun, pengoptimal yang lebih canggih seperti Adagrad dan Adam melindungi dari masalah ini dengan mengubah laju pembelajaran efektif dari waktu ke waktu.
  • Membantu model menyimpulkan prediksi yang lebih baik. Jika rentang fitur berbeda-beda, model yang dihasilkan mungkin membuat prediksi yang kurang berguna.
  • Membantu menghindari "perangkap NaN" saat nilai fitur sangat tinggi. NaN adalah singkatan dari not a number (bukan angka). Jika nilai dalam model melebihi batas presisi floating point, sistem akan menetapkan nilai ke NaN, bukan angka. Saat satu angka dalam model menjadi NaN, angka lain dalam model juga akan menjadi NaN.
  • Membantu model mempelajari bobot yang sesuai untuk setiap fitur. Tanpa penskalaan fitur, model akan terlalu memperhatikan fitur dengan rentang yang luas dan tidak cukup memperhatikan fitur dengan rentang yang sempit.

Sebaiknya lakukan normalisasi fitur numerik yang mencakup rentang yang sangat berbeda (misalnya, usia dan pendapatan). Sebaiknya juga lakukan normalisasi pada satu fitur numerik yang mencakup rentang luas, seperti city population.

Pertimbangkan dua fitur berikut:

  • Nilai terendah fitur A adalah -0,5 dan nilai tertinggi adalah +0,5.
  • Nilai terendah fitur B adalah -5,0 dan nilai tertinggi adalah +5,0.

Rentang Fitur A dan Fitur B relatif sempit. Namun, rentang Fitur B 10 kali lebih lebar daripada rentang Fitur A. Jadi:

  • Di awal pelatihan, model mengasumsikan bahwa Fitur B sepuluh kali lebih "penting" daripada Fitur A.
  • Pelatihan akan memakan waktu lebih lama dari yang seharusnya.
  • Model yang dihasilkan mungkin kurang optimal.

Kerusakan keseluruhan karena tidak menormalisasi akan relatif kecil; namun, kami tetap merekomendasikan untuk menormalisasi Fitur A dan Fitur B ke skala yang sama, mungkin -1,0 hingga +1,0.

Sekarang pertimbangkan dua fitur dengan perbedaan rentang yang lebih besar:

  • Nilai terendah fitur C adalah -1 dan nilai tertinggi adalah +1.
  • Nilai terendah fitur D adalah +5.000 dan nilai tertinggi adalah +1.000.000.000.

Jika Anda tidak menormalisasi Fitur C dan Fitur D, model Anda kemungkinan akan menjadi tidak optimal. Selain itu, pelatihan akan memerlukan waktu yang lebih lama untuk berkonvergensi atau bahkan gagal berkonvergensi sama sekali.

Bagian ini membahas tiga metode normalisasi populer:

  • penskalaan linear
  • Penskalaan skor Z
  • penskalaan log

Bagian ini juga membahas kliping. Meskipun bukan teknik normalisasi yang sebenarnya, pembatasan dapat mengendalikan fitur numerik yang tidak teratur ke dalam rentang yang menghasilkan model yang lebih baik.

Skala linier

Penskalaan linear (lebih umum disingkat menjadi penskalaan) berarti mengonversi nilai floating point dari rentang alaminya ke dalam rentang standar—biasanya 0 hingga 1 atau -1 hingga +1.

Penskalaan linear adalah pilihan yang baik jika semua kondisi berikut terpenuhi:

  • Batas bawah dan atas data Anda tidak banyak berubah dari waktu ke waktu.
  • Fitur berisi sedikit atau tidak ada pencilan, dan pencilan tersebut tidak ekstrem.
  • Fitur ini didistribusikan secara seragam di seluruh rentangnya. Artinya, histogram akan menampilkan batang yang hampir sama untuk sebagian besar nilai.

Misalkan age manusia adalah sebuah fitur. Penskalaan linear adalah teknik normalisasi yang baik untuk age karena:

  • Batas bawah dan atas perkiraan adalah 0 hingga 100.
  • age berisi persentase pencilan yang relatif kecil. Hanya sekitar 0,3% populasi yang berusia di atas 100 tahun.
  • Meskipun usia tertentu lebih terwakili daripada usia lainnya, set data yang besar harus berisi contoh yang cukup dari semua usia.

Latihan: Periksa pemahaman Anda

Misalkan model Anda memiliki fitur bernama net_worth yang menyimpan kekayaan bersih orang yang berbeda. Apakah penskalaan linear akan menjadi teknik normalisasi yang baik untuk net_worth? Mengapa atau mengapa tidak?

Penskalaan skor Z

Skor Z adalah jumlah simpangan baku suatu nilai dari rata-rata. Misalnya, nilai yang memiliki 2 standar deviasi lebih besar daripada rata-rata memiliki skor Z +2,0. Nilai yang 1,5 standar deviasi lebih kecil daripada rata-rata memiliki skor Z -1,5.

Merepresentasikan fitur dengan penskalaan skor Z berarti menyimpan skor Z fitur tersebut dalam vektor fitur. Misalnya, gambar berikut menunjukkan dua histogram:

  • Di sebelah kiri, distribusi normal klasik.
  • Di sebelah kanan, distribusi yang sama dinormalisasi dengan penskalaan skor Z.
Gambar 4. Dua histogram: keduanya menunjukkan distribusi normal dengan
           distribusi yang identik. Histogram pertama, yang berisi data mentah, memiliki rata-rata 200 dan standar deviasi 30. Histogram
           kedua, yang berisi versi skor Z dari distribusi pertama, memiliki rata-rata 0 dan simpangan baku 1.
Gambar 4. Data mentah (kiri) versus skor Z (kanan) untuk distribusi normal.

Penskalaan skor Z juga merupakan pilihan yang baik untuk data seperti yang ditunjukkan pada gambar berikut, yang hanya memiliki distribusi normal yang tidak jelas.

Gambar 5. Dua histogram dengan bentuk identik, masing-masing menunjukkan
            kenaikan tajam ke dataran tinggi, lalu penurunan yang relatif cepat, diikuti
            dengan penurunan bertahap. Satu histogram menggambarkan
            distribusi data mentah; histogram lainnya menggambarkan
            distribusi data mentah saat dinormalisasi dengan penskalaan skor Z.
            Nilai pada sumbu X dari kedua histogram sangat berbeda.
            Histogram data mentah mencakup domain 0 hingga 29.000,sementara
            histogram yang diskalakan Z-score berkisar dari -1 hingga sekitar +4, 8
Gambar 5. Data mentah (kiri) versus penskalaan skor Z (kanan) untuk distribusi normal non-klasik.

Skor Z adalah pilihan yang baik jika data mengikuti distribusi normal atau distribusi yang agak mirip dengan distribusi normal.

Perhatikan bahwa beberapa distribusi mungkin normal dalam sebagian besar rentangnya, tetapi masih berisi pencilan ekstrem. Misalnya, hampir semua titik dalam fitur net_worth mungkin cocok dengan 3 simpangan baku, tetapi beberapa contoh fitur ini bisa beratus-ratus simpangan baku dari rata-rata. Dalam situasi ini, Anda dapat menggabungkan penskalaan skor Z dengan bentuk normalisasi lain (biasanya pemangkasan) untuk menangani situasi ini.

Latihan: Periksa pemahaman Anda

Misalkan model Anda dilatih pada fitur bernama height yang menyimpan tinggi badan orang dewasa dari sepuluh juta perempuan. Apakah penskalaan skor Z merupakan teknik normalisasi yang baik untuk height? Mengapa atau mengapa tidak?

Penskalaan log

Penskalaan log menghitung logaritma nilai mentah. Secara teori, logaritma dapat berupa basis apa pun; dalam praktiknya, penskalaan log biasanya menghitung logaritma natural (ln).

Penskalaan log berguna saat data sesuai dengan distribusi hukum pangkat. Secara umum, distribusi hukum pangkat terlihat sebagai berikut:

  • Nilai X yang rendah memiliki nilai Y yang sangat tinggi.
  • Seiring meningkatnya nilai X, nilai Y akan menurun dengan cepat. Akibatnya, nilai X yang tinggi memiliki nilai Y yang sangat rendah.

Rating film adalah contoh yang baik dari distribusi hukum pangkat. Pada gambar berikut, perhatikan:

  • Beberapa film memiliki banyak rating pengguna. (Nilai X yang rendah memiliki nilai Y yang tinggi.)
  • Sebagian besar film memiliki rating pengguna yang sangat sedikit. (Nilai X yang tinggi memiliki nilai Y yang rendah.)

Penskalaan log mengubah distribusi, yang membantu melatih model yang akan membuat prediksi yang lebih baik.

Gambar 6. Dua grafik yang membandingkan data mentah versus log data mentah.
            Grafik data mentah menunjukkan banyak rating pengguna di bagian atas, diikuti dengan ekor panjang. Grafik log memiliki distribusi yang lebih merata.
Gambar 6. Membandingkan distribusi mentah dengan log-nya.

Sebagai contoh kedua, penjualan buku sesuai dengan distribusi hukum pangkat karena:

  • Sebagian besar buku yang diterbitkan hanya terjual dalam jumlah kecil, mungkin seratus atau dua ratus eksemplar.
  • Beberapa buku menjual sejumlah salinan sedang, dalam ribuan.
  • Hanya beberapa buku terlaris yang akan terjual lebih dari satu juta eksemplar.

Misalnya, Anda melatih model linear untuk menemukan hubungan antara, misalnya, sampul buku dengan penjualan buku. Model linear yang dilatih pada nilai mentah harus menemukan sesuatu tentang sampul buku pada buku yang terjual satu juta eksemplar yang 10.000 kali lebih efektif daripada sampul buku yang hanya terjual 100 eksemplar. Namun, penskalaan log semua angka penjualan membuat tugas ini jauh lebih memungkinkan. Misalnya, log 100 adalah:

  ~4.6 = ln(100)

sedangkan log 1.000.000 adalah:

  ~13.8 = ln(1,000,000)

Jadi, log 1.000.000 hanya sekitar tiga kali lebih besar daripada log 100. Anda mungkin dapat membayangkan sampul buku terlaris sekitar tiga kali lebih efektif (dalam beberapa hal) daripada sampul buku yang tidak laku.

Kliping

Penyesuaian nilai adalah teknik untuk meminimalkan pengaruh pencilan ekstrem. Singkatnya, clipping biasanya membatasi (mengurangi) nilai pencilan ke nilai maksimum tertentu. Kliping adalah ide yang aneh, tetapi bisa sangat efektif.

Misalnya, bayangkan set data yang berisi fitur bernama roomsPerPerson, yang merepresentasikan jumlah kamar (total kamar dibagi dengan jumlah penghuni) untuk berbagai rumah. Plot berikut menunjukkan bahwa lebih dari 99% nilai fitur sesuai dengan distribusi normal (kira-kira, rata-rata 1,8 dan simpangan baku 0,7). Namun, fitur ini berisi beberapa pencilan, beberapa di antaranya ekstrem:

Gambar 7. Plot roomsPerPerson yang hampir semua nilainya dikelompokkan antara 0 dan 4, tetapi ada ekor yang sangat panjang yang mencapai 17 kamar per orang
Gambar 7. Sebagian besar normal, tetapi tidak sepenuhnya normal.

Bagaimana cara meminimalkan pengaruh pencilan ekstrem tersebut? Nah, histogramnya bukan distribusi merata, distribusi normal, atau distribusi hukum pangkat. Bagaimana jika Anda hanya membatasi atau memangkas nilai maksimum roomsPerPerson pada nilai arbitrer, misalnya 4,0?

Plot roomsPerPerson yang semua nilainya berada di antara 0 dan 4,0. Plot berbentuk lonceng, tetapi ada bukit anomali di 4.0
Gambar 8. Memangkas nilai fitur pada 4.0.

Memangkas nilai fitur pada 4,0 tidak berarti model Anda mengabaikan semua nilai yang lebih besar dari 4,0. Sebaliknya, semua nilai yang lebih besar dari 4,0 kini menjadi 4,0. Hal ini menjelaskan bukit aneh di 4.0. Meskipun ada bukit tersebut, set fitur yang diskalakan kini lebih berguna daripada data asli.

Tunggu sebentar! Dapatkah Anda benar-benar mengurangi setiap nilai pencilan ke batas atas arbitrer? Ya, saat melatih model.

Anda juga dapat memangkas nilai setelah menerapkan bentuk normalisasi lainnya. Misalnya, anggap Anda menggunakan penskalaan skor Z, tetapi beberapa pencilan memiliki nilai absolut yang jauh lebih besar dari 3. Dalam hal ini, Anda dapat:

  • Klip skor Z yang lebih besar dari 3 menjadi tepat 3.
  • Skor Z klip kurang dari -3 menjadi tepat -3.

Kliping mencegah model Anda melakukan pengindeksan berlebih pada data yang tidak penting. Namun, beberapa pencilan sebenarnya penting, jadi klip nilai dengan hati-hati.

Ringkasan teknik normalisasi

Teknik normalisasiFormulaKapan digunakan
Skala linier $$ x' = \frac{x - x_{min}}{x_{max} - x_{min}} $$ Saat fitur didistribusikan sebagian besar secara seragam di seluruh rentang. Berbentuk datar
Penskalaan skor Z $$ x' = \frac{x - μ}{σ}$$ Jika fitur terdistribusi secara normal (puncak mendekati mean). Berbentuk lonceng
Penskalaan log $$ x' = log(x)$$ Jika distribusi fitur sangat miring di setidaknya salah satu sisi ekor. Berbentuk Ekor Berat
Kliping Jika $x > max$, tetapkan $x' = max$
Jika $x < min$, tetapkan $x' = min$
Jika fitur berisi pencilan ekstrem.

Latihan: Uji pengetahuan Anda

Teknik mana yang paling cocok untuk menormalisasi fitur dengan distribusi berikut?

Histogram yang menampilkan cluster data dengan nilai dalam rentang 0 hingga
          200.000. Jumlah titik data meningkat secara bertahap untuk rentang
          dari 0 hingga 100.000, lalu menurun secara bertahap dari 100.000 hingga
          200.000.

Penskalaan skor Z
Titik data umumnya sesuai dengan distribusi normal, sehingga penskalaan skor Z akan memaksanya masuk ke rentang –3 hingga +3.
Skala linier
Tinjau diskusi tentang teknik normalisasi di halaman ini, lalu coba lagi.
Penskalaan log
Tinjau diskusi tentang teknik normalisasi di halaman ini, lalu coba lagi.
Kliping
Tinjau diskusi tentang teknik normalisasi di halaman ini, lalu coba lagi.

Misalnya, Anda sedang mengembangkan model yang memprediksi produktivitas pusat data berdasarkan suhu yang diukur di dalam pusat data. Hampir semua nilai temperature dalam set data Anda berada antara 15 dan 30 (Celsius), dengan pengecualian berikut:

  • Satu atau dua kali per tahun, pada hari yang sangat panas, beberapa nilai antara 31 dan 45 tercatat di temperature.
  • Setiap titik ke-1.000 di temperature disetel ke 1.000 bukan suhu sebenarnya.

Teknik normalisasi mana yang wajar untuk temperature?

Klip nilai pencilan antara 31 dan 45, tetapi hapus pencilan dengan nilai 1.000

Nilai 1.000 adalah kesalahan,dan harus dihapus, bukan dipangkas.

Nilai antara 31 dan 45 adalah titik data yang sah. Mungkin sebaiknya lakukan pemangkasan untuk nilai-nilai ini, dengan asumsi set data tidak berisi cukup banyak contoh dalam rentang suhu ini untuk melatih model membuat prediksi yang baik. Namun, selama inferensi, perhatikan bahwa model yang diklip akan membuat prediksi yang sama untuk suhu 45 seperti untuk suhu 35.

Klip semua pencilan
Tinjau diskusi tentang teknik normalisasi di halaman ini, lalu coba lagi.
Hapus semua pencilan
Tinjau diskusi tentang teknik normalisasi di halaman ini, lalu coba lagi.
Hapus nilai pencilan antara 31 dan 45, tetapi potong pencilan dengan nilai 1.000.
Tinjau diskusi tentang teknik normalisasi di halaman ini, lalu coba lagi.