Question

Dans notre bureau, nous jouons régulièrement des parties de baby-foot / baby-foot après le travail. J'ai mis en place un petit programme java qui génère des alignements aléatoires 2vs2 à partir des joueurs disponibles et stocke les résultats du match dans une base de données par la suite.

La prévision actuelle du résultat utilise une moyenne simple de tous les résultats des matchs précédents des 4 joueurs impliqués. Cela donne une estimation très approximative, mais je voudrais le remplacer par quelque chose de plus sophistiqué, en prenant en compte des éléments tels que:

  • les joueurs peuvent être bons en tant qu'attaquant mais mauvais en tant que défenseur (ou vice versa)
  • les joueurs font bien contre un adversaire spécifique / mauvais contre d'autres
  • certaines équipes travaillent bien ensemble, d'autres pas
  • les compétences changent avec le temps

Quel serait le meilleur algorithme pour prédire le résultat du jeu aussi précisément que possible?

Quelqu'un a suggéré d'utiliser un réseau de neurones pour cela, ce qui semble assez intéressant ... mais je n'ai pas suffisamment de connaissances sur le sujet pour dire si cela pourrait fonctionner, et je soupçonne également que cela prendrait trop de jeux pour être raisonnablement entraîné .

EDIT:
Nous avons dû prendre une pause plus longue en raison de certaines échéances du projet. Pour rendre la question plus précise:

Étant donné la table mysql suivante contenant tous les matchs joués jusqu'à présent:

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

Comment écririez-vous une fonction predictResult (blueDef, blueAtk, redDef, redAtk) {...}
estimer le résultat le plus fidèlement possible, exécuter un SQL, effectuer des calculs ou utiliser des bibliothèques externes?

Était-ce utile?

La solution

Utilisez l’algorithme TrueSkill, c’est très bon pour cela. Je l'ai implémenté pour le baby-foot et les échecs et cela fonctionne très bien. Des collègues m'ont dit que c'est presque trop aussi.

Pour plus d'informations sur son fonctionnement ainsi qu'un lien vers mon implémentation, consultez le lien "& a; Calcul de votre compétence " article de blog.

Autres conseils

Pourquoi utiliser un neuralnet? Utilisez des statistiques, la corrélation entre chaque joueur serait probablement une bonne mesure.

Juste pour commencer, rassemblons quelques informations: Pour un joueur donné, nous avons besoin de:

  1. la position qu'ils ont jouée
  2. le score final

Un bon attaquant accumulera des points. Un bon défenseur empêchera les points d'être marqués.

La vraie information viendra d’un bon attaquant jouant contre un bon défenseur.

Essayez d’appliquer le classifieur Naive Bayes.

  

L’apprentissage bayésien est une méthode probabiliste   approche qui repose sur un   hypothèse que les quantités de   les intérêts sont régis par la probabilité   distributions et optimale   les décisions peuvent être prises en raisonnant   à propos de ces probabilités ensemble   avec les données observées. [Mitchell, T.   (1997), Machine Learning]

La même répartition exacte des joueurs peut entraîner des résultats de match différents. Si vos données comportent un modèle, un modèle basé sur vos variables, le classificateur Naive Bayes peut produire de bons résultats.

L'algorithme n'est pas très complexe. Je pense, un avec une certaine connaissance en probabilité, peut comprendre & amp; l'appliquer.

Dans les systèmes de détection d’intrusion, il est utilisé pour déterminer les anomalies de réseau en examinant divers paramètres de réseau. L’approche bayésienne peut donner de très bons résultats avec certains types de données et produire des TP & amp; faibles taux de PF. Mais cela peut également entraîner des taux de PF élevés, en fonction de vos données. Vos données détermineront la meilleure approche.

Vous pouvez utiliser Weka ( http: //www.cs.waikato. ac.nz/~ml/weka/ ), une bibliothèque de logiciels d’exploration de données et essayez différents algorithmes. Il contient le classificateur Naive Bayes. Essayez juste de voir.

Une option serait d'essayer de deviner le point comme une une sorte de modèle linéaire . . Si vous avez plus de jeux que de joueurs, vous pouvez créer une matrice de jeux (+1 pour le joueur d’une équipe, -1 pour l’autre, 0 pour le spectateur) pour tous les jeux et un résultat. vecteur pour les spreads.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top