Praktikum Modul 5 Klasifikasi Mengenal Pola Dalam Data
Laporan Praktikum: Prediksi Churn Pelanggan — Dari Data Sampai Model
Dalam era transformasi digital, kemampuan membaca data pelanggan dan mengambil keputusan berbasis analitik jadi kompetensi krusial. Salah satu masalah umum yang sering dihadapi perusahaan berlangganan adalah churn — pelanggan yang berhenti menggunakan layanan. Prediksi churn membantu perusahaan bereaksi lebih awal: memberi penawaran, memperbaiki layanan, atau menyesuaikan strategi pemasaran.
Pada praktikum ini, mahasiswa akan belajar metode dasar yang sering dipakai untuk kasus klasifikasi seperti churn: K-Nearest Neighbors (KNN), Decision Tree, dan Random Forest. Kita akan berjalan dari tahap persiapan dataset, pra-pemrosesan, pembangunan model, ke evaluasi dan interpretasi hasil. Penulisan ini disusun dengan gaya mengalir seperti modul praktikum agar mudah dibaca sekaligus bisa langsung dipakai sebagai bahan laporan.
Tujuan Praktikum
Tujuan utama praktikum ini adalah agar mahasiswa mampu:
- Mengerti struktur dataset churn (fitur dan label).
- Menerapkan pra-pemrosesan dasar: menangani missing value, encoding, scaling.
- Membangun dan menguji model KNN, Decision Tree, dan Random Forest menggunakan Python (scikit-learn).
- Mengevaluasi model dengan metrik relevan (precision, recall, F1, AUC, dsb.) dan memahami trade-off antar metrik.
- Membuat rekomendasi berbasis hasil eksperimen untuk tindakan bisnis.
Ringkasan Studi Kasus
Kasus yang digunakan adalah Prediksi Churn Pelanggan untuk sebuah layanan berlangganan. Dataset yang dipakai bersifat dummy/reka-angkat namun meniru karakteristik dataset nyata: kombinasi fitur numerik dan kategorikal, distribusi label yang mungkin tidak seimbang, serta beberapa nilai hilang atau outlier.
Contoh kolom pada dataset:
| Kolom | Keterangan |
|---|---|
| customer_id | ID unik pelanggan (hapus sebelum modeling) |
| gender | Jenis kelamin |
| age | Usia |
| tenure | Lama berlangganan (bulan) |
| monthly_charges | Biaya bulanan |
| contract_type | Jenis kontrak (Month-to-month, One year, Two year) |
| payment_method | Metode pembayaran |
| support_calls | Jumlah panggilan ke customer support |
| churn | Label target: 1 = churn, 0 = loyal |
Langkah-Langkah Praktikum (Ringkas & Aplikatif)
Berikut alur praktikum yang direkomendasikan, disusun supaya mahasiswa bisa mengikuti langkah demi langkah di Google Colab atau lingkungan Python lain.
- Persiapan lingkungan: buka Google Colab, import pandas, numpy, matplotlib, seaborn (opsional), scikit-learn.
- Load data: baca file CSV / dataset dummy dan lakukan eksplorasi awal.
- Exploratory Data Analysis (EDA): cek dimensi, tipe data, nilai hilang, statistik deskriptif, distribusi label (churn vs loyal).
- Pra-pemrosesan: isi missing value, encoding kategori, scaling numerik, hapus kolom id.
- Split data: stratified train-test split (mis. 80% train, 20% test).
- Modeling: buat pipeline untuk KNN, Decision Tree, Random Forest; lakukan cross-validation dan hyperparameter tuning sederhana.
- Evaluasi: hitung confusion matrix, precision, recall, F1-score, dan AUC-ROC pada test set.
- Interpretasi: periksa feature importance (Random Forest) dan aturan (Decision Tree).
- Simpan hasil: export prediksi + metrik ke CSV untuk lampiran laporan.
Persiapan Dataset — Tips Praktis
Di sini kita uraikan detail yang sering muncul di praktik nyata dan bagaimana mengatasinya.
Pemeriksaan Awal (EDA)
Lakukan pemeriksaan dasar: panggil df.head(), df.info(), df.describe(). Perhatikan:
- Missing values: kolom dengan banyak missing mungkin perlu di-drop atau diimputasi dengan hati-hati.
- Outlier: cek distribusi
monthly_chargesdantenure. Outlier ekstrem bisa diatasi dengan winsorizing. - Distribusi label: catat proporsi churn vs loyal. Jika imbalance besar (mis. churn < 20%), gunakan strategi evaluasi dan sampling yang sesuai.
Penanganan Missing Value
Untuk numerik, gunakan median (lebih tahan terhadap outlier). Untuk kategori, gunakan modus atau label 'Unknown'. Contoh:
df['monthly_charges'].fillna(df['monthly_charges'].median(), inplace=True)
Encoding Fitur Kategori
Untuk model yang tidak menerima teks, ubah kategori ke numerik:
- One-Hot Encoding: untuk kategori nominal dengan sedikit tingkat (contract_type, payment_method).
- Label Encoding / Ordinal: untuk kategori ordinal (jika ada).
Scaling
Scaling wajib untuk KNN. StandardScaler atau MinMaxScaler umum digunakan. Decision Tree dan Random Forest tidak memerlukan scaling, tapi memakai pipeline yang konsisten memudahkan replikasi eksperimen.
Model 1 — K-Nearest Neighbors (KNN)
KNN adalah metode berbasis instance: prediksi dibuat dengan melihat tetangga terdekat pada ruang fitur (jarak Euclidean umumnya). Langkah praktis:
- Gunakan pipeline: scaling → KNN.
- Lakukan GridSearch sederhana di rentang K = [3, 5, 7, 9, 11].
- Gunakan cross-validation (mis. 5-fold) untuk memilih K terbaik.
Kelebihan: mudah, cepat diterapkan untuk dataset kecil; Kekurangan: lambat saat inferensi untuk dataset besar, sensitif terhadap skala fitur, kurang bagus untuk data berdimensi tinggi.
Model 2 — Decision Tree
Decision Tree memecah fitur berdasarkan aturan yang meminimalkan impurity (Gini atau Entropy). Langkah praktis:
- Latih DecisionTreeClassifier dengan cross-validation.
- Coba hyperparameter:
max_depth,min_samples_leaf,criterion. - Untuk interpretasi, plot pohon dengan depth terbatas agar mudah dibaca.
Decision Tree mudah dipahami, cocok untuk menjelaskan keputusan ke pihak non-teknis, namun rawan overfitting kalau tidak dipangkas.
Model 3 — Random Forest
Random Forest menggabungkan banyak Decision Tree yang dilatih pada bootstrap sample. Hal ini menurunkan varians model dan umumnya meningkatkan performa.
- Gunakan RandomForestClassifier.
- Coba
n_estimators= 100 atau 200, danmax_features= 'sqrt'. - Periksa
feature_importances_untuk melihat fitur mana yang paling berkontribusi.
Metrik Evaluasi yang Penting
Karena dataset churn biasanya tidak seimbang, jangan hanya mengandalkan akurasi. Gunakan metrik-metrik berikut:
- Accuracy — (TP + TN)/Total. Berguna sebagai gambaran umum.
- Precision — TP / (TP + FP). Dari prediksi churn, seberapa banyak benar.
- Recall (Sensitivity) — TP / (TP + FN). Dari pelanggan yang benar-benar churn, berapa yang terdeteksi.
- F1-score — harmonic mean precision dan recall.
- AUC-ROC — area under ROC curve, menunjukkan kemampuan model membedakan antar kelas independen dari threshold.
- Confusion Matrix — visual dan kuantitatif untuk melihat distribusi prediksi (TP, FP, TN, FN).
Contoh Tabel Hasil Eksperimen (Ilustrasi)
Berikut tabel contoh hasil setelah melakukan training dan evaluasi pada dataset dummy. Angka di bawah hanya ilustrasi; ganti dengan hasil eksperimenmu.
| Model | Akurasi | Precision (churn) | Recall (churn) | F1-score | AUC | Catatan |
|---|---|---|---|---|---|---|
| KNN (k=7) | 0.82 | 0.69 | 0.58 | 0.63 | 0.78 | Butuh scaling; lambat pada data besar |
| Decision Tree (max_depth=6) | 0.85 | 0.72 | 0.66 | 0.69 | 0.80 | Mudah dijelaskan; sedikit overfit |
| Random Forest (n=100) | 0.88 | 0.76 | 0.71 | 0.73 | 0.86 | Performa paling stabil |
Analisis Hasil (Interpretasi Praktis)
Dari hasil ilustratif di atas, Random Forest memberikan kombinasi precision dan recall terbaik. Interpretasinya:
- Recall tinggi pada Random Forest berarti model lebih mampu menangkap pelanggan yang memang churn — berguna jika tujuan bisnis adalah menurunkan churn dengan intervensi.
- Precision menunjukkan seberapa sering model benar saat memprediksi churn. Precision rendah berarti banyak false alarm — perusahaan bisa mengeluarkan biaya untuk menindaklanjuti pelanggan yang sebenarnya loyal.
- F1 adalah kompromi antara precision dan recall. Pilih metrik sesuai tujuan: jika tujuan utama menangkap sedapat mungkin churn, fokus ke recall; jika ingin mengurangi false positive, fokus ke precision.
Langkah Tambahan: Menangani Ketidakseimbangan Kelas
Jika proporsi churn sangat kecil, pertimbangkan:
- Sampling: oversampling (SMOTE) untuk menambah contoh minoritas, atau undersampling untuk mengurangi mayoritas.
- Penyesuaian class_weight: pada model seperti RandomForestClassifier set
class_weight='balanced'. - Evaluasi berbasis threshold: selain metrik global, pertimbangkan precision-recall curve.
Contoh Alur Kerja Kode (Pseudocode)
Berikut pseudocode ringkas yang bisa kamu ikuti di Google Colab. (Untuk laporan praktikum, kamu bisa menempelkan kode Python lengkap di lampiran.)
1. import pandas as pd, numpy as np
2. df = pd.read_csv('data_churn.csv')
3. df.drop('customer_id', axis=1, inplace=True)
4. df.fillna(...) # imputasi
5. df = pd.get_dummies(df, columns=['contract_type','payment_method'])
6. from sklearn.model_selection import train_test_split
7. X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, test_size=0.2)
8. # KNN pipeline
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
pipe_knn = Pipeline([('scaler', StandardScaler()), ('knn', KNeighborsClassifier())])
9. # Grid search K
from sklearn.model_selection import GridSearchCV
params = {'knn__n_neighbors':[3,5,7,9]}
GridSearchCV(pipe_knn, params, cv=5)
10. # Decision Tree
from sklearn.tree import DecisionTreeClassifier
11. # Random Forest
from sklearn.ensemble import RandomForestClassifier
12. # Train, predict, evaluate: confusion_matrix, classification_report, roc_auc_score
13. # Simpan hasil prediksi:
hasil = X_test.copy()
hasil['y_true'] = y_test
hasil['y_pred'] = y_pred
hasil.to_csv('hasil_prediksi.csv', index=False)
Menyimpan dan Membagikan Hasil
Untuk keperluan laporan, simpan hasil prediksi dan metrik ke dalam CSV. Di Google Colab, kamu bisa mount Google Drive dan menyimpan file hasil agar mudah diakses kembali:
from google.colab import drive; drive.mount('/content/drive')
hasil.to_csv('/content/drive/MyDrive/Praktikum/hasil_churn.csv', index=False)
Rekomendasi Praktis untuk Perusahaan
Hasil model bukan hanya angka. Berikut rekomendasi yang bisa diambil dari eksperimen churn:
- Segmentasi pelanggan berisiko: gunakan prediksi untuk mengklasifikasikan pelanggan dengan skor risiko tinggi dan tawarkan insentif retensi khusus.
- Fokus fitur: jika feature importance menunjukkan bahwa tenure dan contract_type adalah faktor utama, perusahaan bisa menyusun strategi promo untuk pelanggan baru (mis. diskon di bulan-bulan awal)
- Monitoring model: performa model bisa menurun seiring waktu (concept drift). Jadwalkan retraining periodik dengan data terbaru.
Hal-hal yang Perlu Diwaspadai
Beberapa hal yang sering terlewatkan saat praktikum:
- Leakage: hindari fitur yang mengandung informasi tentang masa depan (mis. tagihan terakhir yang dibuat setelah churn terjadi).
- Evaluasi pada data yang relevan: jika bisnis berubah (harga naik, paket baru), model lama mungkin tidak lagi representatif.
- Interpretasi koefisien: hanya Decision Tree sederhana atau model linear mudah ditafsirkan; ensemble memerlukan alat interpretasi tambahan seperti SHAP.
Contoh Ringkasan Laporan (Bisa Kamu Salin)
Di bawah ini contoh ringkasan yang bisa langsung dimasukkan ke laporan praktikum:
Abstrak: Praktikum ini mengeksplorasi pembuatan model prediksi churn pelanggan menggunakan KNN, Decision Tree, dan Random Forest. Dataset dummy yang digunakan merepresentasikan data pelanggan berlangganan. Setelah pra-pemrosesan dan cross-validation, Random Forest menunjukkan performa terbaik pada metrik F1 dan AUC. Rekomendasi diberikan untuk deployment model, penanganan class imbalance, dan tindak lanjut bisnis.
Metode: Data dibersihkan, fitur kategorial diencoding, dan numerik dinormalisasi untuk KNN. Split data 80/20 dengan stratified sampling. Hyperparameter tuning dilakukan untuk tiap model menggunakan GridSearchCV sederhana.
Hasil: Random Forest memberikan F1-score 0.73 dan AUC 0.86 (contoh). Decision Tree relatif mudah diinterpretasikan, KNN cocok sebagai baseline.
Kesimpulan: Random Forest direkomendasikan untuk sistem prediksi churn operasional, namun Decision Tree dipakai untuk menjelaskan aturan bisnis kepada manajemen.
Referensi & Bacaan Lanjutan
- Scikit-learn documentation — KNN, Decision Tree, Random Forest
- Artikel tentang SMOTE dan teknik sampling untuk imbalance data
- Materi interpretasi model: SHAP, LIME
- Buku: Hands-On Machine Learning with Scikit-Learn, Keras & TensorFlow (untuk pendalaman)
Penutup
Praktikum prediksi churn ini menyajikan alur kerja yang realistis: dari mempersiapkan data yang rapi sampai menguji beberapa model dan menafsirkan hasilnya untuk keputusan bisnis. Inti keberhasilan bukan cuma model yang punya angka tinggi, melainkan kemampuan menerjemahkan hasil menjadi kebijakan nyata yang bisa menahan pelanggan dari pergi.
Kalau kamu mau, aku bisa:
- Menyisipkan contoh kode Python lengkap (siap jalan di Google Colab) sebagai lampiran.
- Mengubah gaya jadi lebih formal atau lebih santai.
- Menambahkan grafik contoh (ROC, confusion matrix) dan mengekspor ke gambar .png yang siap diupload ke Blogspot.
- Membuat versi PDF atau DOCX dari artikel ini.
Disusun oleh: Muhammad Rifaldi
Program Studi: Ml Dan Machine Learning
Untuk kode lengkap dari praktikum ini (termasuk pembuatan dataset, model regresi sederhana, model regresi berganda, evaluasi, dan penyimpanan file CSV), dapat diakses melalui tautan berikut:
➡️ Klik di sini untuk membuka file Google Drive (kode praktikum lengkap)
Disusun oleh: [Muhammad Rifaldi] - [20232010011]
Program Studi: [Bisnis Digital], Universitas Kuningan

Posting Komentar