这似乎是一个愚蠢的问题。
我通过一些网球数据运行神经网络。网络的目标是确定每个玩家赢得比赛的概率。大约有40个输入和一个输出(玩家A获胜的概率,(1 - 输出)为玩家B)。
输入是最近n场比赛中每位球员的各种统计数据和表现指标。我编写了从我的网球比赛结果数据库中提取这些数字的代码,然后将其输入神经网络。
我遇到的问题如下:
在训练集中,与网络分析的比赛的获胜者相关的输入值将始终通过相同的输入神经元馈送。因此,所需的输出将始终为1,因为玩家A总是获胜(这是我的数据库结构的方式,玩家A是比赛的赢家,而玩家B是输家)。
我如何克服这个问题?这只是随机播放玩家A和玩家B订单的情况吗?
希望这个问题有道理。
非常感谢
答案 0 :(得分:1)
为什么不进行简单的50/50分割?通过您通常运行它们的输入神经元运行一半获胜者,通过其他输入神经元运行另一半获胜者,这样您将完全没有偏见。您甚至可以通过在训练它的每个实例上交替获胜者和松散者来交错/分割它们:
Neuron Player
--------------
1 W
2 L
--------------
1 L
2 W
--------------
1 W
2 L
--------------
1 L
2 W
随机化也可以提供帮助,但我认为它会引入偏见(尽管它会有极小的偏见)。在一天结束时,您不知道神经网络是否正在学习预测随机化功能,或者它是否正在学习如何预测数据,所以只需简单化并保证自己能够学到正确的东西。
答案 1 :(得分:1)
我认为某种改组(随机或其他)是有道理的。
如果您正在尝试培训任何类型的学习者从一对玩家中挑选出胜利者,并且您总是将第一个玩家作为获胜者,那么它的学习是完全合理的第一个玩家永远是赢家。
解决此问题的一种简单方法是训练双倍数据集:同时使用(A, B)
和(B, A)
,其中A
是赢家。
答案 2 :(得分:1)
我会训练每场比赛两次,一次输入Winner - Loser和输出'1',一次输入Loser - Winner和所需输出'0'。
(哦,我不认为神经网络输出可以被解释为概率,在某种意义上,如果ANN用输出0.9预测某些结果,那么它将是10次中的9次。)
答案 3 :(得分:0)
在您描述的成对建模中,通常要么:1。每个事件在每个顺序中向网络显示一次,或者2.每个事件以一些规范顺序(“home”,“away”)显示一次