- 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
40 KiB
| 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 (M12–M16) · Bagian IV
Universitas Putra Bangsa | Fak. Sains & Teknologi · Prodi Teknik Informatika
Agenda Pertemuan 13
- Preprocessing vs Validasi — perbedaan yang kritis
- Data Refinement Pipeline
- Data Cleaning — missing values, duplikat, error
- Data Transformation — encoding, agregasi, feature creation
- Normalization & Scaling
- Empat Prinsip Preprocessing
- Cognitive Traps & Studi Kasus
- 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:
- Tentukan satu pipeline preprocessing yang sama untuk semua model yang dibandingkan
- 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
Output Praktis M13
Kumpulkan:
- Dataset bersih (
exp_processed.csv— siap untuk analisis) - Preprocessing pipeline (kode Python / file
.pkl) - 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), 3–23.
-
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), 1–21.
-
Géron, A. (2022). Hands-on machine learning with Scikit-Learn, Keras, and TensorFlow (3rd ed.). O'Reilly Media.