Praktikum Modul 5 Klasifikasi Mengenal Pola Dalam Data

Daftar Isi

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_idID unik pelanggan (hapus sebelum modeling)
genderJenis kelamin
ageUsia
tenureLama berlangganan (bulan)
monthly_chargesBiaya bulanan
contract_typeJenis kontrak (Month-to-month, One year, Two year)
payment_methodMetode pembayaran
support_callsJumlah panggilan ke customer support
churnLabel 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.

  1. Persiapan lingkungan: buka Google Colab, import pandas, numpy, matplotlib, seaborn (opsional), scikit-learn.
  2. Load data: baca file CSV / dataset dummy dan lakukan eksplorasi awal.
  3. Exploratory Data Analysis (EDA): cek dimensi, tipe data, nilai hilang, statistik deskriptif, distribusi label (churn vs loyal).
  4. Pra-pemrosesan: isi missing value, encoding kategori, scaling numerik, hapus kolom id.
  5. Split data: stratified train-test split (mis. 80% train, 20% test).
  6. Modeling: buat pipeline untuk KNN, Decision Tree, Random Forest; lakukan cross-validation dan hyperparameter tuning sederhana.
  7. Evaluasi: hitung confusion matrix, precision, recall, F1-score, dan AUC-ROC pada test set.
  8. Interpretasi: periksa feature importance (Random Forest) dan aturan (Decision Tree).
  9. 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_charges dan tenure. 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:

  1. Gunakan pipeline: scaling → KNN.
  2. Lakukan GridSearch sederhana di rentang K = [3, 5, 7, 9, 11].
  3. 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:

  1. Latih DecisionTreeClassifier dengan cross-validation.
  2. Coba hyperparameter: max_depth, min_samples_leaf, criterion.
  3. 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.

  1. Gunakan RandomForestClassifier.
  2. Coba n_estimators = 100 atau 200, dan max_features = 'sqrt'.
  3. 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