Najlepszy piłkarz świata wg algorytmu maszynowego uczenia się
Napisałem program, który używa maszynowego uczenia (machine learning) do tego, żeby stworzyć ranking najlepszych piłkarzy. Chciałem podzielić się z Wami wynikami...
z- 171
- #
- #
- #
- #
- #
- #
Napisałem program, który używa maszynowego uczenia (machine learning) do tego, żeby stworzyć ranking najlepszych piłkarzy. Chciałem podzielić się z Wami wynikami...
zWykop.pl
To, czy to jest maszynowe uczenie się, czy nie, to kwestia definicji i nie jest to szczególnie istotne, ale wg mojej i powszechnie przyjętej definicji maszynowego uczenia się, ten algorytm jak najbardziej można nazwać maszynowym uczeniem się.
Typowy algorytm maszynowego uczenia się działa w taki sposób, że są jakieś dane, jest jakiś model, jest jakaś funkcja kosztu i jest jakiś algorytm optymalizujący. Algorytm uczy się wag, tak żeby zminimalizować wartość funkcji kosztu. Ten algorytm działa dokładnie w taki
Wg przyjętych przeze mnie definicji - można to nazwać zarówno maszynowym uczeniem się i analizą statystyczną. Maszynowe uczenie się ze statystyką ma wiele wspólnego.
Ale wyniki są interesujące, dlatego że bazują na czymś innym niż na subiektywnej ocenie i mogą dostarczyć informacji, których nie widać z punktu widzenia człowieka (np. z punktu widzenia człowieka nie widać że David Alba jest bardzo dobry, a wg rankingu
"Wedle takiego algorytmu nie ma żadnej różnicy pomiędzy zawodnikiem b klasy, z drużyny, która wygrywa dużą liczbą bramek, od np. rywalizacji w LM"
Jeżeli te drużyny z b klasy nie grały z żadnymi drużynami z a klasy, które nie grały z żadnymi drużynami z 3 ligi, które grały z drużynami z drugiej ligi itd. do ligi mistrzów, to wtedy algorytm na podstawie danych nie ma szansy się nauczyć, że drużyny grające w lidze mistrzów są lepsze od tych z A
"en algorytm pokazuje zawodników, którzy dużo grają w dobrych drużynach (ale już bez odniesienia czy ta drużyna jest dobra w La Liga czy pucharze pcimia dolnego) - stąd takie kwiatki jak Cavani, Meunier czy Jordan Henderson. "
Ale jak widzisz w rankingu masz wielu zawodników z ligi hiszpańskiej a masz tylko jednego z ligi brazylijskiej. Więc algorytm jest w stanie nauczyć się tego, która liga jest dobra, a która
Zgadzam się, że algorytm dawałby trafniejsze wyniki,
"Z kodu wynika, że zbioru testującego nie było (testing = False) - dlaczego? Czy wobec braku testu wiadomo jak dobrze/źle generalizuje uzyskany model?"
W finalnej wersji, którą wrzuciłem do repozytorium na GitHubie testing = False, ale wcześniej oczywiście sprawdzałem na danych testowych jakie wartości hiperparametrów dają najlepsze rezultaty (i wtedy ustawiałem testing na True i ustawiałem odpowiedni zbiór testowy). Więc testowałem algorytm z różnymi wartościami hiperparametrów (chociaż muszę przyznać, że nie miałem na to zbyt dużo czasu i nie robiłem tego szczegółowo, dlatego pisałem, że należy podejść do wyników z
Jak najbardziej zawodnik, który czasem siada na ławce ma szanse z zawodnikiem, który cały czas gra w podstawowym składzie.
Wadą algorytmu jest to, że zawodnicy, którzy są kontuzjowani lub często siedzą na ławce mają większe szanse na bycie na szczycie (również na dole) rankingu, dlatego że algorytm ma większe szanse się wtedy nauczyć, czy dany zawodnik decyduje o tym, że dana drużyna wygrywa/przegrywa. Przykładowo Piszczek jest bardzo wysoko w
Jeżeli przeanalizujesz jak działa algorytm, to zauważysz, że algorytm właśnie uczy się przewidywać rezultat spotkań na podstawie tego, jacy piłkarze grają w pierwszym zespole i jacy piłkarze grają w drugim zespole. Efektem ubocznym tego jest to, że wagi odpowiadające piłkarzom trenują się w taki sposób, że czym waga jest wyższa tym lepszy zawodnik. I ranking jest konstruowany właśnie na podstawie tych wag.
Załóżmy, że jest gracz X, który załóżmy gra w Barcelonie i za każdym razem stoi na boisku jak kołek. Barcelona jest dobra więc często wygrywa, więc jego rank idzie w górę. Ale wśród tych 5 lat będą takie mecze (nie musi to być cały mecz, wystarczy że zejdzie na przykład w 80 minucie), w których gracz X będzie siedział na ławce rezerwowych. W tym czasie Barcelona będzie grała jeszcze
Algorytm nauczy się tego, jaka liga jest najlepsza poprzez to, że te drużyny grają ze sobą w lidze mistrzów albo na przykład w klubowych mistrzostwach świata. Czyli jeżeli Real wygra z Celticem 2:0, to wtedy rank wszystkich drużyn w lidze szkockiej spada też w dół, bo załóżmy, że piłkarze Realu mają średnio rank 5, więc jeżeli Cetlic z nimi przegra to będzie miał rank średnio załóżmy 4, więc jeżeli
Jak widzisz na szczycie rankingu są piłkarze najlepszych drużyn, więc to nie tak. Mówiąc "najbardziej zwiększa prawdopodobieństwo wygranej drużyny poprzez obecność w składzie" mam na myśli, że jeżeli umieścisz go z jakimiś losowymi zawodnikami, to najlepszy jest ten, który najbardziej zwiększy szanse wygranej. Chociaż algorytm nie bada dokładnie jak danymi piłkarz gra z losowymi zawodnikami, bo bazuje na danych, gdzie zawodnik grał z innymi zawodnikami ze swojej drużyny (czyli
@ostoja: Zawodnicy, którzy mieli kontuzje właśnie mają większe szanse być na szczycie / na dole rankingu. Jak poszukasz, to znajdziesz gdzieś wyżej
@jacekKobr: Zgadza się - udział zawodnika w meczu nie jest zmienną niezależną od pozostałych. Ale w jaki sposób to się przekłada na rezultaty? W taki sposób, że algorytm nie bada tak naprawdę, jak bardzo dany piłkarz zwiększa szanse wygranej po włożeniu go do losowego zbioru innych piłkarzy, tylko bada jak dobrzy są piłkarze jeżeli
@Kondoniusz: Wszyscy zawodnicy byliby wysoko (albo prawie wszyscy) w stosunku do zawodników z drużyn z którymi grali. Najwyżej byliby ci zawodnicy, którzy byli obecni w meczach, gdzie drużyna wygrywała wyżej (albo byliby na boisku wtedy, kiedy drużyna strzelała gole i nie byłoby ich na boisku wtedy, kiedy drużyna traciła gole, uwzględniając zmiany zawodników).