Data numerik: Normalisasi

Setelah memeriksa data melalui teknik statistik dan visualisasi, Anda harus mengubah data dengan cara yang akan membantu model Anda dilatih dengan lebih 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 memiliki 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 "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 pada akhirnya menjadi NaN.
  • Membantu model mempelajari bobot yang sesuai untuk setiap fitur. Tanpa penskalaan fitur, model terlalu memperhatikan fitur dengan rentang yang luas dan tidak cukup memperhatikan fitur dengan rentang yang 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 nilai tertingginya adalah +0,5.
  • Nilai terendah fitur B adalah -5,0 dan nilai tertingginya adalah +5,0.

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

  • Pada awal pelatihan, model mengasumsikan bahwa Fitur B sepuluh kali lebih "penting" daripada Fitur A.
  • 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 perbedaan rentang yang lebih besar:

  • Nilai terendah fitur C adalah -1 dan nilai tertingginya adalah +1.
  • Nilai terendah fitur D adalah +5.000 dan nilai tertingginya 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 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 disingkat menjadi penskalaan) berarti mengonversi nilai floating point dari rentang alaminya menjadi rentang standar—biasanya 0 hingga 1 atau -1 hingga +1.

Gunakan formula berikut untuk menskalakan ke rentang standar 0 hingga 1, inklusif:

x=(xxmin)/(xmaxxmin)

dalam hal ini:

  • x adalah nilai yang diskalakan.
  • x adalah nilai aslinya.
  • xmin adalah nilai terendah dalam set data fitur ini.
  • xmax adalah nilai tertinggi dalam set data fitur ini.

Misalnya, pertimbangkan fitur bernama quantity yang rentang alaminya berkisar antara 100 hingga 900. Misalkan nilai alami quantity dalam contoh tertentu adalah 300. Oleh karena itu, Anda dapat menghitung nilai normal 300 sebagai berikut:

  • x = 300
  • xmin = 100
  • xmax = 900
x' = (300 - 100) / (900 - 100)
x' = 200 / 800
x' = 0.25

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 outlier, dan outlier tersebut tidak ekstrem.
  • Fitur ini kira-kira didistribusikan secara merata 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

Misalnya, 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?

Jawaban: Penskalaan linear akan menjadi pilihan yang buruk untuk menormalisasi net_worth. Fitur ini berisi banyak pencilan, dan nilainya tidak didistribusikan secara merata di seluruh rentang utamanya. Sebagian besar orang akan terperangkap dalam rentang yang sangat sempit dari keseluruhan rentang.


Penskalaan skor Z

Skor Z adalah jumlah simpangan baku nilai dari rata-rata. Misalnya, nilai yang 2 standar deviasi lebih besar dari rata-rata memiliki skor Z +2,0. Nilai yang 1,5 standar deviasi lebih kecil dari 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 nilai rata-rata 200 dan deviasi standar 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 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 mencakup domain 0 hingga 29.000,sedangkan
            histogram yang diskalakan skor Z berkisar dari -1 hingga sekitar +4, 8
Gambar 5. Data mentah (kiri) versus penskalaan skor Z (kanan) untuk distribusi normal non-klasik.

Gunakan formula berikut untuk menormalisasi nilai, x, ke skor Z-nya:

x=(xμ)/σ

dalam hal ini:

  • x adalah skor Z.
  • x adalah nilai mentah; yaitu, x adalah nilai yang Anda normalisasi.
  • μ adalah nilai rata-rata.
  • σ adalah simpangan baku.

Misalnya, anggaplah:

  • mean = 100
  • simpangan baku = 20
  • nilai asli = 130

Jadi:

  Z-score = (130 - 100) / 20
  Z-score = 30 / 20
  Z-score = +1.5

Dalam distribusi normal klasik:

  • Setidaknya 68,27% data memiliki skor Z antara -1,0 dan +1,0.
  • Setidaknya 95,45% data memiliki skor Z antara -2,0 dan +2,0.
  • Setidaknya 99,73% data memiliki skor Z antara -3,0 dan +3,0.
  • Setidaknya 99,994% data memiliki skor Z antara -4,0 dan +4,0.
Jadi, titik data dengan skor Z kurang dari -4,0 atau lebih dari +4,0 jarang terjadi, tetapi apakah titik data tersebut benar-benar merupakan outlier? Karena penyimpangan adalah konsep tanpa definisi yang ketat, tidak ada yang dapat memastikannya. Perhatikan bahwa set data dengan jumlah contoh yang cukup besar akan hampir pasti berisi setidaknya beberapa contoh "langka" ini. Misalnya, fitur dengan satu miliar contoh yang sesuai dengan distribusi normal klasik dapat memiliki sebanyak 60.000 contoh dengan skor di luar rentang -4,0 hingga +4,0.

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 rentang, tetapi masih berisi outlier ekstrem. Misalnya, hampir semua titik dalam fitur net_worth mungkin cocok dengan 3 deviasi standar, tetapi beberapa contoh fitur ini mungkin ratusan deviasi standar dari mean. Dalam situasi ini, Anda dapat menggabungkan penskalaan skor Z dengan bentuk normalisasi lain (biasanya pemangkasan) untuk menangani situasi ini.

Latihan: Periksa pemahaman Anda

Misalnya, model Anda dilatih pada fitur bernama height yang menyimpan tinggi dewasa sepuluh juta wanita. Apakah penskalaan skor Z akan menjadi teknik normalisasi yang baik untuk height? Mengapa atau mengapa tidak?

Jawaban: Penskalaan skor Z akan menjadi teknik normalisasi yang baik untuk height karena fitur ini sesuai dengan distribusi normal. Sepuluh juta contoh menyiratkan banyak outlier—mungkin cukup outlier bagi model untuk mempelajari pola pada skor Z yang sangat tinggi atau sangat rendah.


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).

Gunakan formula berikut untuk menormalisasi nilai, x, ke log-nya:

x=ln(x)

dalam hal ini:

  • x adalah logaritma natural dari x.
  • nilai asli = 54,598

Oleh karena itu, log nilai asli adalah sekitar 4,0:

  4.0 = ln(54.598)

Penskalaan log berguna jika data sesuai dengan distribusi hukum pangkat. Secara umum, distribusi hukum pangkat terlihat seperti 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 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 pangkat karena:

  • Sebagian besar buku yang dipublikasikan hanya terjual dalam jumlah kecil, mungkin seratus atau dua ratus eksemplar.
  • Beberapa buku terjual dalam jumlah sedang, ribuan eksemplar.
  • 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. 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 dapat membayangkan sampul buku terlaris yang memiliki daya tarik tiga kali lipat (dalam beberapa hal) dibandingkan sampul buku yang penjualannya sedikit.

Pemangkasan

Penyesuaian nilai adalah teknik untuk meminimalkan pengaruh pencilan ekstrem. Singkatnya, pemangkasan biasanya membatasi (mengurangi) nilai pencilan ke nilai maksimum tertentu. Pemangkasan adalah ide yang aneh, tetapi dapat 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 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 long tail yang sangat panjang
            yang mencapai hingga 17 kamar per orang
Gambar 7. Sebagian besar normal, tetapi tidak sepenuhnya normal.

Bagaimana cara meminimalkan pengaruh pencilan 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 berbentuk lonceng, tetapi ada bukit anomali pada 4,0
Gambar 8. Memotong nilai fitur pada 4.0.

Memotong nilai fitur pada 4,0 tidak berarti model Anda mengabaikan semua nilai yang lebih besar dari 4,0. Sebaliknya, ini berarti semua nilai yang lebih besar dari 4.0 sekarang menjadi 4.0. Hal ini menjelaskan bukit aneh di 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 outlier ke beberapa nilai minimum arbitrer? Saat melatih model, ya.

Anda juga dapat memangkas nilai setelah menerapkan bentuk normalisasi lainnya. 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.
  • Memotong skor Z kurang dari -3 menjadi persis -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=xxminxmaxxmin
Jika fitur didistribusikan secara merata di seluruh rentang tetap.
Penskalaan skor Z
x=xμσ
Jika distribusi fitur tidak berisi outlier ekstrem.
Penskalaan log
x=log(x)
Jika fitur sesuai dengan hukum kekuatan.
Pemangkasan 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 sesuai 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 menjadi
          200.000.

Penskalaan skor Z
Skala linier
Pemangkasan
Penskalaan log

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:

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

Manakah teknik normalisasi yang wajar untuk temperature?

Pangkas nilai outlier antara 31 dan 45, tetapi hapus outlier dengan nilai 1.000
Hapus nilai outlier antara 31 dan 45, tetapi potong outlier dengan nilai 1.000.
Menghapus semua pencilan
Memotong semua pencilan