推荐系统(一):基于物品的协同过滤算法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了推荐系统(一):基于物品的协同过滤算法相关的知识,希望对你有一定的参考价值。

参考技术A 协同过滤(collaborative filtering)算法是最经典、最常用的推荐算法。其基本思想是收集用户偏好,找到相似的用户或物品,然后计算并推荐。
基于物品的协同过滤算法的核心思想就是:给用户推荐那些和他们之前喜欢的物品相似的物品。主要可分为两步:
(1) 计算物品之间的相似度,建立相似度矩阵。
(2) 根据物品的相似度和用户的历史行为给用户生成推荐列表。

相似度的定义有多种方式,下面简要介绍其中几种:

其中,分母 是喜欢物品 的用户数,而分子 是同时喜欢物品 和物品 的用户数。因此,上述公式可以理解为喜欢物品 的用户中有多少比例的用户也喜欢物品 。
上述公式存在一个问题。如果物品 很热门, 就会很大,接近1。因此,该公式会造成任何物品都会和热门的物品有很大的相似度,为了避免推荐出热门的物品,可以用下面的公式:

这个公式惩罚了物品 的权重,因此减轻了热门物品会和很多物品相似的可能性。
另外为减小活跃用户对结果的影响,考虑IUF(nverse User Frequence) ,即用户活跃度对数的倒数的参数,认为活跃用户对物品相似度的贡献应该小于不活跃的用户。

为便于计算,还需要进一步将相似度矩阵归一化 。

其中 表示用户 对物品 的评分。 在区间 内,越接近1表示相似度越高。

表示空间中的两个点,则其欧几里得距离为:

当 时,即为平面上两个点的距离,当表示相似度时,可采用下式转换:

距离越小,相似度越大。

一般表示两个定距变量间联系的紧密程度,取值范围为[-1,1]

其中 是 和 的样品标准差

将用户行为数据按照均匀分布随机划分为M份,挑选一份作为测试集,将剩下的M-1份作为训练集。为防止评测指标不是过拟合的结果,共进行M次实验,每次都使用不同的测试集。然后将M次实验测出的评测指标的平均值作为最终的评测指标。

对用户u推荐N个物品(记为 ),令用户u在测试集上喜欢的物品集合为 ,召回率描述有多少比例的用户-物品评分记录包含在最终的推荐列表中。

准确率描述最终的推荐列表中有多少比例是发生过的用户-物品评分记录。

覆盖率反映了推荐算法发掘长尾的能力,覆盖率越高,说明推荐算法越能够将长尾中的物品推荐给用户。分子部分表示实验中所有被推荐给用户的物品数目(集合去重),分母表示数据集中所有物品的数目。

采用GroupLens提供的MovieLens数据集, http://www.grouplens.org/node/73 。本章使用中等大小的数据集,包含6000多用户对4000多部电影的100万条评分。该数据集是一个评分数据集,用户可以给电影评1-5分5个不同的等级。本文着重研究隐反馈数据集中TopN推荐问题,因此忽略了数据集中的评分记录。

该部分定义了所需要的主要变量,集合采用字典形式的数据结构。

读取原始CSV文件,并划分训练集和测试集,训练集占比87.5%,同时建立训练集和测试集的用户字典,记录每个用户对电影评分的字典。

第一步循环读取每个用户及其看过的电影,并统计每部电影被看过的次数,以及电影总数;第二步计算矩阵C,C[i][j]表示同时喜欢电影i和j的用户数,并考虑对活跃用户的惩罚;第三步根据式\refsimilarity计算电影间的相似性;第四步进行归一化处理。

针对目标用户U,找到K部相似的电影,并推荐其N部电影,如果用户已经看过该电影则不推荐。

产生推荐并通过准确率、召回率和覆盖率进行评估。

结果如下所示,由于数据量较大,相似度矩阵为 维,计算速度较慢,耐心等待即可。

[1]. https://blog.csdn.net/m0_37917271/article/details/82656158
[2]. 推荐系统与深度学习. 黄昕等. 清华大学出版社. 2019.
[3]. 推荐系统算法实践. 黄美灵. 电子工业出版社. 2019.
[4]. 推荐系统算法. 项亮. 人民邮电出版社. 2012.
[5]. 美团机器学习实践. 美团算法团队. 人民邮电出版社. 2018.

以上是关于推荐系统(一):基于物品的协同过滤算法的主要内容,如果未能解决你的问题,请参考以下文章

基于物品的协同过滤

专栏1-推荐系统基于物品的协同过滤算法

JAVA推荐系统-基于用户和物品协同过滤的电影推荐

推荐算法简介:基于用户的协同过滤基于物品的协同过滤基于内容的推荐

推荐算法之基于物品的协同过滤

协同过滤推荐算法