来自微软的repo https://github.com/Microsoft/Recommenders
算法
- 计算物品相似度矩阵
S
- 用于评估用户和物品的关系矩阵
A
- 评价分数为计算
A∗S
- 可选步骤包括时间衰减和移除已经看过的物品
计算相似度
定义物品和物品的相似度,首先计算物品两两出现的次数,构成
m×m矩阵
C,
ci,j代表物品出现的次数
- 显然矩阵式对称的
ci,j=cj,i
- 非负性
ci,j≥0
- 单个出现的次数肯定比两两出现要大
∀(i,j)Ci,i,Cj,j≥Ci,j.
可以通过三种公式计算相似度
Jaccard
:
sij=(cii+cjj−cij)cij
lift
:
sij=(cii×cjj)cij
counts
:
sij=cij
计算用户对物品的亲和力分数
- 考虑对不同事件进行加权(比如购买,点击的权重是不一样的)
- 考虑时间问题
aij=k∑wke[−log(2)Tt0−tk]
aij代表用户i对物品j的亲和力,对于物品j计算用户i对此物品所有的历史k个行为,t0代表现在的时间,这个代表随着时间的后延,权重值将减小。
移除已经看过的物品
进行每个用户的Top-K推荐