2.3.4 标的物关联标的物范式
标的物关联标的物就是为每个标的物推荐一组标的物。该推荐范式的核心是从一个标的物关联到一组标的物。这种关联关系可以是相似的,也可以是基于其他维度的关联。常用的推荐策略是相似推荐。下面给出4种常用的生成关联推荐的策略。
1.基于内容的推荐
这类方法一般可以根据已知的数据和信息利用向量来描述标的物,如果每个标的物都被向量化了,那么我们就可以利用向量之间的相似度来计算标的物之间的相似度。
如果标的物是新闻等文本信息,可以采用TF-IDF将标的物映射为词向量,我们可以通过词向量的相似度来计算标的物之间的相似度。
即使不是文本,只要标的物具备metadata等文本信息,也可以采用该方法。很多互联网产品是具备用户评论功能的,这些评论文本就可以看成是标的物的描述信息。
LDA(Latent Dirichlet Allocation)模型也非常适合文本类的推荐。通过LDA模型将文章(文档)表示为主题及相关词的概率,我们可以通过如下方式计算两个文档的相似度:先计算两个文档某个主题的相似度,将所有主题的相似度加权平均就可以得到两篇文档的相似度,而主题的相似度可以采用主题的词向量的余弦内积来表示。
2.基于用户行为的推荐
在一个成熟的推荐产品中会包含很多用户的行为,如用户的收藏、点赞、购买、播放、浏览、搜索等,这些行为代表了用户对标的物的某种偏好。我们可以基于该用户行为来进行关联推荐。具体的策略有如下4类。
·常用的矩阵分解算法。可以将用户的行为矩阵分解为用户特征矩阵和物品特征矩阵,物品特征矩阵中的某一列可以看成是衡量这列对应物品的一个向量,利用该向量我们就可以计算两个标的物之间的相似度了。
·采用嵌入的思路做推荐。用户的所有行为可以看成是一个文档,每个标的物可以看成是一个词,我们可以采用类似Word2vec的思路,最终训练出每个词(即标的物)的向量表示,利用该向量表示可以计算标的物之间的相似度。
·我们可以将用户对标的物的所有操作行为投射到一个二维表(或者矩阵)上,行是用户,列是标的物,表中的元素就是用户对该标的物的操作(评分或者点击等隐式行为),通过这种方式我们就构建了一个二维表。这个二维表的列向量就可以用来表示标的物。这样我们就可以采用向量相似来计算标的物之间的相似度了。
·采用购物篮的思路做推荐,这种思路非常适合图书、电商等的推荐。经常一起购买(或者浏览)的标的物形成一个列表(一个购物篮),过去一段时间所有的购物篮构成一个集合。对于任何一个标的物,我们可以找到跟它出现在同一个购物篮中的标的物及次数,统计完该次数后,将该次数按降序排列,那么这个列表就可以当作标的物的关联推荐了。该推荐思路非常直观易懂,可解释性强。如图2-11所示就是亚马逊网站采用该思路给出的两类关联推荐。
图2-11 基于“购物篮”思路的关联推荐
3.基于标签的推荐
如果标的物是包含标签的(比如视频就包含很多标签),我们就可以利用标签来构建向量,每个标签代表一个维度。总标签的个数就是向量的维度,这样每个标的物就可以利用标签的向量来表示了。一般标的物的标签个数远远小于总标签的个数,所以这个向量是稀疏向量。这样我们就可以基于稀疏向量的表示来计算标的物之间的相似度了。
4.基于标的物聚类的推荐
我们可以将标的物按照某个维度聚类(如果标的物可以嵌入到向量空间,那么就很容易聚类了),同一类具备某些相似性,那么我们在推荐时,就可以将同一类的其他标的物作为关联推荐。我们需要解决的问题是,某些类可能数量很少,不够做推荐,这时可以采用一些策略来补充(如补充热门推荐等)不足的数量或者将数量少的类跟其他相似的类进行合并。