如何呈现二进制分类器的输入对



我有一些关于电子游戏的数据。

数据:

一场比赛有一个matchId。每场比赛包括两支队伍,每支队伍的规模各不相同。例如,3v3、4v4、5v5。。。数据简化如下:

matchId playerId teamId victory
100     200        14     1
100     201        14     1
100     212        14     1
100     220        14     1
100     202        15     0
100     206        15     0
100     214        15     0
100     217        15     0

任务:

我喜欢在Scikit中使用二进制分类器来根据玩家的特征预测胜利值(0/1)。

问题:

  1. 我正在寻找一种方法来呈现分类器检测哪两支球队对阵的特征,因为比赛的结果取决于对手球队
  2. 稍后,我想看看哪些球员对比赛结果的影响更大,哪些技能在胜利中更有效。我可以在梯度提升分类器中使用重要性比率吗

一种方法是使用所有player_ids multiplied with 2(2个团队)的稀疏向量,其中所选的团队用非零值表示,如1。

如果有N players 0, ..., N-1team A consists of 1, 3, 5team B consists of 0, 2, 4,则输入如下所示:

x_sample_0 = [0, 1, 0, 1, 0, 1, 0, ...N-1, 1, 0, 1, 0, 1, ...]
...team A...                 ... team B...

这应该是任务的一个非常强大的表示(就所表示的信息而言),有两个明显的缺点

  • 矢量大小将变大(玩家大小为线性)
    • 如果分类器能够使用稀疏数据结构(scipy.s稀疏),这并不重要,因为大多数都是零
  • 存在对称性问题,因为每对A对B也可以编码为B对A
    • 以加倍输入样本量为代价,我强烈建议添加对称配对作为额外样本(样本量加倍)
      • 记住也翻转输出(意思是:从一线队的角度将y编码为输赢)
    • 也许强制执行字典排序可以在两对之间输出一个定义明确的顺序(如果玩家不能自己玩的话)作为一种选择(我会先尝试上面的)

编辑:

还有一种选择:

  • 为每个可能的团队(例如f_0 = team of 0, 2, 4)引入一个变量,并根据统计数据使用具有不同向量大小的表示
  • 这种情况会丢失一些信息,需要更多的数据

最新更新