7 Langkah Membangun Pipeline Machine Learning dari Data Mentah
Data mentah sering datang dengan nilai kosong, format campur aduk, dan kolom yang belum siap dipakai model. Menyusun pipeline machine learning dari data mentah membuat proses pengolahan berjalan konsisten, dari eksperimen pertama sampai model dipakai di produksi. Berikut tujuh langkah yang bisa kamu ikuti.
1. Pahami Data Mentah Sebelum Menyentuhnya
Buka dataset dan lihat isinya: berapa baris, tipe kolom, rentang nilai, dan berapa banyak nilai kosong. Langkah ini mencegah kamu menebak-nebak saat membersihkan data. Cek juga apakah ada kolom yang sebenarnya ID unik atau timestamp yang tidak akan dipakai model. Menyimpan kolom seperti itu bisa membuat model menghafal data latih.
Untuk data yang sangat besar, ambil sampel acak dan periksa distribusinya. Kamu bisa memakai fungsi deskriptif sederhana di pandas untuk melihat statistik ringkas. Jika menemukan banyak nilai hilang, catat kolomnya untuk ditangani di langkah berikutnya.
2. Bersihkan Data Secara Terpisah dari Model
Bersihkan data dalam fungsi atau kelas tersendiri, bukan tersebar di notebook. Pembersihan mencakup penghapusan duplikat, perbaikan tipe data, dan penanganan nilai hilang. Untuk nilai hilang, pilih strategi yang masuk akal: isi dengan median untuk kolom numerik, atau buat kategori khusus untuk kolom kategorik.
Pisahkan juga kolom target dari fitur sejak awal. Jika kolom target ikut masuk ke proses pembersihan, risiko kebocoran data meningkat. Simpan proses pembersihan dalam fungsi yang menerima DataFrame dan mengembalikan DataFrame bersih, sehingga bisa dipakai ulang di data validasi dan data baru.
3. Lakukan Feature Engineering dengan Alasan Jelas
Feature engineering menambah informasi yang belum ditangkap model dari kolom asli. Contohnya, dari kolom tanggal kamu bisa mengambil hari dalam seminggu atau selisih hari antar kejadian. Dari kolom teks, kamu bisa menghitung panjang teks jika itu relevan dengan target.
Jangan menambah fitur hanya karena bisa. Setiap fitur baru sebaiknya punya dugaan hubungan dengan target. Untuk panduan lebih rinci soal transformasi angka, baca feature engineering untuk data numerik. Uji fitur baru dengan validasi silang sebelum memasukkannya ke pipeline final.
4. Normalkan dan Encode Fitur Sesuai Jenisnya
Model berbasis jarak dan gradient descent sensitif terhadap skala fitur. Normalisasi membuat fitur numerik punya rentang seragam sehingga model tidak berat sebelah. Panduan tentang cara normalisasi data untuk machine learning membantu memilih antara standardisasi dan min-max.
Kolom kategorik perlu diubah ke angka. One-hot encoding cocok untuk kategori tanpa urutan, sedangkan ordinal encoding dipakai jika ada tingkatan yang bermakna. Simpan encoder dalam objek yang sama dengan pipeline agar transformasi di data baru memakai aturan yang sama dengan data latih.
5. Bagi Data Latih, Validasi, dan Uji Secara Stratified
Pembagian data menentukan seberapa jujur evaluasi model. Gunakan data latih untuk fitting, data validasi untuk memilih model dan hyperparameter, dan data uji hanya sekali di akhir. Jika kelas target tidak seimbang, pakai stratified split agar proporsi kelas terjaga di setiap subset.
Langkah lengkapnya ada di cara split data latih dan data uji yang benar. Untuk data yang sangat tidak seimbang, terapkan strategi tambahan seperti yang dijelaskan di cara menangani data tidak seimbang, misalnya oversampling hanya pada data latih.
6. Latih Model dan Pilih Metrik yang Sesuai Tujuan
Mulai dari model sederhana sebagai baseline, seperti regresi logistik atau pohon keputusan. Baseline memberi gambaran apakah model yang lebih rumit benar-benar menambah nilai. Latih beberapa kandidat dan bandingkan performanya di data validasi.
Pemilihan metrik bergantung pada biaya kesalahan. Jika kesalahan positif palsu lebih mahal, precision jadi prioritas. Jika kamu ingin menemukan sebanyak mungkin kasus positif, recall lebih penting. Uraian tentang cara memilih metrik evaluasi model klasifikasi bisa jadi acuan. Jangan hanya melihat akurasi, terutama saat kelas tidak seimbang.
7. Bungkus Semua Langkah dalam Pipeline dan Uji Ulang
Setelah langkah-langkah di atas stabil, bungkus preprocessing dan model dalam satu pipeline. Pipeline memastikan urutan transformasi sama setiap kali prediksi dilakukan, sehingga tidak ada perbedaan antara data latih dan data produksi.
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.impute import SimpleImputer
from sklearn.linear_model import LogisticRegression
pipe = Pipeline([
("imputer", SimpleImputer(strategy="median")),
("scaler", StandardScaler()),
("model", LogisticRegression(max_iter=1000)),
])
pipe.fit(X_train, y_train)
print(pipe.score(X_test, y_test))
Uji pipeline pada data uji yang belum pernah dilihat model. Jika hasilnya jauh di bawah performa validasi, periksa kembali proses split dan transformasi. Setelah puas, simpan pipeline dengan joblib atau pickle agar bisa dipakai ulang tanpa menulis ulang kode preprocessing.
Pipeline yang rapi juga memudahkan integrasi ke layanan lain. Misalnya, jika model dipakai untuk mengirim notifikasi ke perangkat, protokol seperti MQTT vs HTTP untuk perangkat IoT perlu dipilih sesuai kebutuhan latensi dan ukuran pesan. Sementara itu, jika hasil prediksi ditampilkan di dasbor web, komponen antarmuka seperti tooltip jQuery tanpa plugin bisa membantu memberi keterangan pada angka prediksi.
Ringkasan
Pipeline machine learning dari data mentah dibangun bertahap: pahami data, bersihkan, rekayasa fitur, normalisasi, split, latih, lalu bungkus dalam pipeline. Setiap langkah sebaiknya ditulis sebagai fungsi atau kelas agar bisa diuji dan dipakai ulang. Mulailah dari baseline sederhana, dan bandingkan model baru hanya jika memberi perbaikan yang terukur.
Pertanyaan yang Sering Diajukan
Apakah pipeline harus dibuat dengan scikit-learn?
Tidak harus. Scikit-learn menyediakan Pipeline yang praktis, tetapi kamu bisa membuat kelas sendiri selama urutan transformasi konsisten. Yang penting, preprocessing dan model diperlakukan sebagai satu kesatuan saat disimpan dan dipakai.
Kapan sebaiknya normalisasi dilakukan, sebelum atau sesudah split?
Normalisasi dilakukan setelah split. Hitung parameter normalisasi (rata-rata dan simpangan baku) hanya dari data latih, lalu terapkan ke data validasi dan uji. Jika dihitung sebelum split, informasi dari data uji bocor ke proses latih.
Bagaimana menangani fitur kategorik dengan banyak kategori?
Batasi jumlah kategori dengan menggabungkan yang jarang muncul ke label “lainnya”, atau gunakan target encoding dengan validasi silang. Hindari one-hot encoding pada kolom dengan ratusan kategori karena jumlah fitur meledak dan model mudah overfitting.


