Targeting the Right Customers: A Cost-Optimized Machine Learning Approach for Telco Churn Prediction
Sebuah proyek analitik data dan machine learning end-to-end yang bertujuan untuk memprediksi probabilitas pelanggan aktif di sebuah perusahaan telekomunikasi yang berisiko berhenti berlangganan (churn) di masa depan
| No | Feature | Data Type | Description |
|---|---|---|---|
| 1 | Dependents | object | Menunjukkan apakah pelanggan memiliki tanggungan atau tidak |
| 2 | tenure | int64 | Jumlah bulan pelanggan telah menggunakan layanan perusahaan |
| 3 | OnlineSecurity | object | Menunjukkan apakah pelanggan memiliki layanan keamanan online atau tidak |
| 4 | OnlineBackup | object | Menunjukkan apakah pelanggan memiliki layanan pencadangan (backup) online atau tidak |
| 5 | InternetService | object | Menunjukkan apakah pelanggan berlangganan layanan internet atau tidak |
| 6 | DeviceProtection | object | Menunjukkan apakah pelanggan memiliki layanan perlindungan perangkat atau tidak |
| 7 | TechSupport | object | Menunjukkan apakah pelanggan memiliki layanan dukungan teknis atau tidak |
| 8 | Contract | object | Jenis kontrak pelanggan berdasarkan durasi atau jangka waktu layanan |
| 9 | PaperlessBilling | object | Menunjukkan apakah tagihan pelanggan dikirim dalam bentuk digital (tanpa kertas) |
| 10 | MonthlyCharges | float64 | Jumlah biaya layanan yang dibayarkan pelanggan setiap bulan |
| 11 | Churn | object | Menunjukkan apakah pelanggan berhenti menggunakan layanan (churn) atau tetap menggunakan layanan |
Sebuah perusahaan telekomunikasi (Telco) penyedia layanan telepon rumah dan broadband internet menghadapi tingginya tingkat pembatalan layanan pelanggan (churn). Kondisi ini menjadi tantangan serius karena mempertahankan pelanggan yang sudah ada jauh lebih hemat biaya dibandingkan mengakuisisi pelanggan baru. Oleh karena itu, perusahaan perlu mengidentifikasi dan memprediksi pelanggan yang berpotensi berhenti berlangganan agar dapat menerapkan strategi retensi yang lebih proaktif (mencegah pelanggan berhenti sebelum hal itu terjadi). Dengan tujuan untuk menyelamatkan sebanyak mungkin pelanggan dari risiko churn, perusahaan akan melakukan intervensi dini secara masif dan terukur, seperti pemberian diskon atau penawaran bundling khusus. Untuk mendukung upaya tersebut perusahaan memiliki data pelanggan yang mencakup informasi tanggungan pelanggan, durasi berlangganan, layanan internet dan layanan tambahan yang digunakan, jenis kontrak, metode penagihan, serta biaya bulanan pelanggan
Target:
- No : Pelanggan tidak berhenti berlangganan (Retained)
- Yes : Pelanggan berhenti berlangganan (Churn)
Di industri telco, biaya akuisisi pelanggan baru jauh lebih mahal dibandingkan mempertahankan pelanggan yang sudah ada. Oleh karena itu, prioritas utama perusahaan adalah mencegah hilangnya pelanggan (churn) semaksimal mungkin. Setiap kegagalan dalam mendeteksi pelanggan yang akan churn berarti kerugian pendapatan bulanan
Namun, langkah penyelamatan ini tidak boleh dilakukan secara membabi buta. Memberikan program retensi (seperti diskon atau promo) secara asal-asalan akan menggerus margin keuntungan, karena anggaran berisiko terbuang sia-sia kepada pelanggan yang sebenarnya sudah loyal dan bersedia membayar harga penuh
Bagaimana membangun sistem deteksi dini yang memiliki kepekaan tinggi untuk menyelamatkan sebanyak mungkin pelanggan yang berisiko churn, namun tetap cukup presisi untuk menyaring pelanggan loyal agar efisiensi anggaran promosi tetap terjaga?
- Prediksi Risiko Churn: Membangun model Machine Learning dengan kepekaan tinggi untuk memprediksi sebanyak mungkin pelanggan yang berisiko churn, sekaligus menjaga tingkat presisi agar alokasi anggaran retensi perusahaan tidak terbuang sia-sia
- Identifikasi Faktor Pendorong: Mengidentifikasi faktor utama yang memengaruhi churn atau loyalitas pelanggan, seperti penggunaan Fiber Optic, masa kontrak, dan layanan tambahan
Jadi yang akan kita lakukan adalah menganalisis data profil pelanggan (Exploratory Data Analysis) untuk menemukan pola perilaku, layanan, dan kontrak yang membedakan pelanggan yang setia bertahan dengan pelanggan yang memutuskan untuk berhenti berlangganan
Kemudian kita akan membangun model klasifikasi Machine Learning yang akan membantu perusahaan untuk dapat memprediksi probabilitas seorang pelanggan aktif akan melakukan churn atau tidak di masa depan. Model ini nantinya akan diintegrasikan ke dalam dashboard operasional untuk digunakan oleh tim Marketing dan Finance. Model akan dijalankan secara periodik setiap akhir siklus penagihan bulanan untuk melakukan scoring risiko terhadap seluruh pelanggan aktif sehingga pelanggan yang terdeteksi masuk dalam zona churn dapat segera diberikan program retensi
- Type 1 error : False Positive
Pelanggan sebenarnya setia, tapi model memprediksi mereka akan pergi, sehingga mereka tidak sengaja diberi diskon
Dampak Bisnis:
- Inefisiensi Anggaran Retensi:Anggaran perusahaan yang seharusnya untuk pengembangan produk atau akuisisi pelanggan malah habis memberi insentif kepada pihak yang tidak tepat
- Erosi Margin Keuntungan: Memberikan diskon atau layanan gratis kepada pelanggan yang sebenarnya mau membayar penuh hanya akan memangkas margin keuntungan perusahaan tanpa alasan yang jelas
- Type 2 error : False Negative
Pelanggan sebenarnya akan pergi, tapi model memprediksi mereka setia, sehingga perusahaan diam saja dan kebobolan
Dampak Bisnis:
- Kehilangan Revenue: Dampak paling fatalnya adalah hilangnya arus kas bulanan tetap yang menjadi sumber pendapatan utama perusahaan
- Pembengkakan Biaya Akuisisi: Kehilangan satu pelanggan bisa menimbulkan biaya jauh lebih besar dibanding memberi promo retensi karena tingginya biaya akuisisi pelanggan baru (iklan, sales, pemasangan alat keras atau kabel awal)
Tujuan utama model ini adalah memaksimalkan deteksi pelanggan yang berisiko churn (Recall tinggi) untuk mencegah kehilangan pendapatan perusahaan. Di sisi lain, model juga perlu menjaga Precision agar jumlah pelanggan setia yang salah sasaran dalam menerima program retensi tetap rendah sehingga anggaran promosi dapat digunakan secara efisien
Oleh karena itu, evaluasi model akan menggunakan F2-Score sebagai metrik utama karena metrik ini memberikan bobot yang lebih besar pada Recall dibandingkan Precision. Pemilihan F2-Score didasarkan pada kondisi bahwa dampak finansial akibat kehilangan pelanggan (False Negative) lebih besar dibandingkan biaya pemberian promo kepada pelanggan yang sebenarnya tidak churn (False Positive). Dengan demikian, model diharapkan lebih mampu mengidentifikasi pelanggan yang berpotensi churn sehingga risiko kehilangan pelanggan dapat diminimalkan
| Model | Threshold | Precision Test | Recall Test | F1 Test | F2 Test | Best Parameters |
|---|---|---|---|---|---|---|
| AdaBoost [F2 Threshold: 0.51] | 0.506731 | 0.450467 | 0.916350 | 0.604010 | 0.759294 | {'base_max_depth': 1, 'base_min_samples_split': 15, 'base_min_samples_leaf': 18, 'base_criterion': 'entropy', 'base_max_features': 'sqrt', 'n_estimators': 100, 'learning_rate': 0.015395510313850546} |
- Cost Retention: $15
- Customer Acquisition Cost: $223
| Skenario | Total Biaya | Keterangan |
|---|---|---|
| Without Model — Tidak Memberikan Promo | $58,649.00 | Kehilangan 263 pelanggan churn |
| Without Model — Promo ke Semua Pelanggan | $14,790.00 | Promo diberikan kepada 986 pelanggan |
| With Model — False Positive Cost | $4,410.00 | Biaya promo salah sasaran kepada 294 pelanggan loyal yang diprediksi churn |
| With Model — False Negative Cost | $4,906.00 | Potensi kehilangan revenue akibat 22 pelanggan churn yang gagal terdeteksi |
| With Model — True Positive Cost | $3,615.00 | Biaya promo retensi kepada 241 pelanggan churn yang berhasil terdeteksi |
| Total Biaya Aktual Menggunakan Model | $12,931.00 | Total biaya setelah implementasi model |
| Metrik Efisiensi | Nominal Penghematan | Persentase |
|---|---|---|
| Penghematan dibandingkan tanpa promo | $45,718.00 | 77.95% |
| Penghematan dibandingkan promo ke semua pelanggan | $1,859.00 | 12.57% |
- Berdasarkan hasil evaluasi cost-based analysis, penggunaan model churn prediction menghasilkan total biaya bisnis sebesar $12,931. Nilai tersebut memberikan penghematan sebesar $45,718 (77.95%) dibandingkan skenario tanpa promo (Do Nothing) yang memiliki biaya $58,649, serta menghemat $1,859 (12.57%) dibandingkan strategi pemberian promo kepada seluruh pelanggan (Mass Campaign) dengan biaya $14,790. Hasil ini menunjukkan bahwa model mampu meningkatkan efisiensi strategi retensi pelanggan dengan mengarahkan promo kepada pelanggan yang memiliki risiko churn lebih tinggi
- Faktor yang paling mendorong pelanggan melakukan churn didominasi oleh penggunaan contract jangka pendek, tenure yang rendah, biaya langganan yang tinggi, serta penggunaan layanan internet fiber optic. Sebaliknya, pelanggan dengan contract jangka panjang, tenure yang lebih tinggi, biaya langganan yang relatif lebih rendah, dan layanan internet selain fiber optic cenderung memiliki probabilitas churn yang lebih rendah dan menunjukkan tingkat loyalitas yang lebih baik
- Strategi promo bundling dapat menurunkan churn rate pelanggan, terutama pada pelanggan berisiko tinggi seperti pengguna Fiber Optic dengan kontrak Month-to-month, dimana churn rate berhasil turun dari 60.98% menjadi 31.67% setelah penambahan layanan OnlineSecurity dan TechSupport. Selain itu, semakin banyak add-on layanan yang digunakan pelanggan, churn rate juga semakin rendah, dari 56.71% pada pelanggan tanpa add-on menjadi hanya 4.88% pada pelanggan dengan 4 add-on bahkan pada bundling escalation hingga 0,86%. Hasil ini menunjukkan bahwa bundling layanan tambahan tidak hanya meningkatkan loyalitas pelanggan, tetapi juga memperkuat retensi dan mendorong pelanggan untuk mempertahankan langganan dalam jangka waktu yang lebih lama
- Model AdaBoost dengan kombinasi SMOTENC, Optuna, dan threshold optimization berhasil memberikan performa optimal dalam mendeteksi churn dengan Recall 91.64% (0.91635), Precision 45.05% (0.45046), dan F2-Score 75.93% (0.75929) pada threshold 0.51. Pendekatan ini membuat model lebih sensitif dalam mendeteksi pelanggan churn dan selaras dengan tujuan bisnis untuk meminimalkan kehilangan pelanggan (false negative)
- Meskipun model AdaBoost ini sangat efektif dalam mengidentifikasi pelanggan yang berisiko churn, salah satu limitasi utama dari pendekatan ini adalah asumsi efektivitas penanganan (treatment). Model saat ini memprediksi probabilitas churn secara statis, namun belum mampu memprediksi probabilitas keberhasilan promo retensi terhadap pelanggan tersebut. Oleh karena itu, efisiensi finansial dilapangan akan sangat bergantung pada seberapa tinggi tingkat keberhasilan (success rate) dari kampanye promosi yang dieksekusi oleh tim bisnis
- Perusahaan perlu meningkatkan pelacakan data operasional yang lebih detail. Hal ini mencakup perekaman identitas pelanggan unik (Customer ID), data riwayat komplain teknis (terutama untuk pelanggan Fiber Optic), serta pelacakan historis konversi promo masa lalu. Data tambahan ini akan sangat meningkatkan akurasi model di masa depan*
- Tim Pemasaran dan Produk harus segera merancang A/B Testing berdasarkan temuan model ini. Pelanggan yang masuk dalam High Priority (Expected Revenue Loss tinggi) harus diuji dengan Anti-Churn Bundling atau Escalation Bundling untuk memvalidasi conversion rate aktual. Selain itu, tim operasional wajib melakukan audit kualitas layanan (Quality of Service) secara khusus pada jaringan Fiber Optic karena tingginya sensitivitas harga dan risiko churn pada segmen premium ini
- Perusahaan disarankan untuk beralih dari sekadar Churn Prediction menuju Uplift Modeling. Model lanjutan ini tidak hanya akan memprediksi siapa yang akan churn, tetapi juga memprediksi apakah pelanggan tersebut akan berubah pikiran jika diberikan promo, sehingga anggaran retensi dapat disalurkan dengan tingkat efisiensi (ROI) yang jauh lebih maksimal
- Business Understanding:
- Latar Belakang
- Problem Statement
- Goals
- Analytic Approach
- Evaluation Matriks
- Data Understanding:
- Missing Value
- Duplicate Data
- Imbalance Data
- EDA (Relationship Variables, Estimate Price, Customers Characteristics, Bundling, Error Type Pricing Analysis, Noise, Multikolinearitas)
- Data Preprocessing:
- Characteristics Models
- Feature Engineering
- Define X and y
- Splitting Data
- Pipeline
- Oversampling
- Modeling & Evaluation:
- Benchmark Models
- Setting CV
- Training - Validation - Testing Baseline
- Hyperparameter Tuning
- Threshold
- Business Impact & Model Efficiency
- Priority Intervention
- Feature Importance
- SHAP Interpretation
- Deployment:
- Export Model
| Category | Libraries | Function |
|---|---|---|
| Built-in Python | math, time, warnings, pickle |
Utility functions, execution timing, warning handling, and model serialization |
| Data Manipulation | numpy, pandas |
Numerical computation, data transformation, and tabular data processing |
| Data Visualization | matplotlib, seaborn |
Exploratory data analysis and visualization |
| Explainable AI | shap |
Model interpretability and feature contribution analysis |
| Data Preprocessing | LabelEncoder, OneHotEncoder, OrdinalEncoder, StandardScaler, ColumnTransformer |
Encoding categorical variables, feature scaling, and preprocessing pipelines |
| Dimensionality Reduction | PCA |
Feature extraction and dimensionality reduction |
| Model Selection & Validation | train_test_split, StratifiedKFold, cross_validate, cross_val_predict |
Data splitting, stratified cross-validation, and model validation |
| Evaluation Metrics | accuracy_score, precision_score, recall_score, f1_score, fbeta_score, confusion_matrix, precision_recall_curve, PrecisionRecallDisplay, ConfusionMatrixDisplay |
Model performance evaluation and visualization |
| Tree-Based Models | DecisionTreeClassifier, RandomForestClassifier, GradientBoostingClassifier, AdaBoostClassifier |
Classification models based on decision trees and ensemble learning |
| Gradient Boosting Models | XGBClassifier, LGBMClassifier |
Advanced boosting algorithms for predictive modeling |
| Imbalanced Learning | SMOTENC, EditedNearestNeighbours, TomekLinks, ImbPipeline |
Oversampling, data cleaning, and pipeline construction for imbalanced datasets |
| Hyperparameter Optimization | optuna |
Automated hyperparameter tuning and optimization |
| Statistical Analysis | variance_inflation_factor, scipy, statsmodels.api |
Multicollinearity analysis, statistical testing, and regression diagnostics |
pip install numpy pandas matplotlib seaborn shap scikit-learn xgboost lightgbm imbalanced-learn optuna statsmodels scipy