学院实训项目:二次元动漫推荐系统 记录一下学习推荐系统的浅薄认识,只有最基础的三种推荐方法:
- 基于内容的推荐
- 基于用户的推荐(协同过滤1)
- 基于物品的推荐(协同过滤2)
推荐系统概述
推荐系统一般包括三个部分:
- 用户建模(刻画用户画像)
- 物品建模(刻画物品画像)
- 推荐算法
推荐系统的运作方式就是:通过对用户和物品进行建模,用推荐算法将用户感兴趣的点与物品的特征进行匹配并推荐。
- 用户建模方法:
- 基于用户本身的属性(性别、年龄、职业等)
- 基于用户的行为
- 显式反馈:主动对物品进行评分
- 隐式反馈:对物品的浏览时间、收藏、点赞、转发等
对比如下
- 物品建模方法
- 基于物品本身的属性(分类、特征、内容等)
- 基于用户的行为(不同用户对该物品的操作,包括点赞、收藏、浏览等)
- 推荐算法: 最基本的就是本文提到的三种,一般过程都是如下
- 首先计算相似度:根据用户模型或物品模型计算用户之间或者物品之间的相似度
- 其次进行推荐:找到相似的之后,进行喜好程度的计算,将物品按照喜好程度从大到小排序推荐给用户。当然在推荐的时候要去除用户已经看过的物品。
1. 基于内容的推荐
可参考博客
思想阐述
说白了就是: 我买过A和B,那么我就对A和B所在领域的东西感兴趣,而C就在这个领域,那么可以认为我可能会买C,所以推荐C给我。(我过去喜欢的,将来也会喜欢)
- 刻画用户画像:我买过A和B,将A和B的特征平均一下来代表我这个用户
- 刻画物品画像:A有三个属性,将三个属性组合为向量代表A这个物品
- 推荐算法:计算用户和其他物品的相似度,简单点的方法就是余弦相似度,相似度从高到低推荐给用户。当然也可以看做是分类问题,在刻画用户画像时运用决策树等方法建模,输入新的物品,输出喜欢或不喜欢。
优缺点
代码实现
可参考GitHub代码
2. 基于用户的推荐(协同过滤1)
可参考博客1,包含手推例子 可参考博客2,思想上的理解
说明
首先需要说明的是,协同过滤的两个算法操作的数据源是相同的,都是“用户-物品”矩阵C,每一行是每个用户,每一列是每个物品,C[i][j] 代表用户i 对物品j 的偏好程度,这个偏好程度可以通过综合计算用户的显式反馈与隐式反馈得到。
思想阐述
说白了就是: 我喜欢的和他喜欢的东西差不多,我没有买过B,他买过B,那么可以认为我可能会买B,所以推荐B给我。(人以群分)
完成该算法需要两步:
- 找到与目标用户兴趣相似的用户集合
- 找到这个集合中的用户最喜欢的,且目标用户还未接触过的物品推荐给目标用户
第一步:计算用户之间的相似度
- 操作矩阵:用户-物品矩阵
- 计算方法:余弦相似度或其他改进方法,即计算矩阵中的行向量两两之间的相似度,得到用户相似度矩阵。在计算的时候为了方便,一般会建立物品-用户倒排矩阵辅助计算,例子见参考博客1
第二步:计算用户u对物品的感兴趣程度进行推荐(这些物品来自相似用户v的喜好物品集合) 一般算法如下: 也就是对于物品i 而言,目标用户u 对i 的感兴趣程度=u 和v 的相似度乘v 对i 的偏好程度,将所有这样的i 进行计算求和(因为i可能是v1喜欢的,也可能是v2喜欢的)
代码实现
可参考GitHub代码
3. 基于物品的推荐(协同过滤2)
可参考博客1,包含手推例子 可参考博客2,思想上的理解
思想阐述
说白了就是: 我买了A,还会买什么?因为很多人买了A之后,就会买B,那么可以认为我买了A之后,可能会买B。所以推荐B给我。(啤酒和尿布的故事)
我个人认为,基于物品的协同过滤算法是借助用户这个中间桥梁去寻找物品之间隐含的联系,这种联系往往不局限于物品属性的相似,还会有意想不到的联系,比如啤酒和尿布。
完成该算法需要两步:
- 计算物品之间的相似度
- 根据物品的相似度和用户的历史行为给用户生成推荐列表
第一步:计算物品之间的相似度
- 操作矩阵:理应是物品-用户矩阵,但实际代码实现的时候还是采用用户-物品矩阵
- 计算方法:余弦相似度或其他改进方法,即计算“物品-用户”矩阵中的行向量两两之间的相似度,得到物品相似度矩阵。在计算的时候为了方便,一般会建立共现矩阵辅助计算,例子见参考博客1
第二步:计算用户u对物品的感兴趣程度进行推荐(这些物品来自与用户u喜好的物品相似度高的物品集合) 一般算法如下: 对于用户过去喜欢的每个物品i ,有和i 相似的物品集合,对于集合中的物品j ,计算用户u 对j 的感兴趣程度=j 和i 的相似度乘用户u 对i 的偏好程度,将所有这些j 进行累加求和(因为j可能和i1相似,也可能和i2相似)
代码实现
可参考GitHub代码
协同过滤算法优缺点
基于用户的与基于物品的协同过滤对比
参考博客
可以参考的论文综述与推荐系统实现过程
[1]王国霞,刘贺平.个性化推荐系统综述[J].计算机工程与应用,2012,48(07):66-76. [2]肖倩. 基于用户行为特征的水果搭配混合推荐方法设计与实现[D].西安理工大学,2017.
其他更深层次的推荐算法博客
参考博客主页
|