美文网首页
2018-09-25——基于物品的协同过滤算法

2018-09-25——基于物品的协同过滤算法

作者: Ariel_wyy | 来源:发表于2018-09-25 23:48 被阅读0次

基于物品的协同过滤算法主要分为两步。

(1)  计算物品之间的相似度。

(2)  根据物品的相似度和用户的历史行为给用户生成推荐列表

用下面的公式定义物品的相似度:

分母 |N(i)| 是喜欢物品 i 的用户数,而分子|N(i)∩N(j)|是同时喜欢物品 i 和物品 j 的用户数。因此,上述公式可以理解为喜欢物品 i 的用户中有多少比例的用户也喜欢物品 j 。

如果物品 j 很热门,很多人都喜欢,那么 W ij 就会很大,接近 1 。为了避免推荐出热门的物品,可以用下面的公式:

这个公式惩罚了物品 j 的权重,因此减轻了热门物品会和很多物品相似的可能性。

和 UserCF 算法类似,用 ItemCF 算法计算物品相似度时也可以首先建立用户 — 物品倒排表(即对每个用户建立一个包含他喜欢的物品的列表),然后对于每个用户,将他物品列表中的物品两两在共现矩阵 C 中加 1 。详细代码如下所示:

图中最左边是输入的用户行为记录,每一行代表一个用户感兴趣的物品集合。然后,对于每个物品集合,我们将里面的物品两两加一,得到一个矩阵。最终将这些矩阵相加得到上面的 C 矩阵。其中 C[i][j] 记录了同时喜欢物品 i和物品 j 的用户数。最后,将 C 矩阵归一化可以得到物品之间的余弦相似度矩阵 W 。

在得到物品之间的相似度后,ItemCF通过如下公式计算用户u对一个物品j的兴趣

这里N(u)是用户喜欢的物品的集合,S(j,K)是和物品j最相似的K个物品的集合,w ji 是物品j和i的相似度,r ui 是用户u对物品i的兴趣。(对于隐反馈数据集,如果用户u对物品i有过行为,即可令r ui =1。)该公式的含义是,和用户历史上感兴趣的物品越相似的物品,越有可能在用户的推荐列表中获得比较高的排名。该公式的实现代码如下所示。

相关文章

网友评论

      本文标题:2018-09-25——基于物品的协同过滤算法

      本文链接:https://www.haomeiwen.com/subject/eymroftx.html