做了一些研究后,我在这里找到了答案( 链接 )。本文仅展示2个度量的2个示例(欧几里德距离和余弦相似度),但它有助于可视化相似度值的计算方式,因此可以信任。
基于项目的相似度(项目 - 项目相似度)类似于基于用户的相似度(用户 - 用户相似度)。正如你所说,两个用户通过类似/ view / purchase / rate的项目彼此相似。类似地,两个项目基于它们共享的一些特征彼此相似。例如, 指环王 和 霍比特 是相似的,因为它们都是奇幻小说 J.R.R.托尔金 ,书籍的人物重叠,等等。这通常需要有关项目的更多信息。
现在,基于项目的推荐查找用户过去喜欢/查看/购买/评级的项目以推荐类似项目。它根本不向其他用户看。
算法的伪代码如下:
for every item i that u has no preference for yet for every item j that u has a preference for compute a similarity s between i and j add u's preference for j, weighted by s, to a running average return the top items, ranked by weighted average
随着项目数量的增加,基于项目的推荐器的运行时间逐渐增加,而基于用户的推荐器的运行时间随着用户数量的增加而增加。
由于项目项的相似性更加固定,因此它们更适合预先计算。预计算相似性需要工作,但它会在运行时加速推荐。
基于项目的方法发明于 亚马逊 通过基于用户的过滤解决规模挑战。