利用用户行为数据
基于用户行为分析的推荐算法是个性化推荐系统的重要算法,学术界一般将这种类型的算法称为协同过滤算法。协同过滤就是指用户可以齐心协力,通过不断地和网站互动,使自己的推荐列表能够不断过滤掉自己不感兴趣的物品,从而越来越满足自己的需求。
2.1 用户行为数据简介
用户行为数据在网站上最简单的存在形式就是日志。网站在运行过程中都产生大量原始日志 (raw log),并将其存储在文件系统中。很多互联网业务会把多种原始日志按照用户行为汇总成会话日志(session log),其中每个会话表示一次用户行为和对应的服务。
用户行为一般分两种, 显性反馈行为和隐性反馈行为:
- 显性反馈行为包括用户明确表示对物品喜好的行为
- 隐性反馈行为指的是那些不能明确反应用户喜好的行为,最具代表性的隐性反馈行为就是页面浏览行为
用户数据的常用统一表示
2.2 用户行为分析
在设计推荐算法之前需要对用户行为数据进行分析,了解数据中蕴含的一般规律可以对算法的设计起到指导作用。
2.2.1 用户活跃度和物品流行度的分布
长尾分布: 正态曲线中间的突起部分叫“头”;两边相对平缓的部分叫“尾”。从人们需求的角度来看,大多数的需求会集中在头部,而这部分我们可以称之为流行,而分布在尾部的需求是个性化的,零散的小量的需求。而这部分差异化的、少量的需求会在需求曲线上面形成一条长长的“尾巴”,而所谓长尾效应就在于它的数量上,将所有非流行的市场累加起来就会形成一个比流行市场还大的市场。
2.2.2 用户活跃度和物品流行度的关系
一般新用户倾向于浏览热门的物品,因为他们对网站还不熟悉,只能点击首页的热门物品,而老用户会逐渐开始浏览冷门的物品。
协同过滤算法是仅基于用户行为数据设计的算法,方法有基于领域的方法(最广泛)、基于图的随机游走算法、隐语义算法。基于领域的方法可分为:
- 基于用户的协同过滤: 给用户推荐和他兴趣相似的其他用户喜欢的物品。
- 基于物品的协同过滤: 给用户推荐和他之前喜欢的物品相似的物品。
2.3 实验设计和算法评测
2.3.1 数据集
日志记录的用户历史行为数据
2.3.2 实验设计
首先,将用户行为数据集按照均匀分布随机分成M份, 挑选一份作为测试集,将剩下的M-1份作为训练集。然后在训练集上建立用户兴趣模型,并在测试集上对用户行为进行预测,统计岀相应的评测指标。为了保证评测指标并不是过拟合的结果,需要进行M次实验,并且每次都使用不同的测试集。然后将M次实验测出的评测指标的平均值作为最终的评测指标。
这样做主要是防止某次实验的结果是过拟合的结果(over fitting), 如果数据集够大,模型够简单,为了快速通过离线实验初步地选择算法,也可以只进行一次实验。
2.3.3 评测指标
召回率描述有多少比例的用户-物品评分记录包含在最终的推荐列表中,而准确率描述最终的推荐列表中有多少比例是发生过的用户-物品评分记录。
对用户以推荐N个物品(记为R(u)),令用户u在测试集上喜欢的物品集合为T(u),然后可以通 过准确率/召回率评测推荐算法的精度: