Lompat ke konten
nalar

Data Cleaning & Preprocessing

Penanganan nilai hilang, noise/outlier, inkonsistensi, normalisasi, diskretisasi (binning), binerisasi, dan reduksi dimensi dengan PCA.

Capaian Pembelajaran

Setelah minggu ini kamu bisa:

  1. Memilih strategi imputasi nilai hilang yang tepat (mean, median, modus, konstanta).
  2. Mendeteksi dan menangani noise/outlier (aturan IQR, clipping, binning smoothing).
  3. Menyeragamkan data kategorikal yang tidak konsisten dan menghapus duplikat.
  4. Melakukan normalisasi (min-max, z-score), diskretisasi (equal-width, equal-frequency), dan binerisasi (one-hot).
  5. Mereduksi dimensi dengan Principal Component Analysis (PCA) dan menafsirkan explained variance.

1. Mengapa Preprocessing?

Garbage in, garbage out. Algoritma terbaik pun menghasilkan pola salah bila datanya kotor.

Dimensi kualitas data: akurasi, kelengkapan, konsistensi, ketepatan waktu, dapat dipercaya, dapat diinterpretasi.

Tugas utama preprocessing (Han & Kamber):

Tugas Isi Bagian
Data cleaning Isi nilai hilang, haluskan noise, buang outlier, perbaiki inkonsistensi 2–4
Data integration Gabungkan banyak sumber, atasi redundansi (korelasi tinggi), konflik skema 5
Data reduction Reduksi dimensi (PCA), reduksi jumlah data (sampling) 8
Data transformation Normalisasi, diskretisasi, binerisasi, konstruksi atribut 6–7

2. Nilai Hilang (Missing Values)

Mekanisme hilangnya data

Jenis Arti Contoh
MCAR (Missing Completely At Random) Hilang acak murni Sensor error sesaat
MAR (Missing At Random) Bergantung atribut lain yang teramati Pelanggan muda lebih sering tidak mengisi pendapatan
MNAR (Missing Not At Random) Bergantung nilai itu sendiri Orang berpendapatan sangat tinggi enggan mengisi pendapatan

Strategi penanganan

Strategi Kapan dipakai Kelemahan
Hapus baris (listwise deletion) Missing sedikit (< 5%) & MCAR Kehilangan informasi
Hapus kolom Missing sangat banyak (> 50–60%) Fitur hilang
Isi mean Numerik, distribusi simetris Sensitif outlier, mengecilkan varians
Isi median Numerik, distribusi miring / ada outlier Mengecilkan varians
Isi modus Kategorikal Bisa membuat kelas mayoritas makin dominan
Isi per kelompok Ada atribut pengelompok kuat Perlu atribut pendukung
Model (KNN/regresi) Ada pola antar atribut Lebih mahal komputasi
Indikator missing Fakta "hilang" itu sendiri informatif Menambah kolom

Contoh: umur = [25, 30, NaN, 35, 200]

  • Mean (tanpa NaN) = (25+30+35+200)/4 = 72.5 → hasil imputasi tidak masuk akal karena outlier 200.
  • Median = (30+35)/2 = 32.5 → lebih wajar.

Urutan kerja yang baik: tangani outlier/noise dulu, baru imputasi — supaya statistik pengisi tidak terdistorsi.


3. Noise & Outlier

Noise = galat acak/varians pada variabel terukur. Outlier = objek yang sangat berbeda dari mayoritas (bisa error, bisa juga kejadian penting — mis. fraud).

Deteksi dengan IQR (Tukey)

IQR = Q3 − Q1
batas bawah = Q1 − 1.5·IQR
batas atas  = Q3 + 1.5·IQR

Deteksi dengan z-score

z = (x − μ) / σ; biasanya |z| > 3 dianggap outlier. Kelemahan: μ dan σ sendiri terdistorsi oleh outlier.

Penanganan

  1. Hapus (jika jelas error, mis. umur 999).
  2. Ganti NaN lalu imputasi (jika nilai mustahil secara domain, mis. umur < 0).
  3. Clipping / winsorizing: potong ke batas → x' = min(max(x, bawah), atas).
  4. Binning smoothing: urutkan data, bagi ke bin, ganti tiap nilai dengan mean/median/batas bin.

Contoh binning smoothing (equal-frequency, 3 bin): data harga 4, 8, 9, 15, 21, 21, 24, 25, 26, 28, 29, 34

Bin Isi Smoothing by mean Smoothing by boundaries
1 4, 8, 9, 15 9, 9, 9, 9 4, 4, 4, 15
2 21, 21, 24, 25 22.75 ×4 21, 21, 25, 25
3 26, 28, 29, 34 29.25 ×4 26, 26, 26, 34

4. Inkonsistensi & Duplikat

  • Format teks: "JAKARTA", " Jakarta ", "jakarta" → str.strip().str.title().
  • Kode berbeda makna sama: "L", "l", "Laki-laki" → pemetaan (dict) ke satu kode.
  • Satuan berbeda: Rp vs ribuan Rp, cm vs m → konversi.
  • Duplikat: df.drop_duplicates(); hati-hati duplikat "hampir sama" (beda spasi/kapitalisasi) — seragamkan dulu, baru cek duplikat.

5. Integrasi Data

Saat menggabungkan sumber (CRM + kasir + web):

  • Entity identification: cust_id di satu sistem = id_pelanggan di sistem lain.

  • Redundansi: atribut turunan (mis. total = harga × jumlah) atau korelasi sangat tinggi. Deteksi dengan koefisien korelasi Pearson:

    r = Σ(x − x̄)(y − ȳ) / √(Σ(x − x̄)² · Σ(y − ȳ)²)

    Untuk kategorikal: uji χ² (chi-square).

  • Konflik nilai: harga dalam mata uang berbeda.


6. Normalisasi (Feature Scaling)

Wajib untuk algoritma berbasis jarak (KNN, K-Means, DBSCAN) dan PCA, karena atribut berskala besar (pendapatan ≈ 10⁷) akan mendominasi atribut kecil (umur ≈ 10¹).

Metode Rumus Hasil Catatan
Min-max x' = (x − min)/(max − min) · (new_max − new_min) + new_min [0, 1] (default) Sensitif outlier
Z-score x' = (x − μ)/σ mean 0, std 1 Lebih tahan outlier; σ populasi (ddof=0) seperti StandardScaler
Decimal scaling x' = x / 10^j, j terkecil sehingga max|x'| < 1 (−1, 1) Sederhana
Robust scaling x' = (x − median)/IQR — Paling tahan outlier

Contoh min-max: pendapatan min 2 jt, max 12 jt. Nilai 7 jt → (7 − 2)/(12 − 2) = 0.5.

Contoh z-score: μ = 5 jt, σ = 2 jt. Nilai 9 jt → (9 − 5)/2 = 2.0.

⚠️ Fit parameter scaling (min, max, μ, σ) hanya pada data latih, lalu terapkan ke data uji — untuk menghindari data leakage.


7. Diskretisasi & Binerisasi

Diskretisasi (numerik → interval)

Metode Cara Pandas
Equal-width Rentang dibagi k interval sama lebar: lebar = (max − min)/k pd.cut(x, k)
Equal-frequency Tiap bin berisi ≈ n/k data (berbasis kuantil) pd.qcut(x, k)
Berbasis domain Batas ditentukan pakar pd.cut(x, bins=[0,17,25,40,60,100])

Contoh equal-width: umur min 18, max 68, k = 5 → lebar 10 → bin [18,28), [28,38), [38,48), [48,58), [58,68].

Binerisasi / One-Hot Encoding

Atribut nominal kota ∈ {Jakarta, Bandung, Surabaya} → 3 kolom biner kota_Jakarta, kota_Bandung, kota_Surabaya. Untuk ordinal, lebih baik ordinal encoding (silver=0, gold=1, platinum=2) agar urutan terjaga.


8. Reduksi Dimensi: PCA

Kutukan dimensi (curse of dimensionality): semakin banyak atribut, data semakin jarang (sparse), jarak antar titik makin mirip, model mudah overfit.

PCA mencari sumbu baru (komponen utama) yang saling ortogonal dan memaksimalkan varians.

Algoritma PCA

  1. Standarisasi / center data: Xc = X − mean(X).
  2. Hitung matriks kovarians: C = Xcᵀ Xc / (n − 1).
  3. Hitung eigenvalue λ dan eigenvector v dari C; urutkan λ menurun.
  4. Ambil k eigenvector teratas → matriks W (d × k).
  5. Proyeksi: Z = Xc · W.
  6. Explained variance ratio komponen i = λi / Σλ.

Contoh 2D: C = [[2, 1], [1, 2]] → eigenvalue 3 dan 1. Komponen 1 menjelaskan 3/(3+1) = 75% varians; eigenvector-nya [1, 1]/√2 (arah diagonal).

Memilih k: ambil komponen hingga kumulatif explained variance ≥ 90–95%, atau lihat "siku" pada scree plot.

Tanda (±) eigenvector bisa berbeda antar pustaka — hasil tetap setara.

Kelemahan PCA: komponen sulit diinterpretasi, hanya menangkap hubungan linear, perlu scaling.


9. Pipeline Preprocessing (urutan praktis)

1. Hapus duplikat persis
2. Seragamkan kategori (strip, title, mapping)
3. Nilai mustahil → NaN (umur < 0 atau > 100)
4. Outlier ekstrem → clip/hapus
5. Imputasi (median numerik, modus kategorikal)
6. Encoding (one-hot / ordinal)
7. Scaling (z-score / min-max)
8. (Opsional) PCA

Di scikit-learn: Pipeline + ColumnTransformer + SimpleImputer + StandardScaler + OneHotEncoder.


Ringkasan

  • Tangani outlier sebelum imputasi; median lebih aman daripada mean untuk data miring.
  • Seragamkan teks sebelum menghitung duplikat dan frekuensi kategori.
  • Scaling wajib untuk algoritma berbasis jarak dan PCA; fit hanya di data latih.
  • pd.cut = equal-width, pd.qcut = equal-frequency.
  • PCA = eigen-dekomposisi matriks kovarians; pilih k berdasar explained variance.

Bacaan

  • Han, Kamber & Pei — Data Mining: Concepts and Techniques, Bab 3 (Data Preprocessing).
  • Dokumentasi scikit-learn: Preprocessing data dan Decomposition (PCA).

Tugas Minggu Ini

  1. Kerjakan lab.ipynb sampai selesai.
  2. Kerjakan kuis (di web, atau baca quiz.json).
  3. Isi exercise.py, lalu cek: python check.py 2

Sudah paham materinya?

Tandai selesai, lalu uji pemahamanmu.

Kerjakan kuis