【读书笔记】推荐系统实战-第2章:利用用户行为数据

文章介绍了协同过滤的基本原理,包括用户和物品两种协同过滤算法,以及如何通过用户行为数据进行分析。此外,还讨论了隐语义模型如LFM以及基于图的推荐算法在处理用户-物品交互数据时的角色。文章强调了冷启动问题和实时性在不同模型中的影响,并指出热门物品对推荐结果的潜在影响。

协同过滤就是指用户可以齐心协力,通过不断地和网站互动,使自己的推荐列表能够不断过滤掉自己不感兴趣的物品,从而越来越满足自己的需求。

2.1 用户行为数据简介

原始日志、很多互联网业务会把多种原始日志安全用户行为汇总成会话日志。比如,一个并行程序会周期性地归并展示日志恶化点击日志,得到的会话日志中每条消息是一个用户提交的查询、结果以及点击。

按照反馈的明确性,用户行为分为显性和隐性。显性反馈行为的例子是评分和喜欢/不喜欢等。隐形反馈行为的例子是用户浏览行为。按照反馈的方向,用户行为分为正反馈和负反馈。按照是否记录事件时间信息,又分为有上下文和无上下文的行为。

2.2 用户行为分析

2.2.1 用户活跃度和物品流行度的分布

用户活跃度和物品流行度都服从长尾分,即“多数占据少数”。

2.2.2 用户活跃度和物品流行度的关系

用户越活跃,越倾向于浏览冷门的物品。仅仅基于用户行为数据设计的推荐算法一般称作协同过滤算法,比如基于邻域的方法、隐语义模型、基于图的随机游走算法等。

2.3 实验设计与算法评测

2.4 基于邻域的算法

2.4.1 基于用户的协同过滤算法

核心思想是,先找到和一个用户有相似兴趣的其他用户,然后把那些用户喜欢的且该用户没有听说过的物品推荐出去。

以余弦相似度为例,给定用户u和用户v,令N(u)表示u有过正反馈的物品集合,令N(v)表示v有过正反馈的物品集合。那么两个用户的相似度为

实际上,计算时无需遍历所有的(u,v)配对,为节省运算时间。只需要建立稀疏矩阵C,然后通过物品到用户的倒查表,通过+1操作来加速计算。

得到兴趣相似度后,就可以计算用户u对物品j的感兴趣程度了:

其中N(u)是用户喜欢的物品的集合,S(i,K)是和物品i最相似的K个物品的集合。一般情况下,随着K的提升,推荐系统的准召会先提升后降低,流行度会持续上升,覆盖率会持续下降。

当然用户相似度也有一些优化方法,比如User-IIF算法,惩罚了热门物品对相似度的影响。

2.4.2 基于物品的协同过滤算法

核心思想是,给用户推荐那些和他们之前喜欢的物品相似的物品。具体过程与UserCF类似。

2.4.3 UserCF和ItemCF的综合比较

UserCF

ItemCF

性能

适用于用户较少的场合

适用于物品数明显小于用户数的场合

适用领域

时效性强,用户个性化兴趣不明显

长尾物品丰富,用户个性化需求强烈

实时性

用户有新行为,不一定造成推荐结果的立即变化

用户有新行为,一定会导致推荐结果的实时变化

冷启动

新用户不行,新物品可以

新物品不行,新用户可以

可解释性

很难提供令用户信服的推荐解释

利用用户的历史行为给用户做推荐解释,可以令用户比较信服

注:CF方法要注意消除热门物品对推荐结果的影响,必要的时候可以牺牲准召来提升覆盖度。

2.5 隐语义模型

核心思想是,基于用户行为统计对物品进行自动分类,例如pLSA、LDA、LFM等。

隐语义模型是可以通过数据来学习的。针对隐性反馈行为,我们需要人为刻画负样本,构造负样本需要考虑以下两点:第一,正负样本比例尽可能均衡;第二,尽可能选用热门但用户无反馈的商品作为负样本。

以LFM为例,通过如下公式计算用户u对物品i的兴趣:

这里度量用户u的兴趣和第k个隐类的关系,而度量第k个隐类和物品i之间的关系。训练的过程是最小化损失函数的过程,即MSE加正则项。

但是,LFM模型很那实现实时的推荐,因为它每次训练时都需要扫描所有的用户行为记录,这样才能计算出用户隐类向量和物品隐类向量。新闻推荐领域冷启动问题非常明显,每天都会有大量新的新闻。这些新闻的生命周期很短,因此推荐算法对于实时性的要求较高,LFM明显与实际产品需要矛盾。

2.6 基于图的模型

2.6.1 用户行为数据的二分图表示

令G(V,E)表示用户物品二分图,其中V由用户顶点集合和物品顶点集合组成。如果用户u对物品i产生过行为,那么两个点之间则连一条线。遮掩构成一个用户-物品二分图模型。

2.6.2 基于图的推荐算法

关键在于度量图中任意两个顶点之间的相关性,主要取决于以下3个因素:

1)两个顶点之间的路径数

2)两个顶点之间的路径长度

3)两个顶点之间的路径经过的顶点。

相关性搞得顶点一般具有如下特征:

1)两个顶点之间有很多路径相连

2)连接两个顶点之间的路径长度都比较短

3)连接两个顶点之间的路径不会经过初度比较大的顶点

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值