基于用户行为分析的推荐算法是个性化推荐系统的重要算法,学术界一般将这种类型的算法称为协同过滤算法。顾名思义,协同过滤就是指用户可以齐心协力,通过不断地和网站互动,使自己的推荐列表能够不断过滤掉自己不感兴趣的物品,从而越来越满足自己的需求。
用户行为数据简介
用户行为数据在网站上最简单的存在形式就是日志。网站在运行过程中都产生大量原始日志(raw log),并将其存储在文件系统中。很多互联网业务会把多种原始日志按照用户行为汇总成会话日志(session log),其中每个会话表示一次用户行为和对应的服务。类似地,推荐系统和电子商务网站也会汇总原始日志生成描述用户行为的会话日志。会话日志通常存储在分布式数据仓库中,如支持离线分析的 Hadoop Hive和支持在线分析的Google Dremel。这些日志记录了用户的各种行为,如在电子商务网站中这些行为主要包括网页浏览、购买、点击、评分和评论等。
互联网中的用户行为有很多种,比如浏览网页、购买商品、评论、评分等。要用一个统一的方式表示所有这些行为是比较困难的。下表给出了一种表示方式,它将一个用户行为表示为6部分,即产生行为的用户和行为的对象、行为的种类、产生行为的上下文、行为的内容和权重。
User id | 产生行为的用户的唯一标识 |
Item id | 产生行为的对象的唯一标识 |
Behavior type | 行为的种类(比如是购买还是浏览) |
context | 产生行为的上下文,包括时间和地点等 |
Behavior weight | 行为的权重(如果是观看视频的行为,那么这个权重可以是观看时长;如果是打分行为,这个权重可以是分数) |
Behavior content | 行为的内容(如果是评论行为,那么就是评论的文本;如果是打标签的行为,就是标签) |
用户行为分析
在利用用户行为数据设计推荐算法之前,研究人员首先需要对用户行为数据进行分析,了解数据中蕴含的一般规律,这样才能对算法的设计起到指导作用。这里将介绍用户行为数据中蕴含的一般规律。
用户活跃度和物品流行度的分布
互联网上的很多数据分布都满足长尾分布。用户行为数据也蕴含着这种规律。即令fu(k)为对k个物品产生过行为的用户数,令fi(k)为被k个用户产生过行为的物品数。那么,fu(k)和fi(k)都满足长尾分布。
用户活跃度和物品流行度的关系
一般认为新用户倾向于浏览热门的物品,用户越活跃,越倾向于浏览冷门的物品。