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 normalisasi adalah mengubah fitur agar berada pada skala yang serupa. Misalnya, pertimbangkan dua fitur berikut:

  • 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 mencakup rentang yang serupa, mungkin 0 hingga 1.

Normalisasi memberikan manfaat berikut:

  • Membantu model berkonvergensi lebih cepat selama pelatihan. Jika fitur yang berbeda memiliki rentang yang berbeda, gradien menurun dapat "memantul" dan memperlambat konvergensi. Meskipun demikian, pengoptimal yang lebih canggih seperti Adagrad dan Adam melindungi dari masalah ini dengan mengubah kecepatan belajar yang efektif dari waktu ke waktu.
  • Membantu model menyimpulkan prediksi yang lebih baik. Jika fitur yang berbeda memiliki rentang yang berbeda, model yang dihasilkan mungkin membuat prediksi yang kurang berguna.
  • Membantu menghindari "jebakan NaN" jika 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. 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 sangat berbeda (misalnya, usia dan pendapatan). Sebaiknya normalisasi satu fitur numerik yang mencakup rentang yang luas, seperti 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 nilai tertingginya adalah +5,0.

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

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

Kerusakan keseluruhan karena tidak melakukan normalisasi akan relatif kecil; tetapi, 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 disparitas rentang yang lebih besar:

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

Jika Anda tidak melakukan normalisasi pada Fitur C dan Fitur D, model Anda kemungkinan akan tidak optimal. Selain itu, pelatihan akan memerlukan waktu yang jauh lebih lama untuk berkonvergensi atau bahkan gagal berkonvergensi sepenuhnya.

Bagian ini membahas tiga metode normalisasi yang populer:

  • penskalaan linear
  • Penskalaan skor Z
  • penskalaan log

Bagian ini juga membahas pemangkasan. Meskipun bukan teknik normalisasi yang sebenarnya, pemotongan memang menjinakkan fitur numerik yang tidak teratur ke dalam rentang yang 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 menampilkan batang yang kira-kira sama untuk sebagian besar nilai.

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

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

Latihan: Periksa pemahaman Anda

Misalkan model Anda memiliki fitur bernama net_worth yang menyimpan jaringan dari 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 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 nilai 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 ditunjukkan dalam gambar berikut, yang hanya memiliki distribusi normal yang samar.

Gambar 5. Dua histogram dengan bentuk yang sama, masing-masing menunjukkan kenaikan
            yang curam ke dataran tinggi, lalu penurunan yang relatif cepat, diikuti dengan
            penurunan bertahap. Satu histogram mengilustrasikan
            distribusi data mentah; histogram lainnya mengilustrasikan
            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 non-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 rentang data, 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 pemangkasan) 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 teknik normalisasi yang baik 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.

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

  • Beberapa film memiliki banyak peringkat pengguna. (Nilai X yang rendah memiliki nilai Y yang tinggi.)
  • Sebagian besar film memiliki sangat sedikit rating pengguna. (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 awal, diikuti dengan long tail. 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.
  • Beberapa buku terjual dalam jumlah sedang, ribuan eksemplar.
  • Hanya beberapa produk terlaris yang dapat terjual lebih dari satu juta salinan.

Misalnya, Anda melatih model linear untuk menemukan hubungan antara, misalnya, sampul buku dengan penjualan buku. Pelatihan model linear pada nilai mentah harus menemukan sesuatu tentang sampul buku pada buku yang terjual sejuta eksemplar yang 10.000 kali lebih efektif daripada sampul buku yang hanya terjual 100 eksemplar. Namun, dengan melakukan penskalaan log pada semua angka penjualan, tugas ini menjadi jauh lebih mudah. Misalnya, log 100 adalah:

  ~4.6 = ln(100)

sedangkan log dari 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

Penyesuaian nilai adalah teknik untuk meminimalkan pengaruh pencilan ekstrem. Singkatnya, pemangkasan biasanya membatasi (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 kamar dibagi dengan 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? Histogram bukanlah distribusi merata, distribusi normal, atau distribusi hukum pangkat. Bagaimana jika Anda hanya menetapkan batas atau memotong nilai maksimum roomsPerPerson pada nilai arbitrer, misalnya 4,0?

Plot roomsPerPerson dengan semua nilai 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 ada tantangan tersebut, kumpulan fitur yang diskalakan kini lebih berguna daripada data asli.

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 absolut yang jauh lebih besar dari 3. Dalam hal ini, Anda dapat:

  • Memotong skor Z yang lebih besar dari 3 menjadi persis 3.
  • Klip Z-skor kurang dari -3 untuk menjadi tepat -3.

Pemangkasan mencegah model Anda melakukan over-pengindeksan pada data yang tidak penting. Namun, beberapa outlier 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 outlier ekstrem.
Penskalaan log $$ x' = log(x)$$ Saat fitur mematuhi hukum daya.
Pemangkasan Jika $x > max$, tetapkan $x' = max$
Jika $x < min$, tetapkan $x' = min$
Jika fitur berisi pencilan yang ekstrem.

Latihan: Uji pengetahuan Anda

Teknik mana yang paling cocok 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 penskalaan skor Z akan memaksanya ke dalam 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.
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:

  • Satu atau dua kali per tahun, pada hari yang sangat panas, beberapa nilai antara 31 dan 45 dicatat 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 dipangkas.

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 tentang teknik normalisasi di halaman ini, lalu coba lagi.
Menghapus semua pencilan
Tinjau diskusi teknik normalisasi di halaman ini, lalu coba lagi.
Hapus nilai outlier antara 31 dan 45, tetapi potong outlier dengan nilai 1.000.
Tinjau diskusi tentang teknik normalisasi di halaman ini, lalu coba lagi.