Biar Model ML Lo Gak Zonk! Spill Rahasia Normalisasi & Standarisasi Data yang Bikin Akurat Parah!

Normalisasi & Standarisasi Data untuk Model ML: Tutorial Lengkap

PPLG

PPLG

Penulis

11 May 2026
27 x dilihat

Yo, ngab! Udah sering denger kan soal "data itu raja" di dunia Data Science? Nah, tapi data yang mentah gitu aja kadang bikin model machine learning kita jadi lemot, error, atau bahkan ngasih hasil yang zonk parah. Vibes-nya tuh kayak mau ngedate tapi bajunya kusut, kan nggak banget?

Makanya, sebelum lo deploy model keren lo, ada dua jurus sakti yang WAJIB banget lo kuasai: Normalisasi dan Standarisasi Data. Dua teknik ini kayak skincare buat data lo, biar glowing, bersih, dan siap tampil maksimal di depan model machine learning kesayangan lo.

Kenapa Sih Perlu Normalisasi & Standarisasi?

Bayangin lo punya dataset yang isinya data tinggi badan (dalam cm) sama data gaji (dalam jutaan rupiah). Jelas banget kan range nilainya beda jauh? Nah, kalau data ini dimasukin langsung ke model machine learning, fitur dengan nilai yang lebih besar (kayak gaji) bisa mendominasi fitur dengan nilai lebih kecil (kayak tinggi badan), meskipun dua-duanya sama-sama penting. Hasilnya? Model jadi bias dan performanya anjlok.

Nah, Normalisasi dan Standarisasi ini tugasnya ngasih "treatment" biar semua fitur punya skala nilai yang seimbang, jadi model bisa belajar dengan lebih adil dan efisien.

Spill Dulu, Apa Bedanya Normalisasi & Standarisasi?

Meskipun tujuannya sama, tapi caranya beda nih, gaes:

  • Normalisasi (Min-Max Scaling): Jurus ini ngubah data biar nilainya ada di range tertentu, biasanya antara 0 sampai 1. Cocok buat data yang gak punya distribusi normal dan lo butuh nilai yang terbatasi. Rumusnya simpel banget: $$ X_{normalized} = \frac{X - X_{min}}{X_{max} - X_{min}} $$ Ini kayak lo ngompres data biar muat di kotak 0-1.

  • Standarisasi (Z-Score Normalization): Kalau ini, tujuannya ngubah data biar punya rata-rata (mean) 0 dan deviasi standar (standard deviation) 1. Ini cocok banget buat algoritma yang asumsiin data berdistribusi normal, kayak algoritma regresi linear, regresi logistik, atau SVM. Rumusnya: $$ X_{standardized} = \frac{X - \mu}{\sigma} $$ Di sini, $\mu$ itu rata-rata dan $\sigma$ itu deviasi standar dari data. Standarisasi ini gak membatasi nilai data, jadi masih bisa ada nilai negatif atau nilai yang lebih besar dari 1.

Kapan Pakai yang Mana?

Gini nih, bingung kan? Tenang, ada tipsnya:

  • Pake Normalisasi (Min-Max Scaling) kalo:

    • Algoritma yang lo pake sensitif sama skala data, dan lo mau nilai terbatasi di range 0-1 (misal: algoritma jaringan saraf tiruan (neural networks), atau K-Nearest Neighbors (KNN)).
    • Dataset lo gak punya distribusi normal dan gak ada outlier ekstrem.
  • Pake Standarisasi (Z-Score Normalization) kalo:

    • Algoritma lo asumsiin data berdistribusi normal (misal: PCA, regresi linear, SVM, regresi logistik).
    • Dataset lo punya outlier yang cukup banyak, karena standarisasi lebih robust terhadap outlier dibanding normalisasi.

Tutorial Skuy: Implementasi Pakai Python & Scikit-learn

Biar makin greget, yuk kita praktekin langsung pake Python! Kita bakal pake library Scikit-learn yang udah pasti top-notch buat urusan ML.

Pertama, kita siapin data dummy dulu ya.

import pandas as pd
import numpy as np

# Bikin data dummy
data = {
    'Tinggi_Badan_cm': [170, 180, 165, 175, 190, 155, 172, 185],
    'Gaji_Juta': [5, 10, 4, 7, 15, 3, 6, 12]
}
df = pd.DataFrame(data)

