04 / 05 · cluster k=3
Kalibre XGBoost ile AUC 0,893; önce 20+ Kaggle notebook'unun kaçırdığı 5 veri sızıntısını yakaladım.
Kredi başvurusundan temerrüdü tahmin etmek klasik bir ikili sınıflandırma problemi. Ama skora güvenebilmek için üç şart var: veri geleceği sızdırmamalı, olasılıklar gerçek riski yansıtmalı, model gruplar arasında adil olmalı. 148.670 kayıtlık Kaggle veri setinde üçünü de ayrı ayrı ele aldım.
Önce 20'den fazla açık Kaggle notebook'unun gözden kaçırdığı 5 sızıntı sütununu tespit edip çıkardım. Eksikleri grup medyanlarıyla doldurdum: geliri yaş grubuna, mülk değerini bölgeye, dtir1'i kredi tipine göre. Sınıf dengesizliği için scale_pos_weight kullandım, bunun yarattığı skor şişmesini CalibratedClassifierCV (cv=5) ile düzelttim. 8 modeli karşılaştırdım; cinsiyeti modele almadım ve cinsiyet grupları arasında statistical parity ile equalized odds analizi yaptım.
Final model kalibre XGBoost: test AUC 0,8928. Kalibre skalada 0,25 eşiğinde (ham skalada 0,40) temerrüt recall 0,73, precision 0,74, F1 0,73. Her tahmin SHAP beeswarm (global) ve waterfall (tek başvuru) grafikleriyle açıklanıyor; hepsi bir Streamlit uygulamasında çalışıyor.
Sızıntı denetimi (5 sütun)
Grup medyanıyla doldurma
8 model karşılaştırması
Dengesizlik + kalibrasyon (cv=5)
Eşik 0,25 · bias analizi
SHAP + Streamlit
Python · pandas · NumPy · scikit-learn · XGBoost · LightGBM · CatBoost · SHAP · Streamlit · Matplotlib · Seaborn
Veri tek bir Kaggle kaynağından geliyor ve gerçek bir banka portföyünde doğrulanmadı. 0,25 eşiği recall ile precision arasında bir tercih; farklı bir maliyet yapısında yeniden seçilmeli. Bias analizi yalnızca cinsiyeti kapsıyor; sıradaki adım bunu başka gruplara genişletmek.