Cara Menormalkan Data: Panduan Lengkap dengan Contoh
Hentikan vanishing gradient dan model yang bias. Pelajari cara menormalkan data menggunakan min-max dan z-score di Scikit-learn untuk meningkatkan model machine learning.
Jaringan saraf yang enggan konvergen, dengan loss yang tetap datar dan gradien yang menghilang atau meledak, sering kali ternyata tidak memiliki masalah pada arsitekturnya sama sekali. Masalahnya sering jauh lebih sederhana: fitur input berada pada skala yang sangat berbeda, di mana satu kolom berkisar dari 0 hingga 1 sementara kolom lain mencapai puluhan ribu.
Dalam pengalaman saya, pola ini kerap muncul dalam praktik. Lima menit prapemrosesan dapat menyelesaikan apa yang tidak bisa ditangani oleh berhari-hari penyesuaian hiperparameter.
Dalam tutorial ini, saya akan menunjukkan cara menormalkan data. Saya akan membahas berbagai teknik normalisasi, kapan masing-masing digunakan, beserta implementasi Python. Selain itu, Anda akan mempelajari kesalahan umum dan miskonsepsi serta cara menghindarinya.
Normalisasi data mengacu pada proses mentransformasikan fitur numerik agar berada dalam rentang yang sebanding atau mengikuti skala yang konsisten.
Istilah ini memiliki makna berbeda tergantung konteksnya: dalam machine learning, biasanya berarti penskalaan ulang nilai fitur untuk mencegah besaran menentukan pentingnya, sedangkan dalam perancangan basis data, merujuk pada pengorganisasian tabel untuk menghilangkan redundansi.
Saya akan berfokus terutama pada makna dalam machine learning, meskipun kita akan membahas sekilas normalisasi basis data nanti untuk memperjelas tumpang tindih kosakata.
Mengapa normalisasi data penting
Ketika fitur berada pada skala yang berbeda, algoritma tertentu memberi bobot berlebihan pada nilai yang kebetulan lebih besar secara numerik.
Fitur yang mengukur pendapatan dalam ribuan akan mendominasi fitur yang mengukur usia dalam dekade, bukan karena pendapatan lebih penting untuk tugas prediksi, melainkan semata-mata karena angkanya lebih besar. Normalisasi menempatkan fitur pada posisi setara sehingga model dapat mempelajari mana yang benar-benar penting.
Di luar pelatihan model, normalisasi juga membantu untuk:
menggabungkan pengukuran yang menggunakan satuan berbeda
mengintegrasikan data dari beberapa sumber dengan konvensi yang tidak konsisten
merancang skema basis data yang perlu menjaga konsistensi dari waktu ke waktu.
Normalisasi data vs. scaling vs. standardisasi
Jadi, apa perbedaan antara normalisasi, scaling, dan standardisasi? Ketiga istilah ini sering muncul dalam dokumentasi, sering digunakan saling bergantian meski memiliki makna yang berbeda.
Perbedaan praktisnya bergantung pada apakah model Anda membutuhkan nilai dalam batas tertentu. Normalisasi min-max menjamin batas, sementara standardisasi tidak. Tabel berikut merangkum perbedaannya:
Istilah
Apa yang Dilakukan
Rentang Keluaran
Terbaik Untuk
Scaling
Istilah umum untuk transformasi rentang apa pun
Bervariasi
Kategori payung
Normalisasi (min-max)
Memampatkan ke batas tetap
Biasanya 0 hingga 1
Data berbatas, jaringan saraf yang mengharapkan rentang input tertentu
Standardisasi (z-score)
Memusatkan pada mean 0, menskalakan ke deviasi standar 1
Tak berbatas (nilai negatif dimungkinkan)
Data tak berbatas, algoritma yang mengasumsikan distribusi kira-kira normal
Sekarang setelah kita menetapkan istilahnya, mari lihat beberapa use case klasik. Normalisasi memiliki tujuan berbeda bergantung pada use case Anda, dari meningkatkan dinamika pelatihan model hingga memungkinkan perbandingan yang bermakna di berbagai sumber data heterogen.
Meningkatkan kinerja model machine learning
Jaringan saraf dan regresi logistik memperbarui bobot melalui gradient descent, di mana kontribusi tiap fitur terhadap kesalahan prediksi menentukan seberapa besar bobot yang disesuaikan.
Ketika besaran fitur berbeda secara drastis, gradien yang dihasilkan juga demikian: fitur besar menghasilkan gradien besar, fitur kecil menghasilkan gradien kecil. Ketidakseimbangan ini menyebabkan optimizer mengambil langkah besar pada beberapa arah sambil nyaris tidak bergerak pada arah lain, mengakibatkan pelatihan tidak stabil atau gagal konvergen sama sekali.
Algoritma berbasis jarak seperti kNN dan K-means menghadapi masalah terkait. Mereka menghitung kemiripan menggunakan metrik jarak, biasanya jarak Euclidean, di mana nilai numerik yang lebih besar berkontribusi lebih banyak pada perhitungan hanya karena lebih besar. Fitur yang membentang 0 hingga 10.000 akan mendominasi fitur yang membentang 0 hingga 1, terlepas dari fitur mana yang sebenarnya penting untuk tugas prediksi.
Scaling memastikan semua fitur berkontribusi secara proporsional terhadap nilai prediktifnya yang sebenarnya, bukan terhadap rentang numeriknya yang sewenang-wenang.
Memungkinkan perbandingan yang adil antarfitur
Saat membangun skor komposit atau menggabungkan pengukuran dengan satuan berbeda, nilai mentah dapat menghasilkan perbandingan yang menyesatkan.
Metrik kesehatan pelanggan yang menggabungkan pengeluaran bulanan dalam dolar, frekuensi login sebagai hitungan, dan usia akun dalam hari akan memberi bobot terbesar pada jumlah dolar hanya karena angkanya kebetulan lebih besar.
Normalisasi memungkinkan Anda menggabungkan pengukuran ini dengan cara yang mencerminkan pentingnya yang sebenarnya, bukan besaran kebetulan.
Ini juga berlaku untuk analisis eksploratori dan visualisasi. Memplot fitur pada skala berbeda membuat pola lebih sulit terlihat atau distribusi lebih sulit dibandingkan. Data yang dinormalisasi menyajikan gambaran yang lebih jelas tentang bagaimana fitur saling berhubungan.
Meningkatkan kualitas dan integritas data
Pipeline produksi sering menarik dari beberapa sumber data dengan konvensi yang tidak konsisten. Pendapatan mungkin dilaporkan dalam dolar dari satu sistem dan dalam ribuan dari sistem lain. Tanggal muncul sebagai Unix timestamp di satu API dan sebagai string terformat di API lain.
Menetapkan skala dan format yang konsisten sebelum pemrosesan hilir mencegah bug halus yang sulit didiagnosis nanti.
Dalam konteks basis data, normalisasi memiliki makna berbeda tetapi terkait: mengorganisasi tabel sehingga setiap potongan informasi berada tepat di satu tempat.
Ini mencegah anomali pembaruan di mana mengubah nilai di satu lokasi meninggalkan nilai kontradiktif di tempat lain. Meskipun tekniknya berbeda dari penskalaan fitur, motivasi yang mendasarinya serupa: menjaga data tetap konsisten dan dapat diprediksi.
Teknik Normalisasi Data yang Umum
Setiap pendekatan normalisasi membuat asumsi berbeda tentang data Anda dan menghasilkan karakteristik keluaran yang berbeda. Pilihan yang tepat bergantung pada distribusi data Anda, keberadaan outlier, dan apa yang diharapkan model hilir Anda.
Normalisasi min-max
Normalisasi min-max memampatkan nilai ke rentang tetap, biasanya 0 hingga 1, dengan mengurangkan nilai minimum dan membagi dengan rentang. Pendekatan ini mempertahankan bentuk distribusi asli sambil menjamin bahwa semua nilai berada dalam batas yang diketahui.
Cara kerjanya: Kurangi minimum, bagi dengan rentang. Itu saja.
Apa yang dilakukan:
Menjamin keluaran tetap dalam batas yang ditentukan
Mempertahankan bentuk distribusi asli—hanya diskalakan ulang
Zero menjadi lantai Anda, one menjadi langit-langit Anda
Terbaik digunakan untuk:
Intensitas piksel (selalu 0-255 secara definisi)
Probabilitas dan persentase
Nilai ujian, rating, apa pun yang memiliki lantai dan langit-langit alami
Jaringan saraf yang mengharapkan input berbatas, seperti pengklasifikasi gambar
Yang perlu diwaspadai:
Outlier dapat merusak normalisasi min-max sepenuhnya. Bayangkan data sebagian besar berada antara 10 dan 100, tetapi satu nilai di 99.999? Titik tunggal itu meregangkan rentang Anda begitu jauh sehingga segala sesuatu yang normal terkompresi menjadi seripih kecil di dekat nol. Satu observasi buruk, seluruh fitur rusak.
Pertimbangkan juga apa yang terjadi saat data baru berada di luar rentang pelatihan. Nilai uji di atas maksimum pelatihan menghasilkan keluaran di atas 1. Apakah itu merusak sesuatu bergantung pada model Anda.
Standardisasi z-score
Standardisasi z-score mentransformasikan data sehingga mean bernilai nol dan deviasi standar bernilai satu, tanpa menerapkan batas tetap pada keluaran. Pendekatan ini bekerja baik untuk data tanpa batas alami yang jelas dan banyak diasumsikan atau direkomendasikan oleh banyak implementasi algoritma.
Cara kerjanya: Kurangi mean, bagi dengan deviasi standar.
Apa yang dilakukan:
Memusatkan semuanya sehingga rata-rata menjadi nol
Menskalakan sehingga satu deviasi standar sama dengan satu unit
Keluaran bisa negatif, bisa melampaui batas tertentu
Terbaik digunakan untuk:
Data tanpa batas alami yang jelas
Distribusi menyerupai lonceng
Algoritma yang mengasumsikan atau merekomendasikan standardisasi (sebagian besar tutorial jaringan saraf, implementasi regresi logistik)
Saat Anda tidak yakin apa yang lain untuk digunakan (pilihan default yang masuk akal)
Pertukaran:
Keterinterpretasian berkurang. "Observasi ini 1,7 deviasi standar di atas rata-rata" memerlukan kerja mental lebih dibandingkan "ini di 80% dari rentang." Jika pemangku kepentingan perlu memahami nilai yang diskalakan secara langsung, min-max mungkin lebih komunikatif.
Outlier masih menggelembungkan mean dan std dev, mendistorsi penskalaan untuk data mayoritas, tetapi kurang bermasalah daripada pada normalisasi min-max.
Robust scaling
Robust scaling mengatasi sensitivitas outlier pada pendekatan min-max dan z-score dengan menggunakan median dan rentang interkuartil (IQR) alih-alih mean dan deviasi standar. Statistik ini tetap stabil terlepas dari nilai ekstrem di ekor distribusi Anda.
Cara kerjanya: Kurangi median, bagi dengan IQR (jarak antara persentil ke-25 dan ke-75).
Apa yang dilakukan:
Menskalakan berdasarkan bagian tengah data Anda, mengabaikan ekstrem
Ekor dapat berperilaku sesuka hati tanpa membelokkan transformasi untuk nilai tipikal
Lebih stabil saat data Anda memiliki outlier yang sah dan tidak dapat dihapus
Terbaik digunakan untuk:
Transaksi keuangan, di mana sebagian besar pembelian kecil, tetapi sesekali ada transaksi bernilai tinggi yang sah
Data pendapatan, yang cenderung memiliki ekor kanan panjang
Bacaan sensor di mana lonjakan merepresentasikan kejadian nyata
Distribusi yang sangat miring dan situasi di mana pendekatan berbasis mean terseret oleh nilai ekstrem
Mengapa membantu untuk data yang miring:
Distribusi pendapatan adalah contoh yang baik. Kebanyakan orang berpenghasilan sedang, dan sebagian berpenghasilan sangat besar: distribusi miring ke kanan klasik. Deviasi standar membengkak oleh berpenghasilan tinggi, yang membuat standardisasi kurang bermanfaat bagi mayoritas observasi. Median dan IQR tetap berlabuh pada bagian tengah distribusi apa pun yang terjadi di ekstrem.
Normalisasi vektor unit-norm
Normalisasi unit-norm (L1/L2) beroperasi berbeda dari teknik di atas: alih-alih menskalakan fitur (kolom), teknik ini umum menskalakan sampel individual (baris). Setiap vektor sampel diskalakan ulang sehingga panjangnya 1 di bawah norm yang dipilih (sering L2), yang menghapus besaran keseluruhan dan hanya menyisakan arah/proporsi.
Jangan keliru ini dengan regularisasi L1/L2 (Lasso/Ridge): regularisasi memodifikasi objektif pelatihan dengan menambahkan penalti pada bobot model untuk mengurangi overfitting, bukan dengan menskalakan ulang vektor input.
Cara kerjanya: Dalam normalisasi L2, setiap baris dibagi dengan norm Euclidean-nya, sehingga jumlah kuadrat nilainya menjadi satu. L1 menggunakan jumlah nilai absolut sebagai gantinya.
Apa yang dilakukan:
Menghapus besaran dari persamaan
Membuat baris dapat dibandingkan berdasarkan proporsi alih-alih ukuran mentah
Sudut antar vektor menjadi sinyal; seberapa panjang vektor menjadi tidak relevan
Terbaik digunakan untuk:
Data teks yang direpresentasikan sebagai vektor jumlah kata: laporan 50.000 kata secara alami memiliki hitungan lebih besar daripada email 500 kata, tetapi L2 memungkinkan Anda membandingkan proporsi konten
Apa pun yang melibatkan cosine similarity
Klasifikasi dokumen, information retrieval, dan sistem rekomendasi berbasis konten
Tidak berguna untuk:
Situasi di mana besaran benar-benar penting. Jika jumlah total kata bermakna untuk tugas Anda, menormalkannya berarti kehilangan informasi.
Normalisasi basis data
Normalisasi basis data merujuk pada restrukturisasi tabel relasional untuk menghilangkan redundansi dan meningkatkan integritas data—misalnya, memastikan email pelanggan disimpan tepat di satu tempat alih-alih diulang pada setiap catatan pesanan.
Ini tidak ada kaitannya dengan penskalaan fitur.
Istilahnya saja yang tumpang tindih. Dalam machine learning, "normalisasi" hampir selalu merujuk pada penskalaan nilai numerik. Dalam rekayasa data atau SQL, ini merujuk pada pengorganisasian struktur tabel (sering dibahas sebagai 1NF, 2NF, atau 3NF).
Pembedaan Utama:
Normalisasi fitur (ML): Mentransformasikan angka (mis., penskalaan 0–1) untuk membantu model belajar.
Normalisasi basis data (SQL): Mengorganisasi skema untuk mencegah duplikasi data.
Jika seorang data engineer meminta Anda "menormalkan basis data," mereka ingin Anda memperbaiki struktur tabel, bukan menjalankan MinMaxScaler.
Mengimplementasikan normalisasi dengan benar memerlukan perhatian pada urutan operasi, khususnya sekitar pembagian train/test. Kodenya sendiri sederhana, tetapi kesalahan halus dalam urutan dapat menginvalkan seluruh evaluasi Anda.
Menormalkan data di Python
Scikit-learn menyediakan scaler, tetapi aturan utamanya bersifat prosedural, bukan matematis: split dulu, fit hanya pada train, lalu gunakan kembali transformer yang sudah di-fit itu di mana pun.
Kenapa repot? Karena scaling mempelajari angka dari data: min/maks, mean/std, median/IQR. Jika angka-angka itu dihitung menggunakan test set, Anda diam-diam membiarkan informasi masa depan bocor ke pelatihan. Tidak ada yang crash, tetapi metrik Anda berhenti bermakna seperti yang Anda kira.
Contoh minimal:
import pandas as pd
from sklearn.preprocessing import MinMaxScaler, StandardScaler, RobustScaler
from sklearn.model_selection import train_test_split
# Example data
data = pd.DataFrame({'age':[25,32,47,51,62,28,35,44],'income':[30000,45000,72000,85000,120000,38000,55000,67000],'score':[0.2,0.5,0.7,0.4,0.9,0.3,0.6,0.8]})# Split happens before any scaling
train_data, test_data = train_test_split(data, test_size=0.25, random_state=42)Didukung oleh
Pada titik ini, Anda memperlakukan split pelatihan sebagai “seperti apa dunia ketika saya membangun model.” Split pengujian adalah “data baru yang belum terlihat.” Scaler Anda perlu mempelajari dunia dari yang pertama saja.
MinMaxScaler
Standardisasi min-max itu lugas: ia menyimpan nilai minimum dan maksimum pelatihan untuk setiap kolom, lalu menerapkan pemetaan yang sama nanti.
scaler = MinMaxScaler()
scaler.fit(train_data)# training only
train_scaled = scaler.transform(train_data)
test_scaled = scaler.transform(test_data)Didukung oleh
Jika Anda mendapati diri memanggil fit() pada test set, berhenti sejenak. Itu menggagalkan tujuan menahan test set sejak awal.
StandardScaler
StandardScaler menyimpan mean dan deviasi standar dari split pelatihan, lalu menggunakan nilai yang sama untuk mentransformasikan train dan test.
Inilah yang diam-diam rusak saat kebocoran terjadi, karena mean/std mudah “distabilkan” dengan tidak sengaja menggunakan lebih banyak data daripada yang seharusnya.
RobustScaler
RobustScaler melakukan rutinitas “fit sekali, pakai selamanya” yang sama, tetapi menggunakan median dan IQR, sehingga beberapa titik ekstrem tidak menentukan skala.
Tanda praktis bahwa robust scaling layak digunakan: Anda memiliki ekor panjang yang memang ingin dipertahankan (pembayaran, klaim, lonjakan sensor), dan Anda tidak ingin satu hari yang aneh menekan sisa fitur menjadi hampir nol.
Perhitungan cepat di pandas
Untuk pekerjaan eksploratori cepat, melakukan perhitungan langsung di pandas tidak masalah, selama Anda jujur tentang apa yang Anda lakukan: ini untuk melihat-lihat distribusi, bukan untuk evaluasi model.
Bahaya di sini: statistik didasarkan pada seluruh dataset. Lakukan ini sebelum split, dan nilai uji memengaruhi transformasi. Evaluasi Anda kehilangan makna karena prapemrosesan sudah mengintip jawaban yang seharusnya tidak dilihat.
Pola kebocoran biasanya terlihat seperti ini:
Cara yang salah:
scaler = MinMaxScaler()
scaled_all = scaler.fit_transform(full_data)# problem
train, test = split(scaled_all)Didukung oleh
Pendekatan ini menormalkan data sebelum split, sehingga data uji sudah memengaruhi transformasi.
Cara yang benar:
Dengan membagi data terlebih dahulu, kita memastikan scaler mempelajari statistik hanya dari train set, menjaga data uji tetap benar-benar belum terlihat.
Operasi sama, urutan berbeda. Dan urutan adalah inti persoalan.
Jika Anda ingin berlatih prapemrosesan end-to-end (termasuk standardisasi dengan benar dan menghindari kebocoran), kursus ini dibuat untuk itu: Preprocessing for Machine Learning in Python.
Normalisasi dalam SQL
Seperti yang disebutkan sebelumnya, kita memiliki makna berbeda dari kata yang sama. Di sini, “normalisasi” bukan transformasi numerik. Ini adalah keputusan struktural untuk berhenti menduplikasi fakta.
Jika tabel orders Anda menyimpan customer_email pada setiap baris, basis data akan membiarkan Anda melakukannya. Basis data juga dengan senang hati menerima kontradiksi kemudian: satu email di satu baris, email berbeda di baris lain, dan tidak ada cara yang jelas untuk mengetahui mana yang “asli.”
Detail pelanggan diulang di setiap baris. Memperbarui email berarti menemukan dan memodifikasi semua pesanan mereka.
Setelah normalisasi:
CREATETABLE customers (
customer_id INTPRIMARYKEY,
name VARCHAR(100),
email VARCHAR(100));CREATETABLE products (
product_id INTPRIMARYKEY,
name VARCHAR(100),
price DECIMAL(10,2));CREATETABLE orders (
order_id INTPRIMARYKEY,
customer_id INTREFERENCES customers(customer_id),
product_id INTREFERENCES products(product_id),
quantity INT);Didukung oleh
Info pelanggan ada satu kali. Query membutuhkan join, tetapi pembaruan dilakukan di satu tempat.
Cara Memilih Teknik Normalisasi yang Tepat
Terakhir, saya ingin memberi Anda kerangka keputusan untuk lain kali Anda bertanya-tanya teknik normalisasi mana yang akan digunakan.
Min-max saat ada batas
Penskalaan min-max bekerja paling baik ketika data Anda memiliki batas yang diketahui dan stabil yang tidak akan berubah antara pelatihan dan penerapan. Nilai piksel selalu berada antara 0 dan 255. Skor probabilitas tidak dapat melebihi 1. Nilai ujian memiliki minimum dan maksimum yang ditentukan.
Pendekatan ini juga cocok saat model Anda secara spesifik mengharapkan input berbatas, seperti beberapa arsitektur jaringan saraf. Namun, hindari penskalaan min-max saat terdapat outlier, karena satu nilai ekstrem dapat mengompres semua observasi normal ke rentang sempit di dekat nol.
Standardisasi sebagai andalan
Standardisasi berfungsi sebagai default yang masuk akal saat Anda tidak memiliki asumsi kuat tentang batas atau distribusi data. Ini bekerja baik untuk fitur dengan rentang bervariasi, batas tidak diketahui, atau distribusi yang kira-kira berbentuk lonceng.
Banyak implementasi algoritma mengasumsikan atau merekomendasikan input yang distandardisasi, termasuk sebagian besar kerangka kerja jaringan saraf dan pustaka regresi logistik. Jika Anda tidak yakin pendekatan mana yang akan digunakan dan data Anda tidak memiliki batas alami yang jelas, standardisasi biasanya merupakan pilihan yang aman.
Robust untuk kekacauan dunia nyata
Robust scaling menjadi pilihan tepat saat data Anda mengandung outlier signifikan yang mewakili nilai sah, bukan kesalahan. Data transaksi keuangan biasanya memiliki karakteristik ini: sebagian besar pembelian kecil, tetapi sesekali ada biaya besar yang nyata dan harus tetap ada dalam dataset.
Distribusi pendapatan, pembacaan sensor dengan lonjakan sesekali, dan data apa pun dengan kemiringan berat atau ekor panjang diuntungkan dari robust scaling. Median dan rentang interkuartil tetap berlabuh pada mayoritas distribusi Anda tanpa memedulikan apa yang terjadi di ekstrem.
Kapan tidak perlu menormalkan
Model berbasis pohon seperti random forest, XGBoost, dan gradient boosted trees melakukan split pada nilai ambang dan tidak pernah menghitung jarak atau gradien lintas fitur. Skala tidak terlihat bagi mereka, sehingga normalisasi menambah kompleksitas tanpa manfaat.
Fitur one-hot sudah biner (0 dan 1), sehingga menskalakannya tidak menghasilkan apa pun yang berguna. Dataset yang hanya berisi kategori berada dalam kategori yang sama.
Terkadang, transformasi spesifik domain bekerja lebih baik daripada normalisasi generik:
Skala log mengompres ekor kanan panjang sambil melebarkan nilai bawah yang menumpuk, yang sering kali bekerja lebih baik untuk data pendapatan atau harga dibandingkan pendekatan standar.
Pembinaan (binning) masuk akal ketika keanggotaan kategori lebih penting daripada nilai numerik yang presisi.
Transformasi power membantu menstabilkan varians dalam situasi tertentu.
Tabel perbandingan ringkas
Berikut gambaran umum teknik dan use case-nya:
Teknik
Gunakan Saat
Hindari Saat
Rentang Keluaran
Min-max
Data memiliki batas yang diketahui; model mengharapkan input berbatas
Ada outlier; batas mungkin bergeser
0 hingga 1 (tetap)
Standardisasi
Batas tidak diketahui; distribusi kira-kira normal; tidak yakin mana yang digunakan
Butuh batas terjamin; outlier berat
Tak berbatas
Robust scaling
Outlier signifikan; distribusi miring; ekor panjang
Data sudah bersih dan simetris
Tak berbatas
Normalisasi L1/L2
Data teks; cosine similarity; ruang berdimensi tinggi
Besaran membawa makna
Vektor unit
Tidak ada
Model berbasis pohon; fitur one-hot; transformasi spesifik domain tersedia
Model berbasis gradien atau jarak
Asli
Kesimpulan
Perbedaan skala menyebabkan masalah nyata bagi model yang peduli pada skala. Metrik jarak memihak fitur berbesaran besar. Gradient descent kesulitan ketika gradien menjangkau beberapa orde besaran. Pelatihan macet atau meledak karena alasan yang tidak terlihat dari kode atau arsitektur.
Normalisasi mengatasinya. Gunakan normalisasi min-max untuk data berbatas, robust scaling saat outlier itu nyata dan tidak dapat dihapus, dan standardisasi sebagai default yang masuk akal. Mekaniknya sederhana: fit di pelatihan, terapkan secara konsisten di mana-mana.
Dalam pengalaman saya, yang memakan waktu adalah tidak menyadari kapan scaling penting, lalu men-debug perilaku model berhari-hari padahal jawabannya adalah prapemrosesan. Atau kesalahan sebaliknya, seperti menerapkan scaling secara refleks pada model yang tidak peduli, menambah kompleksitas tanpa manfaat.
Siap naik tingkat? Machine Learning Engineer track kami yang komprehensif mengajarkan semua yang perlu Anda ketahui tentang alur kerja machine learning.
FAQ Normalisasi Data
Apa perbedaan antara normalisasi dan standardisasi?⌄
Meskipun istilah ini sering digunakan secara bergantian dalam dokumentasi, keduanya merujuk pada teknik yang berbeda. Normalisasi (khususnya penskalaan Min-Max) biasanya melibatkan penskalaan ulang data ke rentang tetap, biasanya 0 - 1. Standardisasi (normalisasi Z-score) mentransformasikan data sehingga memiliki mean 0 dan deviasi standar 1.
Apakah setiap model machine learning memerlukan penskalaan data?⌄
Tidak. Algoritma yang bergantung pada perhitungan jarak (seperti K-Nearest Neighbors) atau gradient descent (seperti Jaringan Saraf) memerlukan scaling agar berfungsi dengan benar. Namun, model berbasis pohon, seperti Random Forest dan XGBoost, memproses fitur secara individual berdasarkan aturan split dan umumnya invarian terhadap penskalaan fitur.
Pada tahap mana dalam pipeline saya harus melakukan fit scaler?⌄
Anda harus melakukan fit scaler hanya pada data pelatihan, khususnya setelah train-test split. Jika Anda melakukan fit scaler pada seluruh dataset sebelum split, informasi dari test set memengaruhi proses pelatihan, menghasilkan metrik evaluasi yang menyesatkan.
Apa konsekuensi melewatkan normalisasi?⌄
Dampaknya bervariasi menurut algoritma. Jaringan Saraf mungkin kesulitan konvergen, menyebabkan pelatihan tidak menentu atau gagal belajar sama sekali. K-Nearest Neighbors (KNN) akan menghasilkan hasil yang bias karena algoritma akan memberi bobot jauh lebih besar pada fitur dengan besaran lebih besar (mis., gaji) dibandingkan fitur dengan besaran lebih kecil (mis., usia).
Apakah ada skenario di mana scaling bisa menjadi bumerang?⌄
Ya. Jika dataset Anda berisi outlier signifikan, normalisasi Min-Max dapat mengompres mayoritas data "normal" ke rentang yang sangat kecil dan secara efektif menekan semua varians yang berguna. Selain itu, penskalaan umumnya tidak diperlukan untuk fitur kategorikal yang telah di-one-hot encoding, karena sudah biner (0 dan 1).
Josep adalah Data Scientist freelance yang berfokus pada proyek-proyek Eropa, dengan keahlian dalam penyimpanan data, pemrosesan, analitik lanjutan, dan penyusunan narasi data yang berdampak.
Sebagai pendidik, ia mengajar Big Data di program Magister di University of Navarra dan berbagi wawasan melalui artikel di platform seperti Medium, KDNuggets, dan DataCamp. Josep juga menulis tentang Data dan Teknologi dalam buletin Databites (databites.tech).
Ia meraih gelar Sarjana di bidang Fisika Teknik dari Polytechnic University of Catalonia dan gelar Magister di bidang Intelligent Interactive Systems dari Pompeu Fabra University.
Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Lintasan karier ini akan mengajarkan Anda segala hal yang perlu Anda ketahui tentang rekayasa pembelajaran mesin (machine learning engineering) dan MLOps.
Jaringan saraf yang enggan konvergen, dengan loss yang tetap datar dan gradien yang menghilang atau meledak, sering kali ternyata tidak memiliki masalah pada arsitekturnya sama sekali. Masalahnya sering jauh lebih sederhana: fitur input berada pada skala yang sangat berbeda, di mana satu kolom berkisar dari 0 hingga 1 sementara kolom lain mencapai puluhan ribu.
Dalam pengalaman saya, pola ini kerap muncul dalam praktik. Lima menit prapemrosesan dapat menyelesaikan apa yang tidak bisa ditangani oleh berhari-hari penyesuaian hiperparameter.
Dalam tutorial ini, saya akan menunjukkan cara menormalkan data. Saya akan membahas berbagai teknik normalisasi, kapan masing-masing digunakan, beserta implementasi Python. Selain itu, Anda akan mempelajari kesalahan umum dan miskonsepsi serta cara menghindarinya.
Jika Anda ingin mempelajari lebih lanjut tentang cara menyiapkan data untuk algoritma machine learning, saya sarankan mengikuti kursus Preprocessing for Machine Learning in Python kami.
Apa Itu Normalisasi Data?
Normalisasi data mengacu pada proses mentransformasikan fitur numerik agar berada dalam rentang yang sebanding atau mengikuti skala yang konsisten.
Istilah ini memiliki makna berbeda tergantung konteksnya: dalam machine learning, biasanya berarti penskalaan ulang nilai fitur untuk mencegah besaran menentukan pentingnya, sedangkan dalam perancangan basis data, merujuk pada pengorganisasian tabel untuk menghilangkan redundansi.
Saya akan berfokus terutama pada makna dalam machine learning, meskipun kita akan membahas sekilas normalisasi basis data nanti untuk memperjelas tumpang tindih kosakata.
Mengapa normalisasi data penting
Ketika fitur berada pada skala yang berbeda, algoritma tertentu memberi bobot berlebihan pada nilai yang kebetulan lebih besar secara numerik.
Fitur yang mengukur pendapatan dalam ribuan akan mendominasi fitur yang mengukur usia dalam dekade, bukan karena pendapatan lebih penting untuk tugas prediksi, melainkan semata-mata karena angkanya lebih besar. Normalisasi menempatkan fitur pada posisi setara sehingga model dapat mempelajari mana yang benar-benar penting.
Di luar pelatihan model, normalisasi juga membantu untuk:
Normalisasi data vs. scaling vs. standardisasi
Jadi, apa perbedaan antara normalisasi, scaling, dan standardisasi? Ketiga istilah ini sering muncul dalam dokumentasi, sering digunakan saling bergantian meski memiliki makna yang berbeda.
Perbedaan praktisnya bergantung pada apakah model Anda membutuhkan nilai dalam batas tertentu. Normalisasi min-max menjamin batas, sementara standardisasi tidak. Tabel berikut merangkum perbedaannya:
Istilah
Apa yang Dilakukan
Rentang Keluaran
Terbaik Untuk
Scaling
Istilah umum untuk transformasi rentang apa pun
Bervariasi
Kategori payung
Normalisasi (min-max)
Memampatkan ke batas tetap
Biasanya 0 hingga 1
Data berbatas, jaringan saraf yang mengharapkan rentang input tertentu
Standardisasi (z-score)
Memusatkan pada mean 0, menskalakan ke deviasi standar 1
Tak berbatas (nilai negatif dimungkinkan)
Data tak berbatas, algoritma yang mengasumsikan distribusi kira-kira normal
Untuk perbandingan lebih mendalam tentang kapan setiap pendekatan berbalik arah, blog kami Normalization vs. Standardization Explained membahas kasus tepinya dengan baik.
Penggunaan Normalisasi Data
Sekarang setelah kita menetapkan istilahnya, mari lihat beberapa use case klasik. Normalisasi memiliki tujuan berbeda bergantung pada use case Anda, dari meningkatkan dinamika pelatihan model hingga memungkinkan perbandingan yang bermakna di berbagai sumber data heterogen.
Meningkatkan kinerja model machine learning
Jaringan saraf dan regresi logistik memperbarui bobot melalui gradient descent, di mana kontribusi tiap fitur terhadap kesalahan prediksi menentukan seberapa besar bobot yang disesuaikan.
Ketika besaran fitur berbeda secara drastis, gradien yang dihasilkan juga demikian: fitur besar menghasilkan gradien besar, fitur kecil menghasilkan gradien kecil. Ketidakseimbangan ini menyebabkan optimizer mengambil langkah besar pada beberapa arah sambil nyaris tidak bergerak pada arah lain, mengakibatkan pelatihan tidak stabil atau gagal konvergen sama sekali.
Algoritma berbasis jarak seperti kNN dan K-means menghadapi masalah terkait. Mereka menghitung kemiripan menggunakan metrik jarak, biasanya jarak Euclidean, di mana nilai numerik yang lebih besar berkontribusi lebih banyak pada perhitungan hanya karena lebih besar. Fitur yang membentang 0 hingga 10.000 akan mendominasi fitur yang membentang 0 hingga 1, terlepas dari fitur mana yang sebenarnya penting untuk tugas prediksi.
Scaling memastikan semua fitur berkontribusi secara proporsional terhadap nilai prediktifnya yang sebenarnya, bukan terhadap rentang numeriknya yang sewenang-wenang.
Memungkinkan perbandingan yang adil antarfitur
Saat membangun skor komposit atau menggabungkan pengukuran dengan satuan berbeda, nilai mentah dapat menghasilkan perbandingan yang menyesatkan.
Metrik kesehatan pelanggan yang menggabungkan pengeluaran bulanan dalam dolar, frekuensi login sebagai hitungan, dan usia akun dalam hari akan memberi bobot terbesar pada jumlah dolar hanya karena angkanya kebetulan lebih besar.
Normalisasi memungkinkan Anda menggabungkan pengukuran ini dengan cara yang mencerminkan pentingnya yang sebenarnya, bukan besaran kebetulan.
Ini juga berlaku untuk analisis eksploratori dan visualisasi. Memplot fitur pada skala berbeda membuat pola lebih sulit terlihat atau distribusi lebih sulit dibandingkan. Data yang dinormalisasi menyajikan gambaran yang lebih jelas tentang bagaimana fitur saling berhubungan.
Meningkatkan kualitas dan integritas data
Pipeline produksi sering menarik dari beberapa sumber data dengan konvensi yang tidak konsisten. Pendapatan mungkin dilaporkan dalam dolar dari satu sistem dan dalam ribuan dari sistem lain. Tanggal muncul sebagai Unix timestamp di satu API dan sebagai string terformat di API lain.
Menetapkan skala dan format yang konsisten sebelum pemrosesan hilir mencegah bug halus yang sulit didiagnosis nanti.
Dalam konteks basis data, normalisasi memiliki makna berbeda tetapi terkait: mengorganisasi tabel sehingga setiap potongan informasi berada tepat di satu tempat.
Ini mencegah anomali pembaruan di mana mengubah nilai di satu lokasi meninggalkan nilai kontradiktif di tempat lain. Meskipun tekniknya berbeda dari penskalaan fitur, motivasi yang mendasarinya serupa: menjaga data tetap konsisten dan dapat diprediksi.
Teknik Normalisasi Data yang Umum
Setiap pendekatan normalisasi membuat asumsi berbeda tentang data Anda dan menghasilkan karakteristik keluaran yang berbeda. Pilihan yang tepat bergantung pada distribusi data Anda, keberadaan outlier, dan apa yang diharapkan model hilir Anda.
Normalisasi min-max
Normalisasi min-max memampatkan nilai ke rentang tetap, biasanya 0 hingga 1, dengan mengurangkan nilai minimum dan membagi dengan rentang. Pendekatan ini mempertahankan bentuk distribusi asli sambil menjamin bahwa semua nilai berada dalam batas yang diketahui.
Cara kerjanya: Kurangi minimum, bagi dengan rentang. Itu saja.
Apa yang dilakukan:
Terbaik digunakan untuk:
Yang perlu diwaspadai:
Outlier dapat merusak normalisasi min-max sepenuhnya. Bayangkan data sebagian besar berada antara 10 dan 100, tetapi satu nilai di 99.999? Titik tunggal itu meregangkan rentang Anda begitu jauh sehingga segala sesuatu yang normal terkompresi menjadi seripih kecil di dekat nol. Satu observasi buruk, seluruh fitur rusak.
Pertimbangkan juga apa yang terjadi saat data baru berada di luar rentang pelatihan. Nilai uji di atas maksimum pelatihan menghasilkan keluaran di atas 1. Apakah itu merusak sesuatu bergantung pada model Anda.
Standardisasi z-score
Standardisasi z-score mentransformasikan data sehingga mean bernilai nol dan deviasi standar bernilai satu, tanpa menerapkan batas tetap pada keluaran. Pendekatan ini bekerja baik untuk data tanpa batas alami yang jelas dan banyak diasumsikan atau direkomendasikan oleh banyak implementasi algoritma.
Cara kerjanya: Kurangi mean, bagi dengan deviasi standar.
Apa yang dilakukan:
Terbaik digunakan untuk:
Pertukaran:
Keterinterpretasian berkurang. "Observasi ini 1,7 deviasi standar di atas rata-rata" memerlukan kerja mental lebih dibandingkan "ini di 80% dari rentang." Jika pemangku kepentingan perlu memahami nilai yang diskalakan secara langsung, min-max mungkin lebih komunikatif.
Outlier masih menggelembungkan mean dan std dev, mendistorsi penskalaan untuk data mayoritas, tetapi kurang bermasalah daripada pada normalisasi min-max.
Robust scaling
Robust scaling mengatasi sensitivitas outlier pada pendekatan min-max dan z-score dengan menggunakan median dan rentang interkuartil (IQR) alih-alih mean dan deviasi standar. Statistik ini tetap stabil terlepas dari nilai ekstrem di ekor distribusi Anda.
Cara kerjanya: Kurangi median, bagi dengan IQR (jarak antara persentil ke-25 dan ke-75).
Apa yang dilakukan:
Terbaik digunakan untuk:
Mengapa membantu untuk data yang miring:
Distribusi pendapatan adalah contoh yang baik. Kebanyakan orang berpenghasilan sedang, dan sebagian berpenghasilan sangat besar: distribusi miring ke kanan klasik. Deviasi standar membengkak oleh berpenghasilan tinggi, yang membuat standardisasi kurang bermanfaat bagi mayoritas observasi. Median dan IQR tetap berlabuh pada bagian tengah distribusi apa pun yang terjadi di ekstrem.
Normalisasi vektor unit-norm
Normalisasi unit-norm (L1/L2) beroperasi berbeda dari teknik di atas: alih-alih menskalakan fitur (kolom), teknik ini umum menskalakan sampel individual (baris). Setiap vektor sampel diskalakan ulang sehingga panjangnya 1 di bawah norm yang dipilih (sering L2), yang menghapus besaran keseluruhan dan hanya menyisakan arah/proporsi.
Jangan keliru ini dengan regularisasi L1/L2 (Lasso/Ridge): regularisasi memodifikasi objektif pelatihan dengan menambahkan penalti pada bobot model untuk mengurangi overfitting, bukan dengan menskalakan ulang vektor input.
Cara kerjanya: Dalam normalisasi L2, setiap baris dibagi dengan norm Euclidean-nya, sehingga jumlah kuadrat nilainya menjadi satu. L1 menggunakan jumlah nilai absolut sebagai gantinya.
Apa yang dilakukan:
Terbaik digunakan untuk:
Tidak berguna untuk:
Situasi di mana besaran benar-benar penting. Jika jumlah total kata bermakna untuk tugas Anda, menormalkannya berarti kehilangan informasi.
Normalisasi basis data
Normalisasi basis data merujuk pada restrukturisasi tabel relasional untuk menghilangkan redundansi dan meningkatkan integritas data—misalnya, memastikan email pelanggan disimpan tepat di satu tempat alih-alih diulang pada setiap catatan pesanan.
Ini tidak ada kaitannya dengan penskalaan fitur.
Istilahnya saja yang tumpang tindih. Dalam machine learning, "normalisasi" hampir selalu merujuk pada penskalaan nilai numerik. Dalam rekayasa data atau SQL, ini merujuk pada pengorganisasian struktur tabel (sering dibahas sebagai 1NF, 2NF, atau 3NF).
Pembedaan Utama:
Jika seorang data engineer meminta Anda "menormalkan basis data," mereka ingin Anda memperbaiki struktur tabel, bukan menjalankan
MinMaxScaler.Untuk pembahasan lebih dalam, lihat panduan ini tentang normalisasi basis data di SQL.
Cara Menormalkan Data dalam Praktik
Mengimplementasikan normalisasi dengan benar memerlukan perhatian pada urutan operasi, khususnya sekitar pembagian train/test. Kodenya sendiri sederhana, tetapi kesalahan halus dalam urutan dapat menginvalkan seluruh evaluasi Anda.
Menormalkan data di Python
Scikit-learn menyediakan scaler, tetapi aturan utamanya bersifat prosedural, bukan matematis: split dulu, fit hanya pada train, lalu gunakan kembali transformer yang sudah di-fit itu di mana pun.
Kenapa repot? Karena scaling mempelajari angka dari data: min/maks, mean/std, median/IQR. Jika angka-angka itu dihitung menggunakan test set, Anda diam-diam membiarkan informasi masa depan bocor ke pelatihan. Tidak ada yang crash, tetapi metrik Anda berhenti bermakna seperti yang Anda kira.
Contoh minimal:
Pada titik ini, Anda memperlakukan split pelatihan sebagai “seperti apa dunia ketika saya membangun model.” Split pengujian adalah “data baru yang belum terlihat.” Scaler Anda perlu mempelajari dunia dari yang pertama saja.
MinMaxScaler
Standardisasi min-max itu lugas: ia menyimpan nilai minimum dan maksimum pelatihan untuk setiap kolom, lalu menerapkan pemetaan yang sama nanti.
Jika Anda mendapati diri memanggil
fit()pada test set, berhenti sejenak. Itu menggagalkan tujuan menahan test set sejak awal.StandardScaler
StandardScalermenyimpan mean dan deviasi standar dari split pelatihan, lalu menggunakan nilai yang sama untuk mentransformasikan train dan test.Inilah yang diam-diam rusak saat kebocoran terjadi, karena mean/std mudah “distabilkan” dengan tidak sengaja menggunakan lebih banyak data daripada yang seharusnya.
RobustScaler
RobustScalermelakukan rutinitas “fit sekali, pakai selamanya” yang sama, tetapi menggunakan median dan IQR, sehingga beberapa titik ekstrem tidak menentukan skala.Tanda praktis bahwa robust scaling layak digunakan: Anda memiliki ekor panjang yang memang ingin dipertahankan (pembayaran, klaim, lonjakan sensor), dan Anda tidak ingin satu hari yang aneh menekan sisa fitur menjadi hampir nol.
Perhitungan cepat di pandas
Untuk pekerjaan eksploratori cepat, melakukan perhitungan langsung di pandas tidak masalah, selama Anda jujur tentang apa yang Anda lakukan: ini untuk melihat-lihat distribusi, bukan untuk evaluasi model.
Mencegah kebocoran data
Bahaya di sini: statistik didasarkan pada seluruh dataset. Lakukan ini sebelum split, dan nilai uji memengaruhi transformasi. Evaluasi Anda kehilangan makna karena prapemrosesan sudah mengintip jawaban yang seharusnya tidak dilihat.
Pola kebocoran biasanya terlihat seperti ini:
Cara yang salah:
Pendekatan ini menormalkan data sebelum split, sehingga data uji sudah memengaruhi transformasi.
Cara yang benar:
Dengan membagi data terlebih dahulu, kita memastikan scaler mempelajari statistik hanya dari train set, menjaga data uji tetap benar-benar belum terlihat.
Operasi sama, urutan berbeda. Dan urutan adalah inti persoalan.
Jika Anda ingin berlatih prapemrosesan end-to-end (termasuk standardisasi dengan benar dan menghindari kebocoran), kursus ini dibuat untuk itu: Preprocessing for Machine Learning in Python.
Normalisasi dalam SQL
Seperti yang disebutkan sebelumnya, kita memiliki makna berbeda dari kata yang sama. Di sini, “normalisasi” bukan transformasi numerik. Ini adalah keputusan struktural untuk berhenti menduplikasi fakta.
Jika tabel orders Anda menyimpan
customer_emailpada setiap baris, basis data akan membiarkan Anda melakukannya. Basis data juga dengan senang hati menerima kontradiksi kemudian: satu email di satu baris, email berbeda di baris lain, dan tidak ada cara yang jelas untuk mengetahui mana yang “asli.”Sebelum normalisasi:
Detail pelanggan diulang di setiap baris. Memperbarui email berarti menemukan dan memodifikasi semua pesanan mereka.
Setelah normalisasi:
Info pelanggan ada satu kali. Query membutuhkan join, tetapi pembaruan dilakukan di satu tempat.
Cara Memilih Teknik Normalisasi yang Tepat
Terakhir, saya ingin memberi Anda kerangka keputusan untuk lain kali Anda bertanya-tanya teknik normalisasi mana yang akan digunakan.
Min-max saat ada batas
Penskalaan min-max bekerja paling baik ketika data Anda memiliki batas yang diketahui dan stabil yang tidak akan berubah antara pelatihan dan penerapan. Nilai piksel selalu berada antara 0 dan 255. Skor probabilitas tidak dapat melebihi 1. Nilai ujian memiliki minimum dan maksimum yang ditentukan.
Pendekatan ini juga cocok saat model Anda secara spesifik mengharapkan input berbatas, seperti beberapa arsitektur jaringan saraf. Namun, hindari penskalaan min-max saat terdapat outlier, karena satu nilai ekstrem dapat mengompres semua observasi normal ke rentang sempit di dekat nol.
Standardisasi sebagai andalan
Standardisasi berfungsi sebagai default yang masuk akal saat Anda tidak memiliki asumsi kuat tentang batas atau distribusi data. Ini bekerja baik untuk fitur dengan rentang bervariasi, batas tidak diketahui, atau distribusi yang kira-kira berbentuk lonceng.
Banyak implementasi algoritma mengasumsikan atau merekomendasikan input yang distandardisasi, termasuk sebagian besar kerangka kerja jaringan saraf dan pustaka regresi logistik. Jika Anda tidak yakin pendekatan mana yang akan digunakan dan data Anda tidak memiliki batas alami yang jelas, standardisasi biasanya merupakan pilihan yang aman.
Robust untuk kekacauan dunia nyata
Robust scaling menjadi pilihan tepat saat data Anda mengandung outlier signifikan yang mewakili nilai sah, bukan kesalahan. Data transaksi keuangan biasanya memiliki karakteristik ini: sebagian besar pembelian kecil, tetapi sesekali ada biaya besar yang nyata dan harus tetap ada dalam dataset.
Distribusi pendapatan, pembacaan sensor dengan lonjakan sesekali, dan data apa pun dengan kemiringan berat atau ekor panjang diuntungkan dari robust scaling. Median dan rentang interkuartil tetap berlabuh pada mayoritas distribusi Anda tanpa memedulikan apa yang terjadi di ekstrem.
Kapan tidak perlu menormalkan
Model berbasis pohon seperti random forest, XGBoost, dan gradient boosted trees melakukan split pada nilai ambang dan tidak pernah menghitung jarak atau gradien lintas fitur. Skala tidak terlihat bagi mereka, sehingga normalisasi menambah kompleksitas tanpa manfaat.
Fitur one-hot sudah biner (0 dan 1), sehingga menskalakannya tidak menghasilkan apa pun yang berguna. Dataset yang hanya berisi kategori berada dalam kategori yang sama.
Terkadang, transformasi spesifik domain bekerja lebih baik daripada normalisasi generik:
Tabel perbandingan ringkas
Berikut gambaran umum teknik dan use case-nya:
Teknik
Gunakan Saat
Hindari Saat
Rentang Keluaran
Min-max
Data memiliki batas yang diketahui; model mengharapkan input berbatas
Ada outlier; batas mungkin bergeser
0 hingga 1 (tetap)
Standardisasi
Batas tidak diketahui; distribusi kira-kira normal; tidak yakin mana yang digunakan
Butuh batas terjamin; outlier berat
Tak berbatas
Robust scaling
Outlier signifikan; distribusi miring; ekor panjang
Data sudah bersih dan simetris
Tak berbatas
Normalisasi L1/L2
Data teks; cosine similarity; ruang berdimensi tinggi
Besaran membawa makna
Vektor unit
Tidak ada
Model berbasis pohon; fitur one-hot; transformasi spesifik domain tersedia
Model berbasis gradien atau jarak
Asli
Kesimpulan
Perbedaan skala menyebabkan masalah nyata bagi model yang peduli pada skala. Metrik jarak memihak fitur berbesaran besar. Gradient descent kesulitan ketika gradien menjangkau beberapa orde besaran. Pelatihan macet atau meledak karena alasan yang tidak terlihat dari kode atau arsitektur.
Normalisasi mengatasinya. Gunakan normalisasi min-max untuk data berbatas, robust scaling saat outlier itu nyata dan tidak dapat dihapus, dan standardisasi sebagai default yang masuk akal. Mekaniknya sederhana: fit di pelatihan, terapkan secara konsisten di mana-mana.
Dalam pengalaman saya, yang memakan waktu adalah tidak menyadari kapan scaling penting, lalu men-debug perilaku model berhari-hari padahal jawabannya adalah prapemrosesan. Atau kesalahan sebaliknya, seperti menerapkan scaling secara refleks pada model yang tidak peduli, menambah kompleksitas tanpa manfaat.
Siap naik tingkat? Machine Learning Engineer track kami yang komprehensif mengajarkan semua yang perlu Anda ketahui tentang alur kerja machine learning.