未能对真实数据集进行线性回归/预测

机器算法验证 r 回归 预测模型 线性模型
2022-03-12 16:12:02

我有一个数据集,我正在尝试对其进行回归,但失败了。

情况:

  • 成千上万的战斗机器人操作员正在使用战斗机器人进行战斗。
  • 有的战斗机器人强而有力,有的则弱;强者更经常获胜并造成更多伤害。
  • 机器人操作员的技能各不相同,技术越熟练的人获胜越频繁,造成的伤害也越大
  • 我们有一些关于他们战斗结果的摘要信息,但不是所有细节。
  • 我们知道他们在战斗中使用了哪些战斗机器人,以及多少次(包括他们赢得了多少次战斗),我们知道他们总共造成的总伤害(两种,damageA 和damageB)
  • 一些机器人更擅长造成伤害A,而另一些机器人更擅长造成伤害B
  • 对于未知的战斗机器人操作员,仅根据他们在战斗中使用过的机器人(以及使用次数),我们想估计他们将获得多少伤害,以及他们最有可能赢得的战斗百分比

例如:

  • 约翰使用机器人 A 进行了 4 场战斗,使用机器人 B 进行了 2 场战斗,并造成了价值 240 单位的伤害 A
  • 詹姆斯使用机器人 A 进行了 1 场战斗,使用了机器人 B 进行了 10 场战斗,并造成了价值 1010 单位的伤害 A

因此,我可以估计机器人 A 每场战斗可能造成 10 单位的伤害 A,而机器人 B 每场战斗造成 100 单位的伤害 A,因此如果被要求估计仅玩过两个机器人中的每一个的 Matthew 造成的伤害 A每场 2 场战斗,估计 220 == (10*2 + 100*2)。

不幸的是,真实的数据并不那么干净和直接,可能是因为:

  • 由于机器人操作员的技能存在显着差异,例如,一个好的操作员可以对机器人 A 造成 20 个单位的伤害,而一个不好的操作员只能造成 5 个单位的伤害。
  • 由于在小样本的情况下抽到的对手存在一些随机差异(例如,有人抽到了一个强大的对手并输了,尽管他的机器人比对手更好),尽管最终它会平局
  • 可能存在一些小的选择偏差,因为最好的机器人操作员设法选择最好的机器人更频繁地投入战斗

真实数据集可在此处获得(已知战斗操作员结果的 630k 个条目):

http://goo.gl/YAJp4O

数据集组织如下,每行一个机器人操作员条目:

  • 没有标签的第 1 列 - 操作员 ID
  • 战斗 - 此操作员参与的战斗总数
  • 胜利 - 此操作员赢得的总战斗次数
  • 失败 - 此操作员输掉的总战斗次数
  • 伤害A - 造成的总伤害A点
  • damageB - 造成的总伤害 B 点数
  • 130对列如下:
    • Battles_[robotID] - 使用机器人 [robotID] 进行的战斗
    • victories_[robotID] - 使用机器人 [robotID] 获得的胜利

到目前为止我所做的:

  • 使用 R 包尝试了几个线性模型biglm,这些模型构建了一个公式,例如damageA ~ 0 + battles_1501 + battles_4201 + ...尝试为每个机器人获得拟合的“预期”值。
  • 0 +相同,但通过不包括在公式中来删除强制原点拦截
  • 相同,但也包含victories_[robotID]在自变量中
  • 和以前一样,但只选择那些胜利数字接近失败数字的机器人操作员
  • 一个线性回归模型,用于除机器人模型 1501 之外的所有机器人中的所有战斗。然后对所有其他机器人类型重复damageA ~ 0 + battles_1501 + battles_non_1501battles_non_1501

我通过查看预测的damageA和damageB值进行了完整性检查,并将胜利/战斗比率与我们实际上可以为每个机器人精确计算的实际胜利/战斗比率进行比较。

在所有情况下,虽然结果并未完全关闭,但它们已经足够关闭,可以看出该模型无法正常工作。例如,一些机器人获得了不应该真正发生的负伤害数字,因为你不能在战斗中造成负伤害。

如果我还在victories_[robotID]公式中使用了已知值,许多battle_[robotID]系数最终会变成有点大的负数,所以我尝试估计“平均”运算符,battle_[robotID] + victories_[robotID] / 2但这也没有给出合理的结果。

我现在有点想不通了。

1个回答

这可能需要联立方程建模,而不是线性回归。

成功的概率取决于两个独立的等式,一个衡量对手、人和机器的质量,另一个衡量自己、人和机器的质量。他们直接相互反对,但只观察到一种结果。如果不做 SEM,我相信你的系数是有偏差的,这可能就是为什么它们是微不足道的糊状物。这让人想起供求方程的估计,除非做好充分准备,否则通常不会得到任何结果。