in data science, Modele Statystyczne, Programowanie w R

Piłka nożna – XGBoost i nowe zmienne

Chcąc poprawić wynik ostatniego modelu doliczyłem jeszcze kilka dodatkowych zmiennych. Na nowym zbiorze danych wytrenowałem model XGBoost. Udało mi się uzyskać lepszy rezultat niż ostatnio, widać jednak, że niewielka poprawa jakości modelu wymaga już coraz większych nakładów pracy.

Doliczone zmienne

Do zbioru danych dodałem statystyki takie jak dotychczas, ale agregowane w dłuższym horyzoncie czasowym (6 ostatnich meczów zamiast 3). Dodałem również wyliczone wprost różnice między statystykami gospodarzy i gości, Na przykład różnica między punktami zdobytymi przez gospodarzy i punktami zdobytymi przez gości w 3 ostatnich meczach. Teoretycznie modele oparte o drzewa mogą same znaleźć zależności oparte na różnicach. Nie zaszkodzi jednak podać im gotowe informacje na tacy. Dodałem jeszcze zmienne będące podsumowaniem ostatnich 3 meczów gospodarzy, ale granych na wyjeździe oraz ostatnich 3 meczów gości, ale granych u siebie.

Model i jego wyniki

Na tak przygotowanych zmiennych wytrenowałem model algorytmem XGBoost. Po krótkim tuningu parametrów uzyskałem najlepsze dotychczas wyniki. Zbiór walidacyjny:
  • Pole pod krzywą ROC: 0.655
  • Skuteczność: 61.7%
Na dokładnie tym samym zbiorze danych oczyszczone z marży kursy bukmachera uzyskują takie wyniki:
  • Pole pod krzywą ROC: 0.667
  • Skuteczność: 62.6%
Myślę, że jak na taką amatorkę jaką tu uprawiam, to zbliżyłem się do profesjonalnych modeli bukmacherów wystarczająco blisko. Parametry modelu:
parametry modelu xgboost

Ranking zmiennych

Sprawdzam jeszcze, które ze zmiennych odgrywają główne role w nowym modelu.
xgboost - importance of variables
Widać wyraźnie, że dodawanie różnic między zmiennymi było daremne. Żadna z tych różnic nie znalazła się wśród 20 najlepszych zmiennych. Ranking zdominowały zmienne związane ze strzelanymi bramkami i strzałami. 18 z 20 zmiennych to zmienne ważone jakością drużyny przeciwnej, co potwierdza, że ich przygotowanie było dobrym pomysłem.

Co dalej?

  • W kolejnym wpisie planuję zderzyć ze sobą przewidywania modelu z kursami bukmacherów i na ich przecięciu poszukać miejsc z dodatnią wartością oczekiwaną.
  • Statystyki ze zbioru walidacyjnego prezentowane do tej pory pochodzą z próby out-of-sample. Ostatnim krokiem będzie sprawdzenie jak model poradzi sobie na próbie out-of-time. Jestem ciekawy czy wyniki znacząco się nie pogorszą na danych z najnowszych piłkarskich sezonów, które nie były ujęte w zbiorze do modelowania.

Write a Comment

Comment