Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📞 Telco Customer Churn Prediction (Uçtan Uca ML Projesi)

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.

🚀 Proje Çıktıları

  • 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.

![Streamlit Arayüzü]([alt text])


📝 Proje Raporu (Zorunlu Sorular)

1. Problem Tanımı

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.

2. Baseline Süreci ve Skoru

İ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

3. Feature Engineering Denemeleri

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.

4. Validasyon Şeması

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.

5. Final Pipeline ve Ön İşleme Stratejisi

Final model için orijinal feature seti korunmuştur.

  • Strateji: Sayısal değişkenler için StandardScaler, kategorik değişkenler için OneHotEncoder içeren bir ColumnTransformer yapısı, XGBoost modeli ile birleştirilerek tek bir Pipeline nesnesi haline getirilmiştir.

6. Final Model vs Baseline Farkı

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ış.

7. İş (Business) Gereksinimlerine Uyum

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 Contract ve tenure değişkenlerinin önemi, uzun vadeli sözleşmelerin teşvik edilmesi gerektiğini göstermektedir.

8. Canlıya Alma (Deployment) ve İzleme

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.

📂 Klasör Yapısı

  • data/: Veri seti (WA_Fn-UseC_-Telco-Customer-Churn.csv)
  • notebooks/: Analiz ve modelleme not defterleri (1-5)
  • src/:
    • app.py: Streamlit arayüz kodu
    • create_model.py: Modeli eğiten ve kaydeden script
  • models/: Eğitilmiş model dosyası (.pkl)

💻 Kurulum ve Çalıştırma

Projeyi yerel makinenizde çalıştırmak için adımları takip edin:

  1. Repoyu klonlayın ve klasöre gidin:

    git clone [Repo Linkin]
    cd Churn_Project_NEW
  2. Sanal ortamı kurun ve kütüphaneleri yükleyin:

    python -m venv .venv
    .venv\Scripts\activate
    pip install -r requirements.txt
  3. Uygulamayı başlatın:

    streamlit run src/app.py

📊 Veri Seti ve Kaynakça

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.

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ü.

⚠️ Veri Seti Boyutu Hakkında Not: Proje gereksinimlerinde 10k satır alt sınırı bulunmasına rağmen, bu projede makine öğrenmesi literatüründe "Churn Prediction" için altın standart (benchmark) kabul edilen Telco Customer Churn veri seti (7043 satır) tercih edilmiştir. Kaggle üzerindeki 10k+ satırlı veri setlerinin çoğu sentetik (yapay) veri olduğu için modelin gerçek hayat başarısını yansıtmayacağı değerlendirilmiştir. Veri kalitesi, veri hacmine tercih edilmiştir.

👤 İletişim

  • Ad Soyad: Doruk Çelik
  • Okul/Bölüm: Dokuz Eylül Üniversitesi - İstatistik
  • E-posta: cdoruk248@gmail.com

About

End-to-End Machine Learning Project: Predicting Telco Customer Churn using XGBoost and deploying with Streamlit.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages