Bu proje, bir telekomünikasyon şirketindeki müşteri kayıplarını (Churn) makine öğrenmesi yöntemleriyle tahmin etmek ve önlemek amacıyla geliştirilmiştir. Veri setinden canlı tahmin arayüzüne kadar uçtan uca (End-to-End) bir yapı kurulmuştur.
- Final Model Skoru (AUC): 0.8461 (XGBoost)
- Canlı Arayüz: Streamlit ile geliştirilmiş web arayüzü.
- Kullanılan Teknolojiler: Python, Pandas, Scikit-learn, XGBoost, Streamlit.
Telco sektöründe müşteri kaybı (Churn), şirket gelirlerini doğrudan etkileyen kritik bir problemdir. Bu proje, "Hangi müşteri hizmeti terk edecek?" sorusuna cevap arayan bir İkili Sınıflandırma (Binary Classification) problemidir. Veri seti ciddi oranda sınıf dengesizliği (%73 Kalıcı / %27 Kayıp) içermektedir.
İlk aşamada, karmaşık yöntemlere girmeden referans bir skor elde edilmiştir.
- Model: Karar Ağacı (Decision Tree)
- Ön İşleme: Basit Imputation, Standard Scaling ve One-Hot Encoding.
- Baseline AUC Skoru: 0.8296
Mevcut değişkenlerden AvgMonthlyCostPerService (Hizmet başına ortalama aylık maliyet) adında yeni bir özellik türetilmiştir.
- Sonuç: Bu özellik eklendiğinde AUC skoru 0.8267'ye düşmüştür.
- Karar: Modele gürültü (noise) eklediği tespit edildiğinden, final pipeline'da kullanılmamıştır.
Stratified K-Fold Cross-Validation (3-Fold) kullanılmıştır.
- Neden: Veri setindeki sınıf dengesizliği (Imbalance) nedeniyle, her bir katlamada (fold) Churn oranının sabit kalmasını garanti etmek ve modelin güvenilirliğini artırmak için bu yöntem seçilmiştir.
Final model için orijinal feature seti korunmuştur.
- Strateji: Sayısal değişkenler için
StandardScaler, kategorik değişkenler içinOneHotEncoderiçeren birColumnTransformeryapısı, XGBoost modeli ile birleştirilerek tek birPipelinenesnesi haline getirilmiştir.
Optimize edilmiş XGBoost modeli, Baseline modeline göre belirgin bir iyileşme sağlamıştır.
- Baseline (Decision Tree): 0.8296 AUC
- Final (XGBoost): 0.8461 AUC
- Fark: +0.0165 puanlık artış.
Model, yüksek AUC skoru (0.8461) ile Churn riski taşıyan müşterileri yüksek doğrulukla ayırt edebilmektedir.
- İş Değeri: Pazarlama departmanı, bütçesini rastgele harcamak yerine, modelin tespit ettiği "Yüksek Riskli" müşterilere odaklayarak müşteri tutma maliyetlerini düşürebilir. Feature Importance analizinde
Contractvetenuredeğişkenlerinin önemi, uzun vadeli sözleşmelerin teşvik edilmesi gerektiğini göstermektedir.
Model, src/app.py scripti ile Streamlit üzerinde canlıya alınmıştır.
- İzleme Metrikleri: Canlı ortamda modelin başarısı Model Drift (zamanla performans düşüşü) ve Veri Drifti (müşteri davranış değişimi) metrikleri ile takip edilmelidir. İş tarafında ise Churn Oranı ve Kampanya ROI (Yatırım Getirisi) izlenmelidir.
data/: Veri seti (WA_Fn-UseC_-Telco-Customer-Churn.csv)notebooks/: Analiz ve modelleme not defterleri (1-5)src/:app.py: Streamlit arayüz koducreate_model.py: Modeli eğiten ve kaydeden script
models/: Eğitilmiş model dosyası (.pkl)
Projeyi yerel makinenizde çalıştırmak için adımları takip edin:
-
Repoyu klonlayın ve klasöre gidin:
git clone [Repo Linkin] cd Churn_Project_NEW -
Sanal ortamı kurun ve kütüphaneleri yükleyin:
python -m venv .venv .venv\Scripts\activate pip install -r requirements.txt
-
Uygulamayı başlatın:
streamlit run src/app.py
Bu çalışma, makine öğrenmesi yetkinliklerini geliştirmek amacıyla hazırlanmış bir eğitim projesidir. Kullanılan veri seti, IBM'in sağladığı örnek verilerden derlenmiştir.
- Veri Seti: Telco Customer Churn
- Orijinal Kaynak: IBM Sample Data Sets
- Platform: Kaggle
Ayrıca proje geliştirme sürecinde aşağıdaki kütüphanelerden faydalanılmıştır:
- Scikit-learn: Model eğitimi ve ön işleme.
- XGBoost: Yüksek performanslı sınıflandırma modeli.
- Streamlit: Modelin canlıya alınması ve web arayüzü.
- Ad Soyad: Doruk Çelik
- Okul/Bölüm: Dokuz Eylül Üniversitesi - İstatistik
- E-posta: cdoruk248@gmail.com
