Frage

In unserem Büro, wir regelmäßig ein paar Runden von Foosball / Tischfußball nach der Arbeit genießen. Ich habe zusammen ein kleines Java-Programm setzen, die zufällig 2vs2 Aufstellungen aus den verfügbaren Spielern erzeugt und speichert die Spielergebnisse in einer Datenbank danach.

Die aktuelle Vorhersage des Ergebnisses verwendet einen einfachen Durchschnitt aller bisherigen Spielergebnisse aus den 4 beteiligten Spielern. Dies ergibt eine sehr grobe Schätzung, aber ich mag sie ersetzen mit etwas anspruchsvollere, unter Berücksichtigung Dinge wie:

  • Spieler können gut spielen, wie Angreifer aber schlecht als Verteidiger (oder umgekehrt)
  • Spieler tun gut gegen einen bestimmten Gegner / schlecht gegen andere
  • einige Teams arbeiten gut zusammen, andere nicht
  • Fähigkeiten im Laufe der Zeit ändern

Was wäre der beste Algorithmus, um das Spielergebnis so genau wie möglich vorhersagen?

Jemand schlug vor, ein neuronales Netz für diese Verwendung, die recht interessant klingt ... aber ich habe über das Thema nicht genug Wissen zu sagen, ob das funktionieren könnte, und ich vermute auch zu viele Spiele könnte nimmt es vernünftig trainiert werden .

EDIT:
Hat eine längere Pause von diesem aufgrund einiger Projekttermine zu nehmen. Um die Frage präziser zu machen:

In Anbetracht der folgenden MySQL-Tabelle alle Spiele gespielt bisher enthalten:

table match_result

match_id      int pk
match_start   datetime
duration      int (match length in seconds)
blue_defense  int fk to table player
blue_attack   int fk to table player
red_defense   int fk to table player
red_attack    int fk to table player
score_blue    int
score_red     int

Wie würden Sie eine Funktion predictResult (blueDef, blueAtk, redDef, redAtk) schreiben {...}
das Ergebnis möglichst genau zu schätzen, beliebige SQL-Ausführung, tun Berechnungen oder mit externen Bibliotheken?

War es hilfreich?

Lösung

Mit dem Trueskill-Algorithmus, ist es bei dieser sehr gut. Ich habe es für foosball und Schach umgesetzt und es funktioniert sehr gut. Mitarbeiter haben mir gesagt, dass es fast zu gut darin.

Für vollständige Informationen darüber, wie es funktioniert, sowie eine Verbindung zu meiner Implementierung finden Sie meine „ Computer Ihre Fähigkeit “Blog-Post.

Andere Tipps

Warum ein Neuralnet benutzen? Verwenden Sie Statistiken, wahrscheinlich die Korrelation zwischen jedem Spieler wäre eine gute Maßnahme.

Just beginnen wir einige Informationen sammeln: Für einen bestimmten Spieler, den wir brauchen:

  1. die Position, die sie gespielt
  2. das Endergebnis

Ein guter Angreifer Punkte Rack. Ein guter Verteidiger Punkte verhindert erzielt werden.

Die wirklichen Informationen von einem guten Angreifer sein werden, gegen einen guten Verteidiger zu spielen.

Versuchen Bayes-Klassifikator anwenden.

  

Bayes-Lernen ist eine probabilistische   Ansatz, der auf einer Basis   Annahme, dass die Mengen an   Zinsen werden durch Wahrscheinlichkeit geregelt   Verteilungen und dass eine optimale   Entscheidungen können durch logisches Denken gemacht werden   über diese Wahrscheinlichkeiten zusammen   mit den beobachteten Daten. [Mitchell, T.   (1997), Machine Learning]

Die gleiche genaue Verteilung der Spieler in verschiedenen Spielergebnissen führen. Wenn Ihre Daten ein Muster in ihm, ein Muster auf der Grundlage Ihrer Variablen, Bayes-Klassifikator gute Ergebnisse erzielen kann.

Der Algorithmus ist nicht sehr komplex. Ich denke, eine mit einigen Kenntnissen in Wahrscheinlichkeit kann verstehen und anwenden.

In Intrusion-Detection-Systeme, es wird für die Bestimmung Netzwerk Anomalien verwendet, um verschiedene Netzwerkparameter suchen. Bayes-Ansatz kann in bestimmten Arten von Daten und erzeugt hohe TP & low FP Raten sehr erfolgreich sein. Aber es kann auch zu hohen FP Raten, abhängig von Ihren Daten. Ihre Daten werden den besten Ansatz bestimmen.

Sie können Weka verwenden ( http: //www.cs.waikato. ac.nz/~ml/weka/ ), eine Data-Mining-Software-Bibliothek, und versuchen, verschiedene Algorithmen. Es enthält den Bayes-Klassifikator. Versuchen Sie einfach, und zu sehen.

Eine Möglichkeit wäre, zu versuchen und zu erraten, den Point-Spread als eine Art linearen Modell . Wenn Sie mehr Spiele, als Spieler haben, können Sie eine der kleinsten Quadrate Punkte pro Spieler passen durch den Bau einer Spiele-Matrix (+1 für Spieler in einem Team, -1 für den anderen, 0 für Zuschauer) für alle Spiele und Ergebnis Vektor für die Spreads.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top