推荐系统中的相似度模型
Item-based CF
基于 user-item 评分矩阵,利用 cosine 或者 Pearson correlation 来计算 item 间的相似度。user 对 item 的评分估计值为:
其中 是 user 所有评分过的 item 集合, 是 item 和 item 的做了标准化后的相似度。
这种方法直接、易行,但是在相似度的度量上,由于矩阵的稀疏性,相似度计算效果不是特别好,推荐质量不够高。
矩阵分解
矩阵分解的策略是将 user-item 评分矩阵分解为两个低秩的稠密矩阵:
在推荐时,可以使用 user 的向量乘上 item 矩阵,得到该 user 对所有 item 的评分的估计值,然后得出推荐结果。
但是当 user 与新的 item 产生交互时,user 和 item 的向量应该发生变化。尤其是对 user 而言,要想具有实时性,user 最近的交互信息就一定要能够影响 user 的向量。但是矩阵分解的方法没法做到这种实时性。
利用分解得到的 item 矩阵,也可以计算 item 之间的相似度,而且比直接用 user-item 评分矩阵来计算相似度效果更好。因此矩阵分解也可以用在传统的 item-based CF 中,用于计算 item 间的相似度。
SLIM (Sparse LInear Method)
论文 SLIM: Sparse Linear Methods for Top-N Recommender Systems 中提出一种方法直接学习出 item-item 间的相似度矩阵。
在约束条件下,最小化下式中的 :

其中 是 item 间的相似度矩阵,加入 L2 正则是为了避免过拟合,加入 L1 正则化是希望相似度矩阵尽可能地稀疏,因为相似的 item 不应该很多。 是因为相似度应该介于 0~1 之间。 则是要求 item 和自己的相似度为 0。
利用 user-item 评分矩阵中已有的评分数据来上上式最小化,可以学习得到一个相似度矩阵 。
SLIM 模型的缺点很明显,矩阵 的规模很大,训练起来很慢。另外只有 item 和 item j 同被一个 user 评分过, 才能得到学习。
FISM (Factored Item Similarity Model)
出自论文 FISM: Factored Item Similarity Models for Top-N Recommender Systems。
如果将 item-item 相似度矩阵分解为两个低秩矩阵相乘,即 。那么 item 和 item 之间的相似度表示为 。
如此以来 user 对 item 的评分可以表示为:
和 为 user 和 item 的 bias,其中 是 user 所有评分过的 item 集合,这里采用的可能是隐式反馈,集合中的 item 的评分都是 1,这是为啥没有评分值 的原因。
优化目标为:
NAIS (Neural Attentive Item Similarity)
论文 NAIS: Neural Attentive Item Similarity Model for Recommendation 在 FISM 的基础做了改进,加入了 Attention 机制。
这里作者将 , 都视为 item 的 Embedding,作者认为用户评分过的 item 的 Embedding 的均值可以作为 user 的 Embedding。这样以来评分 的计算就很直接了,user embedding 乘上 item embedding 即可。

想象一下,如果 item 是一个衣服,那么在表示用户时,用户购买的衣服的信息就更重要一些。所以这里给用户评分过的 item 加一个权重,加权得到用户的 embedding。

加入 Attention 之后对评分值得估计就变成了这样:
