首页 > 编程知识 正文

主流的协同推荐算法,基于物品的协同过滤算法

时间:2023-05-05 18:30:15 阅读:20225 作者:1959

一、协同过滤算法原理

协同过滤推荐算法是诞生最早且有名的推荐算法。 主要功能是预测和推荐。 该算法通过挖掘用户的历史行为数据发现用户偏好,基于不同偏好对用户进行分组,并推荐偏好相似的商品。 协同过滤推荐算法是基于用户的协同过滤算法(user-basedcollaborativefiltering )和基于物品的协同过滤算法(item-basedcollaborativefiltering ) 简而言之,人是类聚的,物是群分的。 分别说明这两种推荐算法的原理和实现方法。

以上是几种常见的评价方式。

二、基于用户的协同过滤

1、基于用户的协同过滤用户基础协同过滤

基于用户的协作过滤算法从用户的历史行为数据中发现用户对商品和内容的偏好(例如购买商品、收藏商品、评论和共享内容),并测量这些偏好并对其进行评分。 根据不同用户对同一商品和内容的态度和喜好计算用户之间的关系。 在同样喜欢的用户之间进行商品推荐。

2、寻找喜欢的用户

我们模拟了五个用户对两个商品的评价,说明了用户对不同商品的态度和喜好如何寻找相似的用户。 在示例中,五个用户分别对两个商品评分。

)1)简要卷烟样品评价

)皮尔森关联度评估

皮尔逊关联度评估是计算用户之间关系的另一种方法。 他比彪强奇异果距离评价的计算要复杂一些,但评分数据不准确时,皮尔逊关联度评价能给出更好的结果。

相关系数的分类

0.8-1.0强相关0.6-0.8强相关0.4-0.6中等相关0.2-0.4弱相关0.0-0.2极弱相关或不相关

3、为相似的用户提供推荐物品

(1)向用户c推荐商品

需要向用户c推荐商品时,首先检查以前的相似度列表,发现用户c、用户d和e的相似度很高。 也就是说,这三个用户是一个组,有同样的喜好。 因此,可以向用户c推荐d和e商品。 但是这里有问题。 不能直接推荐前面的商品1-商品5的商品。 因为这些商品是用户c以及浏览或购买的。 不能重复推荐。 因此,推荐用户c还没有浏览或购买过的商品。

)2)加权排序推荐

提取了用户d和用户e评价的其他5个商品a -商品f的商品。 对不同商品的得分进行相似度的加权。 根据加权的结果对5个商品进行排名,推荐给用户c。 由此,用户c获得与自己的喜好相似的用户d和e所评价的商品。 在具体的推荐顺序和展示中,根据用户d、用户e和用户c的相似度进行排序。

这里基于用户的协同过滤 user_C对X的喜好=user_D对X的喜好*user_C与user_D的相似度。

因此下表得到的商品*的评分均为推荐出的用户C对该商品的评分。然后对其排序推荐给C.

这里的相似度总和是什么? 为什么需要使用总计/相似度呢? ---协同过滤推荐算法(二)看规范化处理

以上是基于用户的协同过滤算法。 该算法基于用户的历史行为数据计算相关度。 也就是说,需要一定的数据积累(冷启动问题)。 对于新站点和数据量较少的站点,还有基于物品的协同过滤算法。

三.基于物品的协同过滤算法item-basedcollaborativefiltering

基于项的协同过滤算法类似于基于用户的协同过滤算法,用于交换商品和用户。 通过计算不同用户对不同物品的评价得到物品之间的关系。 根据物品间的关系进行与用户相似的物品推荐。 这里的分数表示用户对商品的态度和喜好。 简而言之,用户a同时购买商品1和商品2时,商品1和商品2的关联度较高。 用户b也可以推测在购买商品1的情况下,有购买商品2的需要。

1、寻找相似的东西

)1)简要卷烟样品评价

在基于物品的协同过滤算法中,可以利用彪力较强的奇异果距离评价来计算不同商品之间的距离和关系。 以下是计算公式。

从彪强奇异果系数可以看出,商品间的距离和关系与以前散点图的表现一致,商品1、3、4的距离相近关系密切。 商品2和商品5距离很近。

)皮尔森关联度评估

决定用皮尔森关联度评价计算多用户和多商品的关系计算。 以下是5个用户对5个商品的评分表。 根据这些分数计算商品之间的关联度。

通过计算可知,商品12、商品34、商品35和商品45相似度高. 下一步,可以根据这些商品之间的关联度向用户进行商品推荐。

2、提供基于相似用户的推荐

这里,存在与用户推荐商品同样的问题,需要根据商品3向用户c推荐商品时,需要新商品和现有商品的相似度列表。 在上述相似度计算中,商品3的商品4和商品5的相似度高,所以计算后获得

商品4,5与其他商品的相似度列表。

以下是通过计算获得的新商品与已有商品间的相似度数据。

加权排序推荐

这里是用户C已经购买过的商品4,5与新商品A,B,C直接的相似程度。我们将用户C对商品4,5的评分作为权重。对商品A,B,C进行加权排序。用户C评分较高并且与之相似度较高的商品被优先推荐。

