Makine öğrenmesi / Veri bilimi / Yarışmalar / Deneyler & Arşiv
ING Türkiye Datathon
Müşteri davranışı verileri üzerinde zaman pencereli özellik çıkarımı, boosting modelleri, ensemble ve Optuna deneylerini bir araya getiren yarışma arşivi.
Tarihsel arşiv
Python
pandas
NumPy
scikit-learn
LightGBM
XGBoost
CatBoost
Optuna
Kategori için özgün kod tabanlı illüstrasyon; ürün ekran görüntüsü değildir.
Genel bakış
ING Türkiye Datathon deposu, müşteri davranışı modelleme için geliştirilmiş Python deneylerini içeriyor. Keşif, geçmiş veriden özellik çıkarımı, LightGBM/XGBoost/CatBoost modelleri, ensemble ve hiperparametre arama yolları bulunuyor. Erken özellik dosyası ile optimize edilmiş train/test çıktıları ayrı deney sözleşmeleri. Kod, dağıtılmış tahmin hizmeti değil; izinli yarışma verisi ve yeniden üretim düzeni gerektiren araştırma arşivi.
Problem ve amaç
Müşteri geçmişini model girdisine dönüştürürken referans tarihinden sonraki hareketleri kullanmak veri sızıntısına yol açabiliyor. Farklı zaman pencereleri ve model aileleri birçok deney üretirken, train/test şemalarının uyumu ve çıktıların izlenebilirliği önem kazanıyor. Yarışma metriğini optimize etmek de tek bir genel doğruluk skorundan daha ayrıntılı değerlendirme gerektiriyor.
Çalışmadaki rolüm
Veri hazırlama, özellik mühendisliği ve model karşılaştırma deneylerinin geliştirilmesi.
Çözüm yaklaşımı
Optimize edilmiş özellik yolu müşteri geçmişini referans tarihinden önce filtreleyip 6, 12 ve 24 aylık pencerelerde özet özellikler üretiyor. Train/test özellik dosyaları ensemble ve Optuna script’lerinin girdisi oluyor. LightGBM, XGBoost, CatBoost ve klasik modeller karşılaştırma/ensemble akışında yer alıyor; kod Gini, recall ve lift tabanlı yarışma metriği bileşenlerini hesaplıyor. Keşif ve Colab odaklı entegre deney ayrı girişler olarak korunuyor. Yeni koşular için veri şeması, bölme ve seed kaydı gerekiyor.
Uygulama ayrıntıları
01
Referans tarihini özellik hesabına taşıma
Optimize özellik script’i her müşteri-referans satırı için geçmiş hareketleri önce ref_date öncesine kesiyor. Ardından 6, 12 ve 24 aylık pencereler üzerinde işlem toplamı, ortalama ve değişkenlik gibi özetler hesaplıyor; müşteri bilgileriyle birlikte train/test özellik dosyalarına dönüştürüyor. Bu yaklaşım ham müşteri geçmişi ile model tablosu arasındaki dönüşümü açık hale getiriyor. Kayıtsız müşterilerin atlanması ve boş pencerelerin davranışı da bu sözleşmenin parçası; yeni veride satır sayısının ham girişle otomatik aynı kalacağı varsayılmamalı.
02
Zamana dayalı fold ve model karşılaştırması
ensemble_model.py, ref_date değerlerini sıralayıp validation tarih gruplarından daha eski kayıtları train olarak seçen fold’lar oluşturuyor. Her fold için model clone ediliyor, predict_proba çıktısı üzerinden AUC, Gini, recall@10 ve lift@10 hesaplanıyor; ardından model tüm eğitim verisine fit ediliyor. Bu yapı rastgele train/test ayrımından farklı bir zaman sorusunu değerlendiriyor. Yine de kategori encoding’inin train/test birleşiminden öğrenilmesi ve aynı müşterinin farklı tarihlerde görünmesi ayrıca incelenmeli; kodda temporal fold olması tek başına sızıntısız değerlendirme kanıtı değil.
03
Ensemble ağırlığı ve metrik seçiminin etkisi
Weighted ensemble yolu model olasılıklarını zaman fold’larından elde edilen ING skorlarına göre normalize edilmiş ağırlıklarla topluyor; average ve median alternatifleri de bulunuyor. Skor fonksiyonu Gini, recall@10 ve lift@10 bileşenlerini tanımlanmış baseline oranlarıyla birleştiriyor. Böylece model seçimi ile yarışmanın sıralama odaklı amacı arasında açık bir bağ kuruluyor. Ağırlıkların aynı validation sonuçlarından türetilmesi bağımsız final değerlendirmesini gereksiz kılmıyor. Buradaki anlatım hesaplama yolunu açıklıyor; yeni leaderboard sonucu veya doğrulanmış üstünlük sunmuyor.
Mimari akış
01
İzinli müşteri / geçmiş / referans CSV’leri
02
Referans tarihinden önceki kayıtlar → zaman pencereli özellikler
03
train_features / test_features → model eğitim script’leri
04
Cross-validation → ensemble veya Optuna denemeleri