riset-teknologi-informasi/slide/slide-13-data-preprocessing.md
hb_alim e3e1e8db41 feat: add slide deck and book prompt template
- slide/: 16 Marp slide files with inline UPB CSS theme
  (slide-01 through slide-16, covering all RTI-20252 topics)
- slide/theme/: upb.css canonical theme + logo-upb.png
- docs/AI-BOOK-PROMPT-TEMPLATE.md: RTI-20252 book authoring prompt
2026-04-13 15:04:45 +07:00

40 KiB
Raw Blame History

marp paginate class header footer
true true bagian-iv RTI — Riset Teknologi Informasi | Universitas Putra Bangsa Kebumen Helmi Bahar Alim, S.Kom., M.Kom. | 2026

Bab 13 — Data Preprocessing

Mengubah Data Mentah menjadi Siap Analisis

Pertemuan 13 (M13)  |  Sub-CPMK 4.2  |  CPMK04  |  CPL07

Fase: Analyzing & Communicating (M12M16)  ·  Bagian IV

Universitas Putra Bangsa  |  Fak. Sains & Teknologi  ·  Prodi Teknik Informatika


Agenda Pertemuan 13

  1. Preprocessing vs Validasi — perbedaan yang kritis
  2. Data Refinement Pipeline
  3. Data Cleaning — missing values, duplikat, error
  4. Data Transformation — encoding, agregasi, feature creation
  5. Normalization & Scaling
  6. Empat Prinsip Preprocessing
  7. Cognitive Traps & Studi Kasus
  8. Output Praktis: Dataset Bersih + Dokumentasi Preprocessing

Capaian Pembelajaran

Setelah pertemuan ini, mahasiswa mampu:

  • Membedakan validasi data (Bab 11) vs preprocessing data (Bab 13)
  • Menerapkan teknik data cleaning: missing values, duplikat, outlier handling
  • Melakukan transformasi data yang sesuai (encoding, normalisasi, agregasi)
  • Mendokumentasikan setiap langkah preprocessing untuk reproduksi
  • Menerapkan 4 prinsip preprocessing agar tidak memperkenalkan bias

Sub-CPMK 4.2 → Melakukan preprocessing data untuk analisis (CPL07)


Data Refinement Pipeline

Dari data tervalidasi hingga siap dianalisis

Raw Data Tervalidasi (Bab 11) ↓ Cleaning (hapus noise, missing, duplikat) ↓ Transformation (ubah format/representasi) ↓ Normalization (sesuaikan skala/distribusi) ↓ Processed Data ↓ Analysis Ready (input Bab 14)

Prinsip fundamental: Preprocessing harus dapat direproduksi dan terdokumentasi. Tidak boleh ada langkah yang dilakukan tanpa jejak.


Validasi vs Preprocessing — Garis yang Jelas

Perbedaan yang sering tertukar

Aspek Validasi (Bab 11) Preprocessing (Bab 13)
Tujuan Memastikan data benar Mempersiapkan data untuk analisis
Pertanyaan "Apakah data ini valid?" "Bagaimana mengoptimalkan data untuk analisis?"
Tindakan Identifikasi masalah + keputusan Transformasi + normalisasi
Output Dataset valid + catatan anomali Dataset siap analisis
Urutan Pertama Kedua (setelah validasi)

Jika preprocessing dilakukan sebelum validasi → kita mungkin "memperbaiki" data yang seharusnya diinvestigasi lebih lanjut.


Data Cleaning — Tiga Masalah Utama

1. Missing Values

# Identifikasi
print(df.isnull().sum())

# Strategi penanganan (pilih berdasarkan konteks):
# a. Drop baris jika jumlah kecil dan tidak sistemik
df.dropna(subset=['f1_micro'], inplace=True)

# b. Impute dengan mean (hanya untuk data kontinu, non-kritis)
df['time_sec'].fillna(df['time_sec'].mean(), inplace=True)

# c. Flag sebagai missing category (untuk data kategoris)
df['hardware'].fillna('unknown', inplace=True)

