如何让推荐列表不要千篇一律?——重排算法MMR

MMR原理

在这里插入图片描述

Q Q Q : 用户;
D D D : 推荐结果集合;
S S S : R R R中已被选中集合; KaTeX parse error: Undefined control sequence: \S at position 2: R\̲S̲: 中未被选中集合;
λ λ λ: 权重系数,调节推荐结果相关性与多样性

该如何理解这个公式?简单说,从未选中的集合中选择一个物品,计算它和用户的相似性,以及它和已选物品的相似性。我们希望该物品和用户尽可能相似,和已选物品尽可能不相似,这样展示的物品有比较好的多样性

代码

def MMR(itemScoreDict, similarityMatrix, lambdaConstant=0.5, topN=20):s, r = [], list(itemScoreDict.keys())while len(r) > 0:score = 0selectOne = Nonefor i in r:firstPart = itemScoreDict[i]secondPart = 0for j in s:sim2 = similarityMatrix[i][j]if sim2 > second_part:secondPart = sim2equationScore = lambdaConstant * (firstPart - (1 - lambdaConstant) * secondPart)if equationScore > score:score = equationScoreselectOne = iif selectOne == None:selectOne = ir.remove(selectOne)s.append(selectOne)return (s, s[:topN])[topN > len(s)]


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部