我的目标是通过提供某个图的2个顶点来建立一个简单的神经网络,如果有一个链接则为1,如果没有,则为0。
我适合我的模型,它会失去约0.40,准确度约为83%。然后我通过提供一批所有阳性样品和几批阴性样品(利用random.sample)来评估模型。我的模型对于阳性样本损失约0.35和1.0,对于阴性样本损失约0.46和0.68准确度。
我对神经网络的理解是非常有限的,但据我所知,上述意味着它在理论上总是正确的,当它没有链接时输出0,但有时即使没有也输出1。
现在我的实际问题是:我尝试重建"通过model.predict我的神经网络的原始图。问题是我不明白预测输出意味着什么。起初我假设值大于0.5平均值1,否则为0.但如果是这样的话,模型甚至不会接近重建原始值。
我认为它不会是完美的,但对于随机链接候选者,它只会返回0.5以上的值。
有人可以向我解释一下model.predict究竟是如何工作的,以及如何正确地使用它来重建我的图形?
答案 0 :(得分:0)
您训练的模型没有直接优化w.r.t.图重建。不失一般性,对于N
- 节点图,您需要预测N choose 2
个链接。并且可以合理地假设这些链接中的大多数的真实值为0。
当研究0级和1级的模型精度时,很明显您的模型很容易预测1级,假设您的训练数据是平衡的。因此,重建的图形包含许多虚假警报链接。这就是为什么重建图表的性能很差的确切原因。
如果可以重新训练模型,我建议你这样做并使用更多负面样本。
如果没有,您需要考虑应用一些后期处理。例如,不是找到确定哪两个节点具有链接的阈值,而是使用原始预测链接概率来形成节点到节点链接矩阵,并应用诸如最小生成树之类的内容来进一步确定什么是适当的链接。