Data numerik: Normalisasi

Setelah memeriksa data Anda melalui teknik statistik dan visualisasi, Anda harus mengubah data dengan cara yang akan membantu model Anda melatih lebih banyak secara efektif. Sasaran dari normalisasi adalah mengubah fitur memiliki skala yang sama. Misalnya, perhatikan dua contoh berikut fitur:

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

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

Normalisasi memberikan manfaat berikut:

  • Membantu model dikonvergensi lebih cepat selama pelatihan. Ketika fitur yang berbeda memiliki rentang yang berbeda, penurunan gradien dapat "pantulan" dan konvergensi lambat. Meskipun demikian, pengoptimal yang lebih canggih seperti Adagrad dan Adam melindungi jaringan dari masalah ini dengan mengubah kecepatan pembelajaran efektif dari waktu ke waktu.
  • Membantu model menyimpulkan prediksi yang lebih baik. Ketika fitur yang berbeda memiliki rentang yang berbeda, hasil model mungkin membuat prediksi yang agak kurang berguna.
  • Membantu menghindari "jebakan NaN" jika nilai fitur sangat tinggi. NaN adalah singkatan dari bukan angka. Ketika nilai dalam model melebihi batas presisi floating point, sistem akan menetapkan nilai ke NaN sebagai gantinya dari suatu angka. Ketika satu angka dalam model menjadi NaN, angka lain dalam modelnya juga pada akhirnya menjadi NaN.
  • Membantu model mempelajari bobot yang sesuai untuk setiap fitur. Tanpa penskalaan fitur, model akan terlalu memperhatikan ke fitur dengan rentang yang luas dan kurang perhatian terhadap fitur dengan rentang sempit.

Sebaiknya normalisasi fitur numerik yang mencakup rentang yang berbeda (misalnya, usia dan pendapatan). Kami juga menyarankan untuk melakukan normalisasi satu fitur numerik yang mencakup berbagai misalnya city population.

Pertimbangkan dua fitur berikut:

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

Fitur A dan Fitur B memiliki span yang relatif sempit. Namun, Tampilkan B span 10 kali lebih lebar daripada span Fitur A. Jadi:

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

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

