最近在看推荐系统的文章neural collaborative filtering,其中MLP中求topn命中率的代码不太明白为什么要添加0。
训练集每个用户大概有三十几条评分数据。通过查找空值并替换成0后数据分布为1 0 0 0 0 1 0 0 0 0 1 0 0 …
测试集每个用户只有一条评分数据,记为x。
也一样的添加0,最后等于说每个测试集用户一共100个数据,其中99个0。但是negative的参数设置为4。
命中率HR为遍历所有用户,如果x在topn里面,则加1,然后除以用户总数。