Échec de la régression / prédiction linéaire sur un ensemble de données réelles


8

J'ai un ensemble de données sur lequel j'essaie de faire une régression, et échoue.

La situation:

  • Des milliers d'opérateurs de robots de combat se battent entre eux à l'aide de robots de combat.
  • Certains robots de combat sont forts et puissants, et d'autres sont faibles; les plus forts gagnent plus souvent et infligent plus de dégâts.
  • Les opérateurs de robots varient en compétences, les plus qualifiés gagnant plus souvent et causant plus de dégâts
  • Nous avons quelques informations sommaires sur les résultats de leurs batailles, mais pas tous les détails.
  • Nous savons quels robots de combat ils ont utilisés dans leurs batailles, et combien de fois (y compris le nombre de ces batailles qu'ils ont gagnées), et nous connaissons le total des dégâts qu'ils ont infligés (de deux types, dommages A et dégâts B) au total
  • Certains robots infligent mieux des dégâts A, tandis que d'autres endommagent B
  • Pour les opérateurs de robots de combat inconnus basés uniquement sur les robots qu'ils ont utilisés dans les batailles (et combien de fois), nous aimerions estimer le montant des dégâts de chaque type qu'ils réaliseraient et le pourcentage de batailles qu'ils ont probablement gagné

Par exemple:

  • John a utilisé le robot A pour 4 batailles et le robot B pour 2 batailles, et a infligé 240 unités de dégâts A
  • James a utilisé le robot A pour 1 bataille et le robot B pour 10 batailles, et a infligé 1010 unités de dégâts A

Je peux donc estimer que le Robot A inflige probablement 10 unités de Dégâts A par bataille, tandis que le Robot B inflige 100 unités de Dégâts A par bataille, et donc si on lui demande d'estimer les Dommages A infligés par Matthieu qui n'a joué que chacun des deux robots pendant 2 batailles chacune, estimeront à 220 == (10 * 2 + 100 * 2).

Malheureusement, les données réelles ne sont pas aussi claires et simples, probablement parce que:

  • Il y a un écart important en raison de la compétence de l'opérateur du robot, par exemple, un bon opérateur pourrait infliger 20 unités de dégâts avec le robot A tandis qu'un mauvais seulement 5 unités.
  • Il y a une certaine variance aléatoire due aux adversaires tirés dans le cas d'un petit échantillon (par exemple, quelqu'un attire un adversaire fort et perd malgré avoir un meilleur robot que l'adversaire), bien que finalement, il égaliserait
  • Il peut y avoir un biais de sélection mineur dans la mesure où les meilleurs opérateurs de robots parviennent à choisir les meilleurs robots à affronter plus souvent.

L'ensemble de données réelles est disponible ici (630 000 entrées de résultats d'opérateurs de combat connus):

http://goo.gl/YAJp4O

L'ensemble de données est organisé comme suit, avec une entrée d'opérateur de robot par ligne:

  • Colonne 1 sans étiquette - ID opérateur
  • batailles - nombre total de batailles auxquelles cet opérateur a participé
  • victoires - nombre total de batailles remportées par cet opérateur
  • défaites - nombre total de batailles perdues par cet opérateur
  • damageA - total des points de dégâts A infligés
  • damageB - total des points de dégâts B infligés
  • 130 paires de colonnes comme suit:
    • battles_ [robotID] - batailles utilisant le robot [robotID]
    • victories_ [robotID] - victoires obtenues en utilisant robot [robotID]

Ce que j'ai fait jusqu'à présent:

  • J'ai essayé quelques modèles linéaires en utilisant le biglmpackage R qui construisent une formule telle que damageA ~ 0 + battles_1501 + battles_4201 + ...pour essayer d'obtenir des valeurs "attendues" ajustées pour chacun des robots.
  • Idem, mais en supprimant l'interception d'origine forcée en ne l'incluant pas 0 +dans la formule
  • Idem, mais inclut également le victories_[robotID]dans les variables indépendantes
  • Comme auparavant, mais en sélectionnant uniquement les opérateurs de robots dont le nombre de victoires est proche de leur nombre de défaites
  • Un modèle de régression linéaire pour damageA ~ 0 + battles_1501 + battles_non_1501battles_non_1501sont toutes les batailles dans des robots autres que le modèle de robot 1501. Puis répété pour tous les autres types de robots.

J'ai fait des vérifications de santé mentale en examinant les valeurs de dommages A et de dommages B prévues, ainsi qu'en comparant le rapport victoires / batailles avec le rapport victoires / batailles réel que nous pouvons réellement calculer avec précision pour chacun des robots.

Dans tous les cas, alors que les résultats n'étaient pas complètement erronés, ils l'étaient suffisamment pour que le modèle ne fonctionne pas tout à fait. Par exemple, certains robots ont atteint des nombres de dégâts négatifs qui ne devraient pas vraiment se produire car vous ne pouvez pas faire de dégâts négatifs dans une bataille.

Dans le cas où j'ai également utilisé les victories_[robotID]valeurs connues dans la formule, de nombreux battle_[robotID]coefficients ont fini par être des nombres négatifs quelque peu importants, j'ai donc essayé d'estimer pour l'opérateur "moyen" par battle_[robotID] + victories_[robotID] / 2mais cela n'a pas non plus donné de résultats raisonnables.

Je suis un peu à court d'idées maintenant.


4
On dirait que vous ne correspondez pas à un modèle d'effets mixtes que vous devriez faire ici pour tenir compte de la variation entre les opérateurs et (imbriqués dans cela?) Les robots. En ce qui concerne le problème des dommages négatifs, vous pouvez contourner cela en faisant une sorte de transformation
M. Berk

Merci pour vos conseils, même si je dois admettre que je ne sais comment appliquer aucune des suggestions. J'ai essayé de me brancher à la lmeplace de la mienne biglm, mais j'ai évidemment besoin de faire beaucoup plus de lecture à ce sujet pour comprendre quoi exactement lui fournir comme paramètres.
james.taylor.1985

1
Est-ce la seule façon d'obtenir les données? Il serait préférable d'avoir un ensemble de données avec une observation pour chaque bataille, identifiant les deux opérateurs, les deux robots et le résultat. Si les données doivent provenir d'informations récapitulatives, pouvez-vous obtenir différentes informations récapitulatives, ou est-ce bien cela?
Bill

Ça y est, les données sont reçues d'un système externe appartenant à une autre entreprise et c'est malheureusement l'étendue des données disponibles. J'ai quelques autres variables récapitulatives disponibles que je n'ai pas mentionnées ici (vous pouvez les considérer DamageB, DamageC, etc ...) mais elles sont étroitement corrélées avec DamageA et DamageB donc je ne pense pas qu'elles soient si utiles et je ne les a pas mentionnés pour éviter toute confusion.
james.taylor.1985

2
Pourquoi ne faites-vous pas une évaluation ELO pour les opérateurs, les machines ou une variante de ceux-ci? En outre, ces données disent que cela ressemble à une quantité incroyable de plaisir.
RegressForward

Réponses:


1

Cela nécessite probablement une modélisation d'équations simultanées plutôt qu'une régression linéaire.

La probabilité de succès dépend de deux équations distinctes, l'une mesurant la qualité de l'adversaire, de la personne et de la machine, l'autre mesurant la qualité de soi, de la personne et de la machine. Ils s'opposent directement, mais un seul résultat est observé. Sans faire SEM, je crois que vos coefficients sont biaisés, ce qui peut être la raison pour laquelle ils sont des champignons insignifiants. Cela rappelle l'estimation des équations de l' offre et de la demande , qui souvent ne rapporteront rien à moins d'être bien préparées.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.