Sekarang pertimbangkan dua fitur dengan disparitas rentang yang lebih besar:

  • Nilai terendah fitur `C adalah -1 dan tertinggi adalah +1.
  • Nilai terendah fitur D adalah +5000 dan tertinggi adalah +1.000.000.000.

Jika Anda tidak menormalisasi Fitur C dan Fitur D, model Anda mungkin akan menjadi kurang optimal. Selain itu, pelatihan akan memakan waktu lebih lama untuk dikonvergensi atau bahkan gagal dikonvergensi sepenuhnya.

Bagian ini membahas tiga metode normalisasi yang populer:

  • penskalaan linear
  • Penskalaan skor Z
  • penskalaan log

Bagian ini juga membahas pemotongan. Meskipun tidak sepenuhnya teknik normalisasi, {i>clipping<i} bisa menjinakkan fitur numerik yang sulit diatur yang dapat menghasilkan model yang lebih baik.

Skala linier

Penskalaan linear (lebih umum dipersingkat menjadi penskalaan saja) berarti mengonversi nilai floating point dari rentang alaminya ke dalam kisaran 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 ini berisi sedikit atau tidak ada {i>outlier<i}, dan {i>outlier <i}itu tidak ekstrem.
  • Fitur ini kira-kira didistribusikan secara seragam di seluruh rentangnya. Artinya, histogram akan menunjukkan kurang lebih bahkan batang untuk sebagian besar usia.

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

  • Perkiraan batas bawah dan atas adalah 0 hingga 100.
  • age berisi persentase pencilan yang relatif kecil. Hanya sekitar 0,3% dari populasinya ada lebih dari 100 orang.
  • Meskipun usia tertentu agak lebih baik terwakili daripada yang lain, harus berisi contoh yang memadai untuk semua usia.

Menguji pemahaman Anda

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

Penskalaan skor Z

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

Merepresentasikan fitur dengan penskalaan skor Z berarti menyimpan ID fitur Skor Z 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 deviasi standar 30. Yang kedua
           histogram, yang berisi versi skor Z dari
           distribusi, memiliki rata-rata 0 dan deviasi standar 1.
Gambar 4. Data mentah (kiri) versus skor Z (kanan) untuk distribusi.

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

Gambar 5. Dua histogram bentuk identik, masing-masing menunjukkan penurunan
            naik ke dataran tinggi dan kemudian
keturunan yang relatif cepat diikuti oleh
            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 
rentang domain 0 hingga 29.000, sementara
            rentang histogram yang diskalakan dari -1 hingga sekitar +4,8
Gambar 5. Data mentah (kiri) versus penskalaan skor Z (kanan) untuk distribusi normal yang tidak klasik.

Skor Z adalah pilihan yang baik ketika data mengikuti distribusi normal atau distribusi yang agak seperti distribusi normal.

Perhatikan bahwa beberapa distribusi mungkin normal pada sebagian besar distribusi yang lebih luas, tetapi masih mengandung pencilan yang ekstrem. Misalnya, hampir semua poin dalam fitur net_worth mungkin cocok dengan 3 deviasi standar, tetapi beberapa contoh fitur ini bisa berupa ratusan deviasi standar menjauh dari nilai {i>mean<i}. Dalam situasi ini, Anda dapat menggabungkan penskalaan skor Z dengan bentuk normalisasi lain (biasanya {i>clipping<i}) untuk menangani situasi ini.

Latihan: Memeriksa pemahaman Anda

Misalkan model Anda berlatih pada fitur bernama height yang menampung dengan ketinggian sepuluh juta wanita. Apakah penskalaan skor Z akan menjadi normalisasi yang baik teknik untuk height? Mengapa atau mengapa tidak?

Penskalaan log

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

Penskalaan log berguna jika data sesuai dengan distribusi hukum daya. Secara kasual, distribusi hukum kekuasaan terlihat sebagai berikut:

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

Peringkat film adalah contoh yang baik dari distribusi hukum kekuasaan. Dalam gambar, perhatikan:

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

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

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

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

  • Sebagian besar buku yang sudah diterbitkan hanya menjual sedikit eksemplar, sekitar satu atau dua ratus.
  • Sebagian buku terjual dalam jumlah sedang, dalam jumlah ribuan.
  • Hanya beberapa produk terlaris yang dapat terjual lebih dari satu juta salinan.

Misalkan Anda melatih model linear untuk menemukan hubungan misalnya, sampul buku untuk penjualan buku. Pelatihan model linear pada nilai mentah akan harus mencari sesuatu tentang sampul buku pada buku yang terjual satu juta salinan 10.000 lebih ampuh daripada sampul buku yang hanya menjual 100 eksemplar. Namun, penskalaan log untuk semua angka penjualan membuat tugas tersebut jauh lebih mudah dilakukan. Misalnya, log dari 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 dari log 100. Anda mungkin bisa membayangkan sampul buku terlaris sekitar tiga kali lipat lebih kuat (dalam beberapa hal) daripada sampul buku kecil.

Klip

Pembuatan klip adalah teknik untuk meminimalkan pengaruh pencilan yang ekstrem. Singkatnya, {i>clipping<i} biasanya menggunakan huruf besar (mengurangi) nilai pencilan ke nilai maksimum tertentu. Kliping adalah ide yang aneh, tapi bisa sangat efektif.

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

Gambar 7. Plot roomPerPerson yang berisi hampir semua nilai
            dikelompokkan antara 0 dan 4, tetapi ada ekor panjang yang sangat panjang
            hingga mencapai 17 ruangan per orang
Gambar 7. Sebagian besar normal, tetapi tidak sepenuhnya normal.

Bagaimana Anda dapat meminimalkan pengaruh pencilan yang ekstrem tersebut? Masalah histogram bukanlah distribusi merata, distribusi normal, atau hukum kekuatan distribusi. Bagaimana jika Anda hanya membatasi atau memotong nilai maksimum roomsPerPerson dengan nilai arbitrer, misalnya 4,0?

Plot roomPerPerson yang mana semua nilai berada antara 0 dan
            4.0. Plot tersebut berbentuk seperti lonceng, tetapi ada bukit yang tidak wajar pada 4,0
Gambar 8. Memangkas nilai fitur pada 4.0.

Memangkas nilai fitur hingga 4,0 tidak berarti model Anda mengabaikan semua nilai yang lebih besar dari 4,0. Sebaliknya, itu berarti bahwa semua nilai yang lebih besar dari 4.0 sekarang menjadi 4.0. Ini menjelaskan bukit aneh pada skala 4,0. Meskipun bukit itu, set fitur yang telah diskalakan sekarang lebih berguna dibandingkan data aslinya.

Tunggu sebentar. Dapatkah Anda benar-benar mengurangi setiap nilai pencilan ke beberapa nilai atas arbitrer ambang batas? Saat melatih model, ya.

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

  • Clip Z-skor lebih besar dari 3 untuk menjadi tepat 3.
  • Klip Z-skor kurang dari -3 untuk menjadi tepat -3.

Klip mencegah model Anda mengindeks data yang tidak penting secara berlebihan. Namun, beberapa {i>outlier <i}sebenarnya penting, jadi pangkas nilai dengan hati-hati.

Ringkasan teknik normalisasi

Teknik normalisasiFormulaKapan digunakan
Skala linier $$ x' = \frac{x - x_{min}}{x_{max} - x_{min}} $$ Ketika fitur didistribusikan secara seragam rentang tetap.
Penskalaan skor Z $$ x' = \frac{x - μ}{σ}$$ Jika distribusi fitur tidak berisi pencilan yang ekstrem.
Penskalaan log $$ x' = log(x)$$ Saat fitur mematuhi hukum daya.
Klip Jika $x > max$, setel $x' = maks$
Jika $x < min$, setel $x' = min$
Jika fitur berisi pencilan yang ekstrem.

Latihan: Uji pengetahuan Anda

Teknik mana yang paling sesuai untuk menormalisasi fitur dengan dari distribusi berikut?

Histogram yang menampilkan kumpulan data dengan nilai dalam rentang 0 hingga
          200.000. Jumlah titik data meningkat secara bertahap untuk rentang tersebut
          dari 0 menjadi 100.000 dan kemudian
secara bertahap menurun dari 100.000 menjadi
          200.000.

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

Misalkan Anda sedang mengembangkan model yang memprediksi produktivitas 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:

  • Sekali atau dua kali per tahun, pada hari-hari yang sangat panas, beberapa nilai antara 31 dan 45 direkam di temperature.
  • Setiap poin ke-1.000 di temperature ditetapkan ke 1.000 dan bukan suhu yang sebenarnya.

Yang akan menjadi teknik normalisasi yang masuk akal untuk temperature?

Klip nilai {i>outlier<i} antara 31 dan 45, tetapi hapus {i>outlier<i} dengan nilai 1.000

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

Nilai antara 31 dan 45 adalah titik data yang sah. {i>Clipping<i} mungkin menjadi ide yang baik untuk nilai-nilai ini, dengan asumsi tidak berisi cukup contoh dalam rentang suhu ini untuk melatih model untuk membuat prediksi yang baik. Namun, selama inferensi, perhatikan bahwa model yang terpotong akan membuat prediksi yang sama untuk suhu 45 untuk suhu 35.

Buat klip semua pencilan (outliers)
Tinjau diskusi teknik normalisasi di halaman ini, lalu coba lagi.
Hapus semua pencilan (outliers)
Tinjau diskusi teknik normalisasi di halaman ini, lalu coba lagi.
Hapus nilai {i>outlier<i} di antara 31 dan 45, tetapi potong {i>outlier<i} dengan nilai 1.000.
Tinjau diskusi teknik normalisasi di halaman ini, lalu coba lagi.