2. Duplikat (run yang ter-log dua kali)

df.drop_duplicates(subset=['run_id'], keep='first', inplace=True)

3. Format Error (nilai "N/A" teks di kolom numerik)

df['time_sec'] = pd.to_numeric(df['time_sec'], errors='coerce')

Data Transformation

Mengubah representasi data untuk memudahkan analisis

Encoding Variabel Kategoris

# Label encoding (untuk variabel ordinal)
scenario_map = {'baseline': 0, '+attention': 1, '+ensemble': 2}
df['scenario_code'] = df['scenario'].map(scenario_map)

# One-hot encoding (untuk variabel nominal, tanpa urutan)
df_encoded = pd.get_dummies(df, columns=['hardware'])

Agregasi

# Hitung statistik per skenario (dari 10 run ke 1 baris per skenario)
summary = df.groupby('scenario').agg({
    'f1_micro': ['mean', 'std', 'min', 'max'],
    'time_sec': ['mean', 'std']
}).round(4)

Normalization & Scaling

Mengapa diperlukan dan kapan digunakan

Teknik Formula Kapan Digunakan
Min-Max Normalization x' = \frac{x - x_{min}}{x_{max} - x_{min}} Ketika distribusi tidak diketahui, butuh skala [0,1]
Z-Score Standardization z = \frac{x - \mu}{\sigma} Ketika data asumsi distribusi normal, ML yang sensitif skala
Log Transformation x' = \log(x) Data sangat skewed (mis. execution time)
Robust Scaling x' = \frac{x - Q2}{Q3 - Q1} Ada outlier yang tidak bisa dibuang

Penting: Fit scaler HANYA pada training data, apply ke test data. Jangan fit pada seluruh dataset → data leakage!


Empat Prinsip Preprocessing

Standar yang membedakan preprocessing ilmiah dari ad-hoc

1. Consistency — Terapkan langkah yang sama persis ke semua skenario

# Satu fungsi preprocessing, dipanggil untuk setiap skenario
def preprocess(df): return pipeline.fit_transform(df)

2. Transparency — Setiap langkah terdokumentasi dengan alasan

[STEP-01] Normalisasi waktu eksekusi dengan log transform.
          Alasan: distribusi sangat right-skewed (skewness=4.3).

3. Reproducibility — Simpan pipeline sebagai kode, bukan manual

joblib.dump(pipeline, 'preprocessing_pipeline.pkl')

4. Minimal Distortion — Jangan hapus karakteristik penting dari data

Normalisasi boleh mengubah skala, tidak boleh mengubah urutan atau hubungan relatif.


Cognitive Traps

Bab 13 — Data Preprocessing


Cognitive Traps — Bab 13

"Preprocessing dilakukan dulu sebelum memahami data" Preprocessing tanpa pemahaman konteks dapat memperkenalkan bias yang tidak disadari. Selalu lakukan exploratory analysis terlebih dahulu, baru tentukan preprocessing yang tepat.

"Normalisasi selalu diperlukan" Beberapa algoritma (decision tree, random forest) tidak sensitif terhadap skala. Normalisasi tidak selalu meningkatkan performa. Pilih berdasarkan kebutuhan algoritma, bukan habit.

"Data leakage tidak masalah karena kita tahu hasilnya" Data leakage (fit scaler pada entire dataset termasuk test) adalah invalidasi hasil yang fundamental. Hasil yang tinggi karena data leakage bukan prestasi — itu artifact.

"Langkah preprocessing tidak perlu didokumentasikan satu per satu" Jika preprocessing tidak terdokumentasi, penelitian tidak dapat direproduksi. Penelitian yang tidak dapat direproduksi tidak dapat diverifikasi. Ini adalah standar minimum publikasi ilmiah.


Studi Kasus 1 — Data Leakage (Basic)

Konteks: Mahasiswa melakukan normalisasi sebelum train/test split.

# Data Leakage
from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)  # Fit pada SEMUA data, termasuk test!