print("Data Awal:\n", df)

Output Data Awal:

Data Awal:
    Tinggi_Badan_cm  Gaji_Juta
0              170          5
1              180         10
2              165          4
3              175          7
4              190         15
5              155          3
6              172          6
7              185         12

1. Normalisasi Pakai MinMaxScaler

from sklearn.preprocessing import MinMaxScaler

# Inisialisasi scaler
scaler_norm = MinMaxScaler()

# Terapkan scaler ke DataFrame
# Kita bikin DataFrame baru biar data aslinya gak keganti
df_normalized = df.copy()
df_normalized[['Tinggi_Badan_cm_norm', 'Gaji_Juta_norm']] = scaler_norm.fit_transform(df[['Tinggi_Badan_cm', 'Gaji_Juta']])

print("\nData Setelah Normalisasi (Min-Max Scaling):\n", df_normalized)

Output Data Setelah Normalisasi:

Data Setelah Normalisasi (Min-Max Scaling):
    Tinggi_Badan_cm  Gaji_Juta  Tinggi_Badan_cm_norm  Gaji_Juta_norm
0              170          5              0.428571        0.250000
1              180         10              0.714286        0.583333
2              165          4              0.285714        0.166667
3              175          7              0.571429        0.333333
4              190         15              1.000000        1.000000
5              155          3              0.000000        0.083333
6              172          6              0.485714        0.250000
7              185         12              0.857143        0.750000

Lihat kan, semua nilai sekarang ada di range 0 sampai 1. Mantul!

2. Standarisasi Pakai StandardScaler

from sklearn.preprocessing import StandardScaler

# Inisialisasi scaler
scaler_std = StandardScaler()

# Terapkan scaler ke DataFrame
df_standardized = df.copy()
df_standardized[['Tinggi_Badan_cm_std', 'Gaji_Juta_std']] = scaler_std.fit_transform(df[['Tinggi_Badan_cm', 'Gaji_Juta']])

print("\nData Setelah Standarisasi (Z-Score Normalization):\n", df_standardized)

Output Data Setelah Standarisasi:

Data Setelah Standarisasi (Z-Score Normalization):
    Tinggi_Badan_cm  Gaji_Juta  Tinggi_Badan_cm_std  Gaji_Juta_std
0              170          5            -0.533530      -0.713047
1              180         10             0.736958       0.873438
2              165          4            -1.360396      -1.056441
3              175          7             0.066713      -0.370000
4              190         15             1.570130       1.900251
5              155          3            -2.193262      -1.399835
6              172          6            -0.240203      -0.713047
7              185         12             1.153255       1.399835

Kalau ini, nilainya jadi ada yang positif, negatif, dan gak terpatok di 0-1. Rata-ratanya harusnya deket sama 0 dan deviasi standarnya deket sama 1.

Tips Praktis biar Makin Jago!

  • Jangan Normalisasi/Standarisasi Target Variable: Ini penting banget, ngab! Teknik ini buat fitur (independent variables), bukan buat variabel target (dependent variables) yang mau lo prediksi.
  • Fit on Train, Transform on Train & Test: Saat lo pake teknik ini, lo harus fit scaler (ngitung nilai min/max atau mean/std) cuma pake data latih (train data). Setelah itu, pake scaler yang sama buat transform data latih dan data uji (test data). Kenapa? Biar data uji gak "bocor" informasinya ke proses fitting yang seharusnya cuma pake data latih.
  • Perhatiin outlier: Kalau data lo banyak outlier, StandardScaler biasanya jadi pilihan yang lebih aman.
  • Dokumentasi itu Kunci: Selalu catat teknik apa yang lo pake dan kenapa. Ini penting buat reproducibility dan kalau nanti ada yang nanya.

Udah siap bikin model ML lo makin powerful kan? Normalisasi dan Standarisasi itu pondasi penting yang bikin data lo "ngerti" sama model. Cobain deh, dijamin vibes project lo langsung naik level!

5.0

Berikan Rating

Komentar (0)

Silakan login untuk memberikan komentar.

Login Sekarang

Belum ada komentar. Jadilah yang pertama!

Menyukai Artikel (1)