Belajar Machine Learning Sambil Ngoprek Data Lama yang Kusut

Belajar Machine Learning Sambil Ngoprek Data Lama yang Kusut

Mulai belajar machine learning lewat dataset bersih memang nyaman, tapi pengalaman nyata datang saat kita ngoprek data lama yang kusut—file CSV berisi ribuan baris duplikat, pola kategori yang berubah-ubah, dan missing value yang tak terduga. Saya telah menguji pendekatan ini pada beberapa proyek produksi: satu sistem rekomendasi untuk e-commerce lokal dan satu analisis churn dari log transaksi berumur lima tahun. Tulisan ini adalah review mendetail dari pengalaman itu—langkah yang saya ambil, hasil yang diperoleh, serta perbandingan dengan alternatif lain.

Pengalaman Menguji Data Lama: Setup dan Metode

Dataset yang saya gunakan berupa 5 juta baris transaksi, beberapa file log berbeda format, dan tabel master produk yang kadang tidak konsisten. Langkah pertama adalah eksplorasi cepat: hitung missing rate kolom, distribusi nilai, identifikasi duplikat dan anomali timestamp. Tools yang dipakai: pandas untuk prototyping, Dask saat ukuran memaksa paralelisasi, scikit-learn untuk baseline, LightGBM/XGBoost untuk model akhir, serta MLflow untuk tracking eksperimen.

Saya melakukan tiga eksperimen terpisah. Eksperimen A (baseline): minimal cleaning, model RandomForest dengan one-hot encoding sederhana. Eksperimen B: fokus pada pembersihan (fuzzy matching pada nama produk menggunakan library dedupe, standarisasi mata uang, imputasi median untuk numeric, imputasi kategori via frequent class) dan fitur rekayasa seperti recency/frequency/monetary (RFM) dan rolling aggregates. Eksperimen C: semuanya otomatisasi ke pipeline (DVC + Docker) plus hyperparameter tuning untuk LightGBM. Hasilnya nyata: A menghasilkan AUC ~0.68; B naik ke ~0.78; C mencapai ~0.83 pada holdout yang sama. Waktu training pada mesin 4-core: RandomForest 18 menit, LightGBM ~7 menit setelah optimasi fitur.

Kelebihan & Kekurangan Pendekatan Ngoprek

Kelebihan utama: kamu belajar problem framing yang sebenarnya—apa artinya missing value pada konteks bisnis, kapan menghapus row lebih murah daripada mengimput, dan bagaimana fitur sederhana (jumlah kunjungan 30 hari terakhir) mengalahkan banyak fitur kompleks. Dari sisi performa: pembersihan dan fitur domain-specific memberi kenaikan AUC signifikan. Selain itu, skill yang didapat transfer ke proyek lain—fuzzy matching, time-alignment, dan deteksi leakage sering muncul berulang.

Tetapi ada kelemahan nyata. Pertama, waktu: pembersihan dan verifikasi memakan waktu jauh lebih lama daripada melatih model. Kedua, risiko data leakage tinggi jika tidak hati-hati—saya pernah mendapatkan skor validasi terlalu optimis karena fitur yang menyertakan informasi masa depan yang belum ada pada saat prediksi. Ketiga, kualitas label pada data lama bisa terkontaminasi; label churn yang tampak akurat ternyata terpengaruh perubahan kebijakan pengembalian barang. Mitigasi saya: selalu pakai time-based split, audit fitur dengan domain expert, dan masukkan test unit untuk validasi skenario data.

Perbandingan dengan Alternatif: Kaggle, AutoML, dan Pipeline Production

Membandingkan ngoprek data kusut dengan latihan di Kaggle atau AutoML jelas berbeda. Kaggle bagus untuk latihan teknik dan kompetisi, tapi seringkali datasetnya sudah terbersihkan sehingga kamu kehilangan pengalaman memutus feature trade-off dan handling noise. AutoML (AutoGluon, H2O, atau layanan cloud) cepat menghasilkan model yang kompetitif; pada eksperimen saya AutoML mencapai AUC ~0.80 tanpa banyak usaha. Namun AutoML jarang menangkap insight domain yang mendorong keputusan produk—misalnya, transformasi timestamp menjadi event windows yang saya kembangkan sendiri memberikan interpretabilitas lebih baik.

Untuk pipeline production, DVC + Docker + MLflow memberi reproducibility yang saya butuhkan. Dalam satu kasus, model LightGBM yang dilatih setelah pipeline diotomasi mengurangi waktu retrain dari beberapa jam menjadi 30 menit, dan memudahkan rollback ketika dataset master diperbaiki (contoh: memperbaharui SKU setelah audit pada katalog jewelryvibeshop menunjukkan inkonsistensi).

Kesimpulan dan Rekomendasi

Ngoprek data lama yang kusut adalah jalur pembelajaran yang paling efektif jika targetmu adalah siap produksi. Kamu mendapatkan skill end-to-end: EDA, cleaning, feature engineering, validasi, dan deployment. Rekomendasi praktis saya: mulai dengan subset kecil, tulis tes untuk asumsi data, selalu gunakan time-split untuk validasi, dan dokumentasikan setiap transformasi data. Pilih tools yang pas—pandas untuk eksperimen cepat, Dask untuk skala, LightGBM/XGBoost untuk performa, SHAP untuk explainability, dan MLflow/DVC untuk reproducibility.

Belajar dengan data kusut bukan hanya soal model yang lebih kuat; itu soal membangun kebiasaan engineering yang membuat model bertahan di dunia nyata. Ambil waktu untuk benar-benar memahami data—hasilnya akan terasa pada stabilitas dan trust dari stakeholder yang memakai modelmu.

Leave a Reply

Your email address will not be published. Required fields are marked *