啤酒和尿布的故事,找出”购买A商品的用户都购买B“这种规律。
基于用户行为分析的这种类型的推荐算法,称为协同过滤算法
协同过滤:用户和网站互动,过滤掉自己不感兴趣的物品
2.1 用户行为数据简介
用户行为数据以日志形式存在。
网站运行会产生大量原始日志 raw log,按照用户行为汇总成会话日志session log,
每次会话表示一次用户行为和对应服务。
比如用户搜索行为,展示日志impression log记录查询结果,点击日志click log记录用户的点击行为。
用户行为分类
1. 显示反馈行为 explicit feedback
明确表示自己的喜好,如评分或者喜欢/不喜欢
2. 隐式反馈行为 implicit feedback
页面浏览行为
1. 正反馈:用户的行为倾向于指用户喜欢该物品
2. 负反馈:用户的行为倾向于指用户不喜欢该物品
用户行为的表示方式:
分为6部分
数据集的分类
不同的数据集包含不同的行为
- 无上下文信息的隐性反馈数据集,每一条行为记录仅包含用户ID和物品 ID。
- 无上下文信息的显性反馈数据集 每一条记录包含用户ID、物品ID和用户对物品的评分。
- 有上下文信息的隐性反馈数据集 每一条记录包含用户ID、物品ID和用户对物品产生行
为的时间戳.- 有上下文信息的显性反馈数据集 每一条记录包含用户ID、物品ID、用户对物品的评分
和评分行为发生的时间戳。
2.2 用户行为分析
对用户行为数据进行分析,找到一般规律。
1. 用户活跃度和物品流行度的分布
Power Law 幂律分布现象
长尾分布
2. 用户活跃度和物品流行度的关系
用户越活跃,越倾向于浏览冷门的物品
2.3 实验设计和算法评测
采用离线实验方法测试算法。
数据集->实验实际->评测指标
1. 数据集
2. 实验设计
3. 评测指标
精度
对用户u推荐N个物品,记为R(u), 令用户u在测试集上喜欢的物品集合为T(u), 可以通过准确率/召回率来评测算法的精度
召回率: 用户—物品评分记录占测试集的比例
准确率: 用户–物品评分记录占推荐集的比例
覆盖率
反应推荐算法挖掘长尾的能力,越高,则越能将长尾中的物品推荐给用户
如果所有的物品都被推荐给至少一个用户,那么覆盖率就是100%。
新颖度
用推荐列表中物品的平均流行度度量推荐结果的新颖度。
如果推荐出的物品都很热门,说明推荐的新颖度较低,否则说明推荐结果比较新颖
2.4 基于领域的算法
分两类如下
2.4.1 基于用户的协同过滤算法
1. 基础算法
推荐系统中,用户A需要个性化推荐时,先找到相似兴趣的其他用户,然后把那些用户喜欢的、而用户A没有听说过的物品推荐给A。这种方法称为基于用户的协同过滤算法。
两个步骤:
(1) 找到和目标用户兴趣相似的用户集合。
(2) 找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户。
计算兴趣相似度(通过计算行为相似度)
余弦相似度 https://www.cnblogs.com/dsgcBlogs/p/8619566.html
高时间复杂度:由于没两两用户都要计算余弦相似度,而很多时候用户之间没有对同样的物品产生行为
计算过程
低时间复杂度:
建立物品到用户的倒排表: 对每个物品都保存对它产生行为的用户列表。
2. 用户相似度计算的改进
两个用户对冷门物品采取过同样的行为更能说明他们兴趣的相似度
在计算用户兴趣相似度时考虑物品的流行度可以提升推荐结果的质量
3. 实际在线系统使用UserCF的例子
4. UserCF算法缺点
1.用户越多,计算用户兴趣相似度矩阵越难
2.基于用户协同过滤,很难对推荐结果做出解释
2.4.2 基于物品的协同过滤算法 ItemCF
item-based collaborative filtering
业界应用最多
ItemCF 给用户推荐那些和他们之前喜欢的物品相似的物品
该算法不利用物品内容属性计算物品相似度,而是分析用户的行为记录计算物品之间的相似度。算法认为,A和B有较大相似度,是因为喜欢A的用户大都也喜欢B。
1. 基础算法
算法步骤:
- 计算物品之间的相似度
- 根据物品的相似度和用户的历史行为生成推荐表
计算物品i和j的相似度:
公式说明:
两个物品具有相似度是有因为,他们共同被很多人喜欢,因此每个用户都可以通过自己的历史兴趣列表给物品贡献相似度。
建立用户—物品倒排表:即对每个用户建立一个包含他喜欢的物品的列表
计算用户对物品的兴趣:
举例说明:
2. 用户活跃度对物品相似度的影响
不活跃的用户对物品相似度的影响较大一些
3. 物品相似度的归一化、
将itemCF矩阵相似度矩阵按最大值归一化,可提高推荐的准确率,覆盖率和多样性
归一后的相似度矩阵求法:
2.4.3 UserCF和ItemCF的综合比较
UserCF推荐和用户有共同兴趣的用户喜欢的物品,社会化,适合用户新闻推荐
ItemCF推荐用户曾经喜欢的类似的物品,个性化,设适合电商网站推荐
哈利波特问题
两个不同领域的最热门物品之间往往具有比较高的相似度,导致原始ItemCF算法的覆盖率和新颖度都不高。
这个时候,仅仅靠用户行为数据是不能解决这个问题的,因为用户的行为表示这种物品之间应该相似度很高。
此时,我们只能依靠引入物品的内容数据解决这个问题,比如对不同领域的物品降低权重等。这些就不是协同过滤讨论的范畴了
2.5 隐语义模型 LFM
LFM( latent factor model)隐语义模型。
核心思想是,通过隐含特征(latent factor)联系用户兴趣和物品。
2.5.1 基础算法
问题提出:
基于兴趣分类的方法,需要解决三个问题.
- 如何给物品分类
- 如何确定用户对那些物品感兴趣,及感兴趣程度
- 如何将已知类中的物品推荐给用户,并确定这些物品的权重
隐含语义分析技术( latent variable analysis),采取基于用户行为统计的自动聚类。
- 分类来自于对用户行为的统计,代表了用户对物品分类的看法
- 控制分类的粒度,即指定可以有多少个分类
- 对于多分类物品,可计算属于每个类的权重
- 多维度分类
- 通过统计用户行为,决定物品在每个类中的权重
2.5.2 基于LFM的实际系统的例子
2.5.3 LFM和基于邻域的方法的比较
LFM是一种基于机器学习的方法,具有比较好的理论基础
UserCF、 ItemCF是基于邻域的方法,空间复杂度高(存储相关表),在线实时推荐效果好,两者时间复杂度差不多
2.6 基于图的模型
graph-based model ,将用户行为用图表示,并利用图的算法给用户进行个性化推荐
2.6.1 用户行为数据的二分图表示
将用户行为数据表示成图的形式,每个二元组(u, i)表示用户u对物品i产生过行为。这种数据集很容易用一个二分图表示。
令G( V, E)表示用户物品二分图,其中V由用户顶点集合Vu 和物品顶点集合Vi
组成.
图中用户节点A和物品节点a、 b、 d相连,说明用户A对物品a、 b、 d产生过行为。
2.6.2 基于图的推荐算法
用户u推荐物品, 转化为度量用户顶点Vu和与Vu没有边直接相连的物品节点在图上的相关性,相关性越高的物品在推荐列表中的权重就越高。
度量图中两个顶点之间相关性的方法:
决定图中顶点相关性的因素:
随机游走的PersonalRank算法: