MMR原理
: 用戶;
: 推薦結果集合;
: 中已被選中集合; 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 = 0
selectOne = None
for i in r:
firstPart = itemScoreDict[i]
secondPart = 0
for j in s:
sim2 = similarityMatrix[i][j]
if sim2 > second_part:
secondPart = sim2
equationScore = lambdaConstant * (firstPart - (1 - lambdaConstant) * secondPart)
if equationScore > score:
score = equationScore
selectOne = i
if selectOne == None:
selectOne = i
r.remove(selectOne)
s.append(selectOne)
return (s, s[:topN])[topN > len(s)]