衡量top-N推荐的性能一般使用recall。不过,实验的设计并非那么直观。下面,先看几个paper里不同的实验方法,然后做个总结。
实验结果用recall@N来衡量。首先对于每个用户u,用上述训练出来的模型对u*和u_test进行评分。接着,对于每个u_test中的物品i,从u*中随机选取100个,然后将这101个物品排序。如果i的位置pos <= N那么就算是一个hit。整个测试集的recall@N = #hit/|test|。
[27]的实验方法:
记处理后的(隐式)评分矩阵为S,其中用户u有过隐式反馈的物品集为u+,没有的集合为u-。对于每个用户u,作者从u+中随机抽取10个相关的物品,作为测试集u_test。作者从u-中随机抽取K|u+|个物品,记为u* ——由于增加K,算法的性能不会上升,因此文中K取2。为了评测,算法在不同数据系数程度下的性能,作者又从u+中,随机抽取最多m(5,10,20,30,50,ALL)个隐式评分,记为u#,最终得到训练集u_train= u#∪u*, given m。为了实验结果不受个别数据影响,对于每个given m,作者重复5次随机抽样的过程,以产生不同的u_test和u_train。最终,将5次结果的平均值作为given m的最终结果。
实验结果用recall@N来衡量。首先对于每个用户u,用上述训练出来的模型对u*和u_test进行评分。接着,对于每个u_test中的物品i,从u*中随机选取100个,然后将这101个物品排序。如果i的位置pos <= N那么就算是一个hit。整个测试集的recall@N = #hit/|test|。