Bu proje, GaziFintech'in makine öğrenmesi bootcamp'i kapsamında gerçekleştirilmiş olup, "Give Me Some Credit" Kaggle yarışması verilerini kullanarak bir müşterinin kredi temerrüt riskini tahmin etmeyi amaçlamaktadır. Proje, birincilikle tamamlanmıştır.
Projenin temel hedefi, müşterilerin demografik ve finansal verilerini kullanarak, önümüzdeki iki yıl içinde 90 günden fazla gecikme yaşama olasılığını tahmin eden bir makine öğrenmesi modeli geliştirmektir. Bu, finans kuruluşlarının kredi verme süreçlerinde daha doğru ve veri odaklı kararlar almasına yardımcı olabilir.
Proje süresince baştan sona bir makine öğrenmesi iş akışı takip edilmiştir:
-
Veri Analizi ve Temizleme:
- Veri seti incelenerek eksik değerler (
NaN)medianile dolduruldu. age,MonthlyIncomegibi değişkenlerdeki aykırı değerler (outliers) incelenerek mantıksal sınırlar dahilinde (clip) düzeltildi.
- Veri seti incelenerek eksik değerler (
-
Özellik Mühendisliği (Feature Engineering):
- Modelin doğrusal olmayan ilişkileri daha iyi yakalaması için
ageveMonthlyIncomegibi sürekli değişkenlerpd.cutile kategorik gruplara ayrıldı (AgeGroup,IncomeBin). NumberOfTime...gibi benzer anlama gelen gecikme günleri özellikleri, tek bir çatı altında birleştirilerek daha anlamlı bir özellik seti oluşturuldu.- Oluşturulan metin bazlı kategorik özellikler (
AgeGroupvb.)pd.get_dummiesile One-Hot Encoding tekniği kullanılarak sayısallaştırıldı.
- Modelin doğrusal olmayan ilişkileri daha iyi yakalaması için
-
Model Geliştirme ve Optimizasyon:
- Veri setindeki ciddi sınıf dengesizliği, azınlık sınıfı sentetik verilerle çoğaltan SMOTE tekniği ile giderildi.
- Başlangıç (baseline) modeli olarak Lojistik Regresyon kuruldu ve %18 gibi düşük bir Precision skoru elde edildi.
- Daha yüksek performans için Random Forest modeline geçildi ve Precision skoru %30'ların üzerine çıkarıldı.
- Model performansını daha da artırmak için
RandomizedSearchCVile saatler süren bir hiperparametre optimizasyonu gerçekleştirildi ve en iyi model ayarları bulundu.
Yapılan çalışmalar sonucunda optimize edilmiş Random Forest modeli, başlangıç modeline kıyasla temerrüt tahminlerindeki isabet oranını (Precision for class '1') %18'den %35'e çıkararak %94'lük bir iyileşme sağlamıştır. Modelin en önemli bulduğu özellikler arasında kredi kartı kullanım oranı (RevolvingUtilizationOfUnsecuredLines) ve borç yükü (DebtBurden) yer almaktadır.
- Python
- Pandas & NumPy
- Matplotlib & Seaborn
- Scikit-learn (
LogisticRegression,RandomForestClassifier,RandomizedSearchCV) - Imbalanced-learn (
SMOTE) - Jupyter Notebook & Kaggle
- Bu repoyu bilgisayarınıza yükleyin.
- Notebookunuzdaki ilk satırlarında bulunan kod ile gerekli kütüphaneler ve gerekli dosyalar otomatik olarak yüklenir.
- Tüm notebook'u tek seferde çalıştırmamanız önerilir, RandomizedSearchCV fonksiyonunun çalışması 1 saati alabiliyor.