基于物品的协同过滤:user_C对X的喜好=user_C对Y的喜好*X与Y的相似度

                                        user_C对商品A的喜好=user_C对商品4的喜好*商品A和4的相似度

算出来用户C对商品ABC的评分后为什么要用总计/用户C对商品45的评分?-----公式

 

 

基于物品的协同过滤算法详解

一、算法描述

 

 

 

在CF中,用m×n的矩阵表示用户对物品的喜好情况,一般用打分表示用户对物品的喜好程度,分数越高表示越喜欢这个物品,0表示没有买过该物品。图中行表示一个用户,列表示一个物品,Uij表示用户i对物品j的打分情况。CF分为两个过程,一个为预测过程,另一个为推荐过程。预测过程是预测用户对没有购买过的物品的可能打分值,推荐是根据预测阶段的结果推荐用户最可能喜欢的一个或Top-N个物品。
二、User-based算法与Item-based算法对比

CF算法分为两大类,一类为基于memory的(Memory-based),另一类为基于Model的(Model-based),User-based和Item-based算法均属于Memory-based类型,具体细分类可以参考wikipedia的说明。

        User-based的基本思想是如果用户A喜欢物品a,用户B喜欢物品a、b、c,用户C喜欢a和c,那么认为用户A与用户B和C相似,因为他们都喜欢a,而喜欢a的用户同时也喜欢c,所以把c推荐给用户A。该算法用最近邻居(nearest-neighbor)算法找出一个用户的邻居集合,该集合的用户和该用户有相似的喜好,算法根据邻居的偏好对该用户进行预测。

        User-based算法存在两个重大问题:

        1. 数据稀疏性。一个大型的电子商务推荐系统一般有非常多的物品,用户可能买的其中不到1%的物品,不同用户之间买的物品重叠性较低,导致算法无法找到一个用户的邻居,即偏好相似的用户。

        2. 算法扩展性。最近邻居算法的计算量随着用户和物品数量的增加而增加,不适合数据量大的情况使用。

        Iterm-based的基本思想是预先根据所有用户的历史偏好数据计算物品之间的相似性,然后把与用户喜欢的物品相类似的物品推荐给用户。还是以之前的例子为例,可以知道物品a和c非常相似,因为喜欢a的用户同时也喜欢c,而用户A喜欢a,所以把c推荐给用户A。

        因为物品直接的相似性相对比较固定,所以可以预先在线下计算好不同物品之间的相似度,把结果存在表中,当推荐时进行查表,计算用户可能的打分值,可以同时解决上面两个问题。
三、Item-based算法详细过程

1、相似度计算

Item-based算法首选计算物品之间的相似度,计算相似度的方法有以下几种:

        1. 基于余弦(Cosine-based)的相似度计算,通过计算两个向量之间的夹角余弦值来计算物品之间的相似性,公式如下:

        其中分子为两个向量的内积,即两个向量相同位置的数字相乘。

        2. 基于关联(Correlation-based)的相似度计算,计算两个向量之间的Pearson-r关联度,公式如下:

        其中表示用户u对物品i的打分,表示第i个物品打分的平均值。

        3. 调整的余弦(Adjusted Cosine)相似度计算,由于基于余弦的相似度计算没有考虑不同用户的打分情况,可能有的用户偏向于给高分,而有的用户偏向于给低分,该方法通过减去用户打分的平均值消除不同用户打分习惯的影响,公式如下:

        其中表示用户u打分的平均值。
2、预测值计算

根据之前算好的物品之间的相似度,接下来对用户未打分的物品进行预测,有两种预测方法:

(1)加权求和

 用过对用户u已打分的物品的分数进行加权求和,权值为各个物品与物品i的相似度,然后对所有物品相似度的和求平均,计算得到用户u对物品i打分,公式如下:

其中为物品i与物品N的相似度,为用户u对物品N的打分。

物品i与物品n(n从1开始)的相似度*用户u对物品n的打分,累计加和;除以物品i与物品n的相似度加和。

 

(2)回归

 和上面加权求和的方法类似,但回归的方法不直接使用相似物品N的打分值,因为用余弦法或Pearson关联法计算相似度时存在一个误区,即两个打分向量可能相距比较远(隐形的猎豹距离),但有可能有很高的相似度。因为不同用户的打分习惯不同,有的偏向打高分,有的偏向打低分。如果两个用户都喜欢一样的物品,因为打分习惯不同,他们的欧式距离可能比较远,但他们应该有较高的相似度。在这种情况下用户原始的相似物品的打分值进行计算会造成糟糕的预测结果。通过用线性回归的方式重新估算一个新的值,运用上面同样的方法进行预测。重新计算的方法如下:

        其中物品N是物品i的相似物品,和通过对物品N和i的打分向量进行线性回归计算得到,为回归模型的误差。具体怎么进行线性回归文章里面没有说明,需要查阅另外的相关文献。
四、结论

通过实验对比结果得出结论:1. Item-based算法的预测结果比User-based算法的质量要高一点。2. 由于Item-based算法可以预先计算好物品的相似度,所以在线的预测性能要比User-based算法的高。3. 用物品的一个小部分子集也可以得到高质量的预测结果。

 

 

 

 

转载请注明出处,原文地址:https://blog.csdn.net/yimingsilence/article/details/54934302

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。