最近学习了知识图谱数值表示方式的学习算法,包括TransE、TransD、TransR等,看到提到的评价指标有hit@10、mean rank等,一开始对于这些指标并不清楚。在看了一篇Transe的实现之后,明白了其所代表的含义。
表示学习的过程,其实就是实体链接的过程,首先把实体以及关系随机初始化为一定长度的向量,然后基于训练数据,希望通过类似于翻译的方式得到一个更优的向量表示,使 头实体+关系 尽可能的与尾实体的向量表示相近。在完成训练之后,如何测试、如何衡量我们得到的结果的好坏呢。
下面就是hit@10、mean rank两个指标显身手的时候了。
在测试过程中,对于一对关系及实体,我们将头实体或尾实体替换成任意一种其他的实体(共n-1个,保持另一个实体以及关系不变,只变其中一个实体),这样我们得到了(n-1)个新的关系三元组,然后我们对这些三元组计算实体关系距离,将这n-1个三元组按照距离从小到大排列。
接下来就是计算hit@10、mean rank了,在这个排好序的n-1元素中,我们从第一个开始遍历,看从第一个到第十个是否能够遇到真实的实体,如果遇到了就将(hit@10 +1),这就是hit@10的意义,表示我们的算法能够正确表示三元组关系的能力(在hit@10里 不要求第一个才是对的,能做到前十的能力就可以了)
而对于mean rank是计算在测试集里,平均到第多少个才能匹配到正确的结果。
如果还有疑惑,看了下面的代码会更清晰