满足可变数量的输入和输出的遗传神经网络

数据挖掘 神经网络 数据集 遗传算法
2022-02-26 03:25:25

我有我提出的解决问题的方法,但是我从未见过以这种方式提到它,所以我担心有正当理由不这样做。

我有一个超过 100,000 个事件的数据集,其中每个事件都有一个获胜者。我有很多数据点,一些关于赛事本身的数据,还有一些关于每个参赛者的数据。

每个事件的参赛者数量是可变的,我想围绕挑选可能的事件获胜者建立一个神经网络。

由于参赛者的数量是可变的,因此似乎常见的建议是在最大情况下有足够的输入,而对于有空槽的事件,输入为 0。

这感觉有点不雅,我有一个稍微不同的想法。

我将有一个 NN,其中输入是有关事件的信息,以及有关 1 名参赛者的信息。然后我将有一个输出(0 到 1 之间的浮点数)。我会运行这个,为事件中的每个参与者获得 1 个输出,然后我会留下一些浮点数,等于事件中的参与者数量。然后我会选择最高值,并使用被称为获胜者的参赛者。

我有理由不这样做吗?有没有更好的解决方案我还没有遇到过?

2个回答

我有理由不这样做吗?

取决于数据的性质。在你评分的比赛中可能存在“剪刀/纸/石头”的元素,其中竞争对手的不同优势和劣势可以结合起来,使得玩家 A 击败玩家 B,玩家 B 击败玩家 C,但玩家 C 击败玩家 A。在这种情况下,您无法通过单独考虑每个参赛者来在玩家之间产生可靠的排名,并且单独评估每个玩家的网络的表现不如可以比较玩家的网络。

如果球员在一场比赛中更多地参加比赛或分别获得最高分,那么在每场比赛中分别对每个球员进行评分应该更可靠。构建和训练神经网络来预测这一点肯定更容易。

另一种方法是,如果您的赛事更像是参赛者相互对抗的锦标赛(即使在一些更大的免费比赛中),则可以预测成对玩家之间的相对排名。这可能不一致,因此您需要使用成对排名方法来解决最终获胜者的问题。如果这真的是一场淘汰赛,并且您知道初始抽签和球队组合将如何运作,那么您可以通过模拟可能的比赛来做出预测。

也没有什么可以阻止您以某种方式组合这些方法。

无论您使用哪种方法,您都需要考虑一下您的指标将是什么,以选择最佳方法。如果您只关心预测获胜者,那么该预测的准确性可能就足够了。如果您关心最终获胜者的位置,则可能意味着倒数排名会更好(正确预测得分 1,预测获胜者排名第二,得分 1/3,如果排名第三等)。

我已经深入研究了遗传算法领域,并认为您包含此标签可能在您的问题中并不明显,但无意中可能会为您的问题提供最佳解决方案。

我建议使用 hyperneat 或 es-hyperneat 的实现,这两者都会进化出基因型 cppn,进而构建表型神经网络基质,如果你用可变数量的输入训练和进化你的 cppn,我会怀疑 cppn 进化和考虑到这一点(这可能是通过对输入进行分组来创建子网,谁知道呢)。我目前使用它来解决一个类似的问题,它也有可变数量的输入,只要你的节点布局中没有可变数量的维度(我不知道这怎么可能发生)你应该能够使用这些算法。