1. Apa Itu Normalisasi Data?
Normalisasi data adalah proses mengubah skala fitur numerik dalam dataset agar memiliki rentang nilai tertentu, biasanya antara 0 dan 1, atau dalam beberapa kasus -1 hingga 1.
Tujuan utama normalisasi adalah untuk menyamakan skala variabel yang berbeda sehingga tidak ada fitur yang mendominasi model machine learning hanya karena memiliki skala yang lebih besar.
Mengapa Normalisasi Data Diperlukan?
Meningkatkan akurasi model machine learning Model yang bekerja dengan data dalam skala berbeda bisa menghasilkan prediksi yang bias.
Mempercepat proses training Model convergen lebih cepat karena semua variabel memiliki skala yang seragam.
Mengurangi dampak outlier Beberapa teknik normalisasi dapat membantu mengurangi pengaruh nilai ekstrem.
Diperlukan untuk algoritma tertentu Algoritma seperti KNN, SVM, dan Neural Networks sangat bergantung pada jarak antar titik data, sehingga normalisasi menjadi penting.
2. Jenis-Jenis Normalisasi Data
Ada beberapa metode normalisasi yang sering digunakan, di antaranya:
a. Min-Max Scaling (Normalisasi Min-Max)
Deskripsi:
Metode ini mengubah nilai fitur ke dalam rentang [0,1] atau [-1,1],
sehingga nilai minimum menjadi 0 dan maksimum menjadi 1.
Rumus Min-Max Scaling:
X′=(X−Xmin)/(Xmax−Xmin)
Di mana:
- X = Nilai asli
- Xmin= Nilai minimum dari fitur
- Xmax = Nilai maksimum dari fitur
- X′ = Nilai setelah normalisasi
Contoh:
Misalkan kita memiliki nilai sebagai berikut:
- Xmin=10, Xmax=90
- Nilai asli: 30
X′=(30−10)/(90−10)=20/80=0.25
Kelebihan:
Mudah dipahami dan diterapkan.
Tidak mengubah distribusi data secara drastis.
Kekurangan:
Sangat dipengaruhi oleh outlier karena nilai maksimum dan minimum ditentukan oleh data yang ada.
Implementasi dalam Python:
from sklearn.preprocessing import MinMaxScaler
import numpy as np
data = np.array([[10], [20], [30], [40], [50], [60], [70], [80], [90]])
scaler = MinMaxScaler(feature_range=(0, 1))
normalized_data = scaler.fit_transform(data)
print(normalized_data)
b. Z-Score Normalization (Standarisasi)
Deskripsi:
Metode ini mengubah data menjadi distribusi dengan mean = 0 dan standar
deviasi = 1. Digunakan dalam teknik machine learning berbasis statistik dan
deep learning.
Rumus Standarisasi (Z-Score):
X′=(X−μ)/σ
Di mana:
- X = Nilai asli
- μ = Mean (rata-rata) dari fitur
- σ= Standar deviasi dari fitur
- X′= Nilai setelah normalisasi
Contoh:
Jika rata-rata suatu fitur adalah 50 dan standar deviasinya 20,
maka untuk nilai 30:
X′=(30−50)/20=−20/20=−1
Kelebihan:
Cocok untuk data dengan distribusi normal (Gaussian).
Tidak terpengaruh oleh skala awal data.
Kekurangan:
Tidak cocok untuk data yang tidak memiliki distribusi normal.
Implementasi dalam Python:
from sklearn.preprocessing import StandardScaler
data = np.array([[10], [20], [30], [40], [50], [60], [70], [80], [90]])
scaler = StandardScaler()
standardized_data = scaler.fit_transform(data)
print(standardized_data)
c. Robust Scaling (Skala Robust)
Deskripsi:
Metode ini mirip dengan Z-Score, tetapi lebih tahan terhadap outlier,
karena menggunakan median dan interquartile range (IQR).
Rumus Robust Scaling:
X′=(X−median)/(IQR)
Di mana:
- Median = Nilai tengah dari dataset
- IQR (Interquartile Range) = Q3−Q1 (selisih antara kuartil ke-3 dan kuartil ke-1)
Kelebihan:
Cocok untuk dataset dengan outlier.
Tidak bergantung pada distribusi data normal.
Kekurangan:
Tidak semua dataset memiliki distribusi yang cocok untuk metode ini.
Implementasi dalam Python:
from sklearn.preprocessing import RobustScaler
scaler = RobustScaler()
robust_scaled_data = scaler.fit_transform(data)
print(robust_scaled_data)
3. Kapan Menggunakan Normalisasi?
Tidak semua algoritma machine learning membutuhkan normalisasi. Berikut adalah rekomendasi normalisasi berdasarkan algoritma:
Algoritma Machine Learning |
Perlukah Normalisasi? |
Metode yang Direkomendasikan |
K-Nearest Neighbors (KNN) |
Ya |
Min-Max Scaling |
Support Vector Machine (SVM) |
Ya |
Min-Max Scaling atau Z-Score |
Neural Networks (MLP, CNN) |
Ya |
Min-Max Scaling atau Z-Score |
K-Means Clustering |
Ya |
Min-Max Scaling |
Decision Tree & Random Forest |
Tidak |
Tidak diperlukan |
Na ve Bayes |
Tidak |
Tidak diperlukan |
Kesimpulan:
- Gunakan Min-Max Scaling jika fitur memiliki rentang nilai yang sangat berbeda.
- Gunakan Z-Score jika data berdistribusi normal.
- Gunakan Robust Scaling jika dataset memiliki banyak outlier.
- Tidak perlu normalisasi untuk algoritma berbasis pohon keputusan seperti Random Forest atau Decision Tree.
4. Kesalahan Umum dalam Normalisasi Data
4.1. Normalisasi Dilakukan Setelah Data Splitting
- Masalah: Jika normalisasi dilakukan setelah pembagian data training dan testing, maka informasi dari testing set bisa bocor ke training set (data leakage).
- Solusi: Normalisasi harus dilakukan hanya pada training set terlebih dahulu, lalu gunakan parameter yang sama untuk normalisasi test set.
Benar:
scaler = MinMaxScaler()
X_train_scaled = scaler.fit_transform(X_train) # Normalisasi berdasarkan training set
X_test_scaled = scaler.transform(X_test) # Gunakan scaler yang sama untuk test set
4.2. Mengabaikan Pengaruh Outlier
- Jika dataset memiliki outlier yang ekstrem, maka Min-Max Scaling dapat terpengaruh, sehingga lebih baik menggunakan Robust Scaling.
5. Kesimpulan
Normalisasi data adalah teknik penting untuk menyamakan skala fitur dalam machine learning.
Tiga metode utama adalah Min-Max Scaling, Z-Score, dan Robust Scaling.
Pilih metode yang sesuai dengan karakteristik data dan algoritma yang digunakan.
Hindari kesalahan umum seperti data leakage akibat normalisasi yang salah.
Dengan menggunakan normalisasi yang tepat, performa model machine learning bisa meningkat secara signifikan!