Vorhersage des Gewinners eines Fußballspiels nur anhand des Ergebnisses früherer Spiele zwischen den beiden Teams

8

Ich bin ein großer Fußballfan und auch an maschinellem Lernen interessiert. Als Projekt für meinen ML-Kurs versuche ich, ein Modell zu entwickeln, das die Gewinnchance für die Heimmannschaft unter Berücksichtigung der Namen der Heimmannschaft und der Auswärtsmannschaft vorhersagt. (Ich frage meinen Datensatz ab und erstelle dementsprechend Datenpunkte basierend auf früheren Spielen zwischen diesen beiden Teams.)

Ich habe Daten für mehrere Spielzeiten für alle Teams, habe jedoch die folgenden Probleme, bei denen ich Ratschläge geben möchte. Die EPL (englische Premier League) hat 20 Mannschaften, die zu Hause und auswärts gegeneinander spielen (insgesamt 380 Spiele in einer Saison). Somit spielen zwei Teams in jeder Saison nur zweimal gegeneinander.

Ich habe Daten für die letzten 10+ Jahre, was zu 2 * 10 = 20 Datenpunkten für die beiden Teams führt. Ich möchte jedoch nicht über die letzten 3 Jahre hinausgehen, da ich glaube, dass sich die Teams im Laufe der Zeit erheblich ändern (ManCity, Liverpool) und dies nur zu mehr Fehlern im System führen würde.

Dies ergibt also nur etwa 6-8 Datenpunkte für jedes Teampaar. Ich habe jedoch mehrere Funktionen (bis zu 20+) für jeden Datenpunkt, wie Vollzeitziele, Halbzeitziele, Pässe, Schüsse, Gelb, Rot usw. für beide Teams, sodass ich Funktionen wie die aktuelle Form und die aktuelle Version hinzufügen kann Heimatform, aktuelle Auswärtsform usw.

Die Idee, nur 6-8 Datenpunkte zum Trainieren zu haben, scheint mir jedoch falsch. Irgendwelche Gedanken darüber, wie ich diesem Problem begegnen könnte? (wenn dies überhaupt ein Problem ist)

keithxm23
quelle
Der Heimvorteil scheint mir aufgrund der Studien, die ich gelesen habe (ich bin Ingenieur / Ökonom und BVB-Fan), ziemlich wichtig zu sein. Sie können auch PKs in Betracht ziehen. Sie ändern die langfristigen Spielergebnisse im Durchschnitt nicht ( siehe Soccernomics ), können jedoch ein einzelnes Spiel stark beeinflussen.
Gregmacfarlane
Wenn Sie wirklich nur die Namen der Teams verwenden möchten, können Sie ein Bewertungssystem verwenden, das für Schach oder andere Zwei-Spieler-Spiele verwendet wird, z. B. [Elo] [1] oder [Trueskill] [2]. Es gab auch einen [Kaggle-Wettbewerb] [3] darüber. Sie könnten vielleicht mit einem dieser Systeme beginnen und es dann mit den anderen Kovariaten erweitern. [1]: en.wikipedia.org/wiki/Elo_rating_system [2]: en.wikipedia.org/wiki/TrueSkill [3]: kaggle.com/c/chess
Flounderer
Der einzige Gedanke, den Sie vor einem Spiel kennen, sind die vorherigen Ergebnisse und die Rangliste. Sie haben keine Informationen über Aufnahmen, Ecken und Kanten, daher müssen Sie Funktionen erstellen, die plausibel und gegeben sind.
Fierce82

Antworten:

2

Was ist mit der Verbesserung Ihres Datensatzes, indem Sie auch einige Daten über die Spiele gegen denselben Gegner berücksichtigen?

Beispiel:

TeamA vs TeamC: 1-0
TeamB vs TeamC: 2-0
=> "infer" the fake outcome: TeamA vs TeamB: 1-2

Darüber hinaus sind diese Daten meiner Meinung nach besser als die von Ihnen vorgeschlagenen Daten, da die Teams des letzten Jahres oft sehr unterschiedliche Teams sind.

Aslan986
quelle
Hervorragender Vorschlag! Vielen Dank an Aslan986. Ich glaube jedoch, dass dies zur Liste der Funktionen beitragen würde. Ich sehe nicht ein, wie wir diese Daten als 'Datenpunkt' verwenden könnten. Trotzdem, danke, ich werde es auf jeden Fall ausprobieren.
Keithxm23