基于用户行为分析的推荐算法是个性化推荐系统的重要算法,学术界一般将这种类型的算法称为协同过滤算法。
用户行为数据简介
- 用户行为数据在网站上最简单的存在形式就是日志。
- 用户行为分类
- 显性反馈行为包括用户明确表示对物品喜好的行为。
- 隐形反馈行为指的是那些不能明确反应用户喜好的行为。(比如页面浏览行为)
显性反馈数据与隐性反馈数据的比较
显性反馈数据 隐性反馈数据 用户兴趣 明确 不明确 数量 较少 庞大 存储 数据库 分布式文件 实时读取 实时 有延迟 正负反馈 都有 只有正反馈 显性反馈数据和隐性反馈数据实例:
显性反馈 隐性反馈 视频网站 用户对视频的评分 用户观看视频的日志、浏览页面的日志 电子商务网站 用户对商品的评分 购买日志、浏览日志 门户网站 用户对新闻的评分 阅读新闻的日志 音乐网站 用户对音乐/歌手/专辑的评分 听歌的日志 比较有代表性的数据集有下面几个
- 无上下文信息的隐性反馈数据集:每一条行为记录仅仅包含用户ID和物品ID。
- 无上下文信息的显性反馈数据集:每一条记录包含用户ID、物品ID和用户对物品的评分。
- 有上下文信息的隐性反馈数据集:每一条记录包含用户ID、物品ID和用户对物品产生行
- 有上下文信息的显性反馈数据集:每一条记录包含用户ID、物品ID、用户对物品的评分和评分行为发生的时间戳。
用户行为分析
用户活跃度和物品流行度的分布
很多关于互联网数据的研究发现,互联网上的很多数据分布都满足一种称为Power Law的分布,这个分布在互联网领域也称长尾分布。
f(x)=axk
很多研究人员发现,用户行为数据也蕴含着这种规律。令 fu(k) 为对 k 个物品产生过行为的用户
数,令
fi(k)=αikβi
fu(k)=αukβu
用户活跃度和物品流行度的关系
- 用户越活跃,越倾向于浏览冷门的物品
- 仅仅基于用户行为数据设计的推荐算法一般称为协同过滤算法,有很多方法
- 基于领域的方法(业界得到最广泛的应用)
- 基于用户的协同过滤算法:这种算法给用户推荐和他兴趣相似的其他用户喜欢的物品。
- 基于物品的协同过滤算法:这种算法给用户推荐和他之前喜欢的物品相似的物品。
- 隐语义模型
- 基于图的随机游走算法
- 基于领域的方法(业界得到最广泛的应用)
基于领域的算法
基于用户的协同过滤算法(UserCF)
- 步骤
- 找到和目标用户兴趣相似的用户集合
- 找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户
- 计算两个用户的兴趣相似度
这里,协同过滤算法主要利用行为的相似度计算兴趣的相似度。给定用户 u 和用户
或者通过余弦相似度计算:
wuv=|N(u)⋂N(v)|N(u)||N(v)|−−−−−−−−−−√
- 优化
该代码对两两用户都利用余弦相似度计算相似度。这种方法的时间复杂度是 O(|U|∗|U|) ,这在用户数很大时非常耗时。事实上,很多用户相互之间并没有对同样的物品产生过行为。所以可以先建立物品到用户的倒排表,对于每个物品都保存对该物品产生过行为的用户列表。 计算用户对物品的感兴趣程度
得到用户之间的兴趣相似度后,UserCF算法会给用户推荐和他兴趣最相似的 K 个用户喜欢的物品。如下的公式度量了UserCF算法中用户
u 对物品 i 的感兴趣程度:
p(u,i)=∑v∈