X_train, X_test = train_test_split(X_scaled, test_size=0.2)

# Masalah: scaler telah "melihat" test data → test data tidak independen lagi
# Benar
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline

X_train, X_test = train_test_split(X, test_size=0.2)

scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)   # Fit HANYA pada training
X_test_scaled  = scaler.transform(X_test)        # Transform saja test data

Studi Kasus 2 — Inconsistent Preprocessing (Advanced)

Konteks: Researcher membandingkan Model A dan Model B.

Masalah:

  • Model A: preprocessing dengan normalisasi Min-Max
  • Model B: preprocessing dengan standardisasi Z-score
  • Kedua model dibandingkan sebagai "perbandingan arsitektur"

Tapi preprocessing yang berbeda = bukan hanya arsitektur yang berbeda!

Model B mungkin lebih baik bukan karena arsitekturnya, tapi karena Z-score lebih cocok dengan distribusi data ini.

Solusi:

  1. Tentukan satu pipeline preprocessing yang sama untuk semua model yang dibandingkan
  2. Jika ingin membandingkan teknik preprocessing → buat itu sebagai variabel eksperimen eksplisit

Dokumentasi Preprocessing

Format standar yang harus ada dalam laporan

PREPROCESSING DOCUMENTATION

Dataset: exp03_summary_validated.csv (setelah validasi Bab 11)
Tanggal preprocessing: 2026-05-05
Peneliti: [Nama]

LANGKAH PREPROCESSING:

[STEP-01] Log transform pada kolom 'time_sec'
  Alasan: skewness = 4.3 (right-skewed). Log transform menurunkan ke 0.8.
  Kode: df['time_sec'] = np.log1p(df['time_sec'])

[STEP-02] One-hot encoding pada kolom 'scenario'  
  Alasan: variabel nominal (tidak ada urutan).
  Output: 3 kolom dummy (attendance_baseline, +attention, +ensemble)

[STEP-03] Min-Max normalization pada seluruh fitur numerik
  Alasan: SVM dan neural network sensitif terhadap skala.
  Penting: Scaler di-fit HANYA pada training fold (cross-validation).

OUTPUT: exp03_processed.csv + preprocessing_pipeline.pkl

Ringkasan Pertemuan 13

Konsep Inti
Preprocessing vs Validasi Validasi dulu (cek kebenaran), preprocessing kemudian (siapkan analisis)
Cleaning Missing (drop/impute/flag) + Duplikat + Format Error
Transformation Encoding kategoris + Agregasi runs → per-skenario
Normalization Min-Max/Z-score/Log/Robust sesuai konteks + hindari data leakage
4 Prinsip Consistency · Transparency · Reproducibility · Minimal Distortion

Final Statement & Output Praktis

"Preprocessing yang tidak terdokumentasi adalah black box — tidak ada yang bisa memverifikasi apakah transformasi yang dilakukan valid atau tidak, termasuk penelitinya sendiri setelah 6 bulan."

Output Praktis M13

Kumpulkan:

  1. Dataset bersih (exp_processed.csv — siap untuk analisis)
  2. Preprocessing pipeline (kode Python / file .pkl)
  3. Dokumentasi preprocessing (format [STEP-XX] lengkap dengan alasan)

Referensi Utama — Bab 13

  • Famili, A., Shen, W. M., Weber, R., & Simoudis, E. (1997). Data preprocessing and intelligent data analysis. Intelligent Data Analysis, 1(1), 323.

  • Garcia, S., Luengo, J., & Herrera, F. (2015). Data preprocessing in data mining. Springer.

  • Kaufman, S., Rosset, S., Perlich, C., & Stitelman, O. (2012). Leakage in data mining: Formulation, detection, and avoidance. ACM Transactions on Knowledge Discovery from Data, 6(4), 121.

  • Géron, A. (2022). Hands-on machine learning with Scikit-Learn, Keras, and TensorFlow (3rd ed.). O'Reilly Media.