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 dari span Fitur A
. Jadi:
- Di awal pelatihan, model akan berasumsi bahwa Fitur
A
adalah sepuluh kali lebih "penting" daripada FiturB
. - 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 bernamanet_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.](https://developers.google.cn/static/machine-learning/crash-course/images/z-scaling_classic.png?authuser=5&hl=id)
Penskalaan skor Z juga merupakan pilihan yang baik untuk data seperti yang ditunjukkan dalam 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](https://developers.google.cn/static/machine-learning/crash-course/images/z-scaling-non-classic-normal-distribution.png?authuser=5&hl=id)
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 bernamaheight
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 nilaiY
yang sangat tinggi. - Seiring meningkatnya nilai
X
, nilaiY
menurun dengan cepat. Akibatnya, nilai tinggiX
memiliki nilaiY
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 nilaiY
.) - Sebagian besar film memiliki sangat sedikit rating pengguna. (Nilai tinggi
X
memiliki nilai rendah nilaiY
.)
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.
- 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](https://developers.google.cn/static/machine-learning/crash-course/images/PreClipping.png?authuser=5&hl=id)
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](https://developers.google.cn/static/machine-learning/crash-course/images/Clipping.png?authuser=5&hl=id)
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 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 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
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
?
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.