Süper Lig xPts

Bir oyuncunun önümüzdeki maçta kaç TFF Fantezi Lig puanı toplayacağını tahmin eden LightGBM modeli.

Sonuçlar

Test kümesi zaman bazlı ayrıldı (son %20), 20,433 satır, 62 özellik.

model MAE RMSE Haftalık Spearman
baseline: son 5 mac ort. 1.868 2.797 0.518
baseline: sezon ort. 1.827 2.758 0.516
LightGBM xPts 1.709 2.598 0.579

Asıl metrik haftalık Spearman: fantezide önemli olan kimin kaç puan yapacağı değil, kimin daha çok yapacağıdır. Sıralama doğruysa kaptan doğru seçilir. Model en iyi baseline'ı sıralamada %12 geçiyor.

MAE ve RMSE de veriliyor çünkü tek bir metriğe bakmak yanıltır — ama fantezi kararları için Spearman'a bakın.

Sızıntıya karşı alınan önlemler

Bunu "sızıntı yok" diye yazmıyoruz, çünkü bu projede bir sızıntı bulundu ve düzeltildi — aşağıda anlatılıyor. Yazabileceğimiz şey, alınan önlemler:

Model yalnızca kadro seçiminin yapıldığı ana kadar bilinebilecek şeyleri görür. Özellikle dışarıda bırakılanlar:

  • O maçın kendi istatistikleri (gol, asist, oynanan dakika, xG)
  • İlk 11'de olup olmadığı — diziliş maçtan ~1 saat önce açıklanır, fantezi son teslim ondan önceye düşer
  • Formasyon ve teknik direktör

Tüm form özellikleri shift(1) ile kaydırıldı: her satır yalnızca o maçtan önceki maçları görür.

Bulunan ve düzeltilen sızıntı

Veri kaynağı iki tarih alanı veriyor: matchTimeUTC insan okunur bir metin ("Sat, Aug 17, 2019, 18:45 UTC"), matchTimeUTCDate ise ISO formatında. İlk sürüm yanlışlıkla metin olanı kullanıyordu. Metin olarak sıralanınca kayıtlar gün adına göre alfabetik sıralanıyor, dolayısıyla shift(1) "önceki maç" yerine rastgele bir maç döndürüyordu — yani form özellikleri geleceğe bakıyordu. Zaman bazlı train/test bölmesi de aslında zaman bazlı değildi.

Düzeltildikten sonra modelin skoru neredeyse değişmedi (Spearman 0.576 → 0.579) ama baseline'lar ciddi şekilde yükseldi (0.429 → 0.518), çünkü "son 5 maç ortalaması" ancak doğru kronolojiyle anlamlı. Yani modelin baseline'a üstünlüğü ilk ölçümde olduğundan büyük görünüyordu. Yukarıdaki tablo düzeltilmiş hâldir.

İkinci bir hata: points_per_game_season sezon puanını kariyer maç sayısına bölüyordu. Sezon bazlı sayaç eklendi.

Girdi

Model, fport/super-lig-fantasy veri setindeki kolonlarla kendi kendine yeter. Sağlayıcı türevi hiçbir özellik kullanılmadı, dolayısıyla indiren herkes çalıştırabilir.

Özellikler: oyuncu form ortalamaları (3/5/10 maç), mevki, yaş, ev/deplasman, takım formu, rakip formu, fikstür zorluğu.

Kullanım

import lightgbm as lgb
from huggingface_hub import hf_hub_download

path = hf_hub_download("fport/super-lig-xpts", "xpts_model.txt")
model = lgb.Booster(model_file=path)
xpts = model.predict(X)   # features.json'daki sırayla

Sınırlar

  • Sakatlık ve ceza bilgisi yok. Model bir oyuncunun kadroda olmadığını bilmez; sadece geçmiş dakika formundan tahmin eder.
  • Sezon başında zayıf. Tahminler geçmiş form üzerine kurulu; sezonun ilk birkaç haftasında o veri yok. Model pratikte 8-10. haftadan sonra oturuyor.
  • Eğitim etiketi doğrulanmadı. total_points oyunun yayınlanmış kurallarından hesaplandı ama gerçek puanlarla karşılaştırılmadı. Kural kodlamasında sapma varsa model de o sapmayı öğrenmiş olur. Bkz. veri seti kartındaki uyarı.
  • Transfer sonrası ilk maçlarda zayıf — yeni oyuncunun form geçmişi yok.
  • Puanlama kuralları oyunun yayınlanmış kurallarından kodlandı; bu repoda hesaplanan puanlar resmî puan değildir.
  • Bahis tavsiyesi değildir.
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Dataset used to train fport/super-lig-xpts

Space using fport/super-lig-xpts 1