Profile

Arya's Portfolio

Back to Projects
Big Data Pipeline for Churn Prediction

Big Data Pipeline for Churn Prediction

Membangun distributed pipeline berbasis PySpark (Medallion Architecture) untuk membedah silent attrition dan limitasi model prediktif pada marketplace non-kontraktual.

PySparkMedallion ArchitectureRandom Under SamplingLogistic RegressionRandom ForestXGBoostK-Fold Cross ValidationSHAP
Live Interactive Demo

Overview

Proyek ini mengeksplorasi tantangan besar dalam memprediksi customer churn pada platform e-commerce non-contractual menggunakan dataset Olist Brazilian E-Commerce. Berbeda dengan bisnis berbasis langganan (contractual), platform marketplace tidak memiliki indikator loyalitas eksplisit seperti masa keanggotaan (tenure) atau riwayat pemutusan layanan. Pelanggan berhenti belanja tanpa melakukan pembatalan formal, sebuah fenomena yang dikenal sebagai silent attrition.
Tujuan utama proyek kelompok ini adalah membangun distributed data pipeline yang scalable menggunakan PySpark sekaligus menguji secara empiris sejauh mana fitur transaksional statis mampu memprediksi perilaku churn yang ekstrem pada ekosistem marketplace raksasa.

My Role

Sebagai pengembang utama dalam proyek tim ini, saya memegang tanggung jawab pada arsitektur end-to-end:
  • Merancang dan mengeksekusi Big Data pipeline menggunakan Medallion Architecture (Bronze, Silver, Gold Layer) berbasis PySpark DataFrame.
  • Merumuskan label churn secara objektif dengan menganalisis Inter-Purchase Interval dan Cumulative Distribution Function (CDF), menggantikan penentuan threshold arbitrer.
  • Menyusun Customer Feature Mart pada Gold Layer dengan pembersihan data tingkat lanjut (standardisasi teks regex dan capping outlier IQR).
  • Mengimplementasikan pipeline machine learning terisolasi menggunakan library imblearn untuk mengatasi extreme class imbalance tanpa memicu data leakage.
  • Melakukan evaluasi model menggunakan K-Fold Cross Validation dan membedah kausalitas keputusan model via interpretasi SHAP (SHapley Additive exPlanations).

Engineering the Distributed Pipeline

Data mentah Olist terdiri dari banyak tabel relasional yang saling terhubung. Untuk memproses data transaksional berskala besar ini secara efisien, saya merancang arsitektur pipeline terdistribusi yang dibagi menjadi tiga lapisan logis:
Arsitektur Pipeline

1. Bronze Layer (Raw Ingestion)

Fase pemuatan awal data mentah (raw data) dari file CSV langsung ke dalam lingkungan distributed computing PySpark. Saya mendefinisikan eksklisit skema (explicit schema) menggunakan StructType dan StructField pada tiap tabel (Orders, Items, Payments, Customers, Products, Reviews). Langkah ini wajib dilakukan untuk memaksa konsistensi tipe data di seluruh node cluster dan mencegah kesalahan inferensi otomatis oleh Spark.
ERD Olist Database

2. Silver Layer (Cleanse, Transform & Labeling)

Lapisan ini menjadi tempat pemrosesan berat dieksekusi secara paralel:
  • Cleansing & Standardisasi: Penanganan encoding error nama kota pada tabel geolocations menggunakan ekspresi reguler (Regex) untuk menghilangkan karakter beraksen bahasa Portugis dan mengubah teks menjadi lowercase. Outlier ekstrem pada fitur price dan freight_value yang bersifat right-skewed ditangani dengan metode capping berbasis Interquartile Range (IQR). Missing values diimputasi menggunakan nilai median.
  • Formulasi Churn Empiris: Mengingat pelanggan bebas pergi kapan saja, status churn harus didefinisikan secara ilmiah. Saya menganalisis distribusi jarak antar-pembelian (Inter-Purchase Interval) dari kelompok pelanggan yang bertransaksi lebih dari satu kali (repeat buyers). Berdasarkan analisis visual histogram dan kurva CDF, diperoleh data bahwa persentil ke-80 (P80) berada di angka 165 hari. Dengan dasar data empiris tersebut, saya menetapkan batas 180 hari sebagai zona penyangga konservatif untuk churn threshold. Jika pelanggan tidak bertransaksi dalam waktu 180 hari sejak pesanan terakhir sebelum tanggal cut-off (1 Maret 2018), mereka diberi label Churn (1). Jika kembali berbelanja di jendela prediksi, mereka diberi label Active (0).
    Inter-Purchase Interval Histogram
    Inter-Purchase Interval Histogram
    CDF Curve
    Kurva CDF

3. Gold Layer (Customer Feature Mart)

Data transaksional level Silver yang tersebar kemudian diagregasikan secara granular ke level pelanggan unik berbasis customer_unique_id. Di tahap ini, fitur-fitur perilaku dibentuk, seperti frequency, monetary, freight_ratio, purchased_delivered (durasi pengiriman), dan review_score. Variabel recency sengaja dikeluarkan secara ketat dari matriks fitur final. Ini merupakan langkah krusial untuk menghindari target leakage, karena recency merupakan komponen utama yang membangun label target churn itu sendiri.

Simple Beats Complex (Modelling)

Eksplorasi data deskriptif menunjukkan karakteristik alami platform Olist yang sangat brutal: 97,02% pelanggan adalah one-time buyer. Akibatnya, dataset akhir mengalami ketidakseimbangan kelas yang ekstrem (extreme class imbalance) dengan proporsi kelas target sebesar 98,84% Churn dan hanya 1,16% Active.
Untuk mengatasinya, saya mengintegrasikan teknik Random Under-Sampling (RUS) langsung di dalam pipeline pelatihan. Proses sampling ini diisolasi secara ketat di dalam lipatan cross-validation agar data uji tetap mencerminkan rasio populasi asli, menjaga validitas evaluasi.
Pengujian performa model dilakukan melalui metode 5-Fold Stratified Cross-Validation dengan hasil evaluasi global sebagai berikut:
ModelAccuracyPrecision MacroRecall MacroF1-Score MacroROC-AUC
Logistic Regression0.570.500.560.370.60
Random Forest0.560.500.540.370.57
XGBoost0.540.500.520.360.56

Analisis Kegagalan Model Ensemble

Hasil di atas menyajikan paradoks yang menarik: algoritma ensemble learning kompleks seperti XGBoost dan Random Forest justru mencatatkan performa yang lebih rendah dibanding model linier sederhana.
Kondisi ini terjadi karena intervensi teknik RUS memangkas kelas mayoritas (churn) secara masif agar seimbang dengan kelas minoritas yang hanya berjumlah ratusan sampel. Penyusutan ruang data yang drastis ini memaksa algoritma berbasis pohon (tree-based) yang kompleks untuk mencari batas keputusan pada data yang sangat terbatas, memicu terjadinya overfitting parah. Sebaliknya, Logistic Regression yang bertumpu pada tarikan batas keputusan (decision boundary) linier yang kaku memiliki keunggulan inheren berupa low-variance. Karakteristik model linier ini membuatnya jauh lebih tangguh dan memberikan performa generalisasi yang lebih baik pada ruang data yang menyusut dan penuh noise.

Explainable AI (SHAP Deep Dive)

Akurasi global yang rendah menuntut analisis transparansi model untuk memahami bagaimana variabel memengaruhi prediksi. Saya menerapkan pendekatan SHAP menggunakan LinearExplainer pada model terbaik (Logistic Regression) untuk membedah Global Feature Importance dan arah kausalitas fitur.
SHAP Global Feature Importance
Analisis dampak absolut menunjukkan bahwa durasi dari pemesanan hingga disetujui (purchased_approved), skor ulasan pelanggan (review_score), dan wilayah tempat tinggal pelanggan (customer_state_northeastern) menjadi tiga variabel paling dominan yang memandu arah prediksi model.
Ketika dibedah menggunakan Beeswarm Summary Plot, mekanisme keputusan linier model terlihat sangat jelas:
SHAP Summary Plot
  • purchased_approved: Sebagai fitur paling berpengaruh, pemisahan warnanya terbagi secara konsisten. Nilai fitur yang tinggi (warna merah, merepresentasikan proses approval transaksi yang lambat) berkorelasi positif dengan SHAP value. Hal ini membuktikan secara empiris bahwa bottleneck pada fase pemrosesan awal transaksi secara linear meningkatkan probabilitas model untuk memprediksi Churn (1).
  • avg_items_per_order & frequency: Karakteristik visual kedua fitur ini sangat unik karena memiliki ekor pencilan (outlier) berwarna merah cerah yang ditarik jauh ke area negatif (SHAP value mendekati -3). Pola ini mengindikasikan efek penekan churn yang sangat agresif. Pelanggan yang membeli komoditas dalam volume besar dalam sekali transaksi, atau pelanggan yang memiliki frekuensi belanja tinggi, memiliki resistensi instan yang sangat kuat terhadap risiko churn.

Strategic Engineering & Business Takeaway

Rendahnya nilai metrik evaluasi global secara menyeluruh (ROC-AUC tertahan di angka 0.60) memberikan kesimpulan ilmiah yang sangat berharga. Fitur transaksional statis (histori pembelian masa lalu) pada platform non-kontraktual memiliki kekuatan prediktif (predictive power) yang lemah untuk mengidentifikasi customer churn melalui pendekatan klasifikasi biner. Perilaku belanja pelanggan marketplace terlalu dinamis untuk didekati menggunakan label biner "ya atau tidak" dalam rentang waktu statis.
Sebagai rekomendasi arsitektur dan bisnis, paradigma analitik Olist harus diubah secara total. Pengelolaan data ke depan harus dialihkan dari klasifikasi biner biasa menuju permodelan probabilistik waktu-ke-peristiwa (time-to-event modeling) menggunakan pendekatan Survival Analysis atau model Buy-Till-You-Die (BTYD) seperti BG/NBD untuk mencari kelompok pelanggan minoritas yang memiliki Propensity to Repeat Purchase.
Pembahasan lebih detail mengenai proyek ini bisa dicek di sini:
Paper Penerapan Big Data pada Olist Brazilian E-Commerce