Lewati ke konten utama

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.
· 14 mnt Baca

Jelajahi bersama AI

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:

  • 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

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.

Min-max normalization

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.

Z-score standardization

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

Robust scaling

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.

L2 normalization

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.

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:

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)

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)

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.

scaler = StandardScaler()
scaler.fit(train_data)

train_standardized = scaler.transform(train_data)
test_standardized = scaler.transform(test_data)

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.

scaler = RobustScaler()
scaler.fit(train_data)

train_robust = scaler.transform(train_data)
test_robust = scaler.transform(test_data)

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.

# Min-max
df_minmax = (data - data.min()) / (data.max() - data.min())

# Z-score
df_zscore = (data - data.mean()) / data.std()

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:

scaler = MinMaxScaler()
scaled_all = scaler.fit_transform(full_data)  # problem
train, test = split(scaled_all)

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.

scaler = MinMaxScaler()
scaler.fit(train_data)
train_scaled = scaler.transform(train_data)
test_scaled = scaler.transform(test_data)

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

Sebelum normalisasi:

CREATE TABLE orders_denormalized (
    order_id INT,
    customer_name VARCHAR(100),
    customer_email VARCHAR(100),
    product_name VARCHAR(100),
    product_price DECIMAL(10,2),
    quantity INT
);

Detail pelanggan diulang di setiap baris. Memperbarui email berarti menemukan dan memodifikasi semua pesanan mereka.

Setelah normalisasi:

CREATE TABLE customers (
    customer_id INT PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100)
);

CREATE TABLE products (
    product_id INT PRIMARY KEY,
    name VARCHAR(100),
    price DECIMAL(10,2)
);

CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    customer_id INT REFERENCES customers(customer_id),
    product_id INT REFERENCES products(product_id),
    quantity INT
);

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 Ferrer

Penulis

Josep Ferrer

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.

Topik

Terkait

blogs

Tutorial Korelasi di R

blogs

Spaghetti Plot dan Jalur Badai

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026