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 FiturB
. - 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 bernamanet_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.
Penskalaan skor z juga merupakan pilihan yang baik untuk data seperti yang ditunjukkan dalam gambar berikut, yang hanya memiliki distribusi normal yang samar.
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 bernamaheight
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 nilaiY
yang sangat tinggi. - Seiring meningkatnya nilai
X
, nilaiY
menurun dengan cepat. Akibatnya, nilai tinggiX
memiliki nilaiY
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 nilaiY
yang tinggi.) - Sebagian besar film memiliki sangat sedikit rating pengguna. (Nilai
X
yang tinggi memiliki nilaiY
yang rendah.)
Penskalaan log mengubah distribusi, yang membantu melatih model yang akan membuat prediksi yang lebih baik.
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:
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?
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 normalisasi | Formula | Kapan 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
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
?
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.