推荐系统概述

本文深入探讨了推荐系统的基本概念,介绍了其在信息过载时代的角色,以及如何通过用户行为数据挖掘个性化需求,实现信息的有效匹配。文章对比了基于用户和基于物品的协同过滤算法,分析了它们的优缺点,并探讨了隐语义模型、上下文问题等高级主题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

推荐系统概述

  1. 基础概念

    随着信息技术和互联网的发展,人们逐渐从信息匮乏的时代走入了信息过载的时代。在这个时代,无论是信息消费者还是信息生产者都遇到很大的挑战;对于消费者,从大量信息中找到自己感兴趣的信息是一件非常困难的事情;对于信息生产者,让自己的信息脱颖而出,受到广大用户的关注,也是一件非常困难的事情。推荐系统就是解决这一矛盾的重要工具。推荐系统的任务就是联系用户和信息,一方面 帮助用户发现对自己有价值的信息,另一方面 让信息能够展现在对它感兴趣的用户面前 ,从而实现信息消费在和信息生产者的双赢。

    和搜索引擎一样,推荐系统也是一种帮助用户快速发现有用信息的工具。但是搜索引擎需要用户主动给出需求,推荐系统则不需要用户提供明确的需求,而是通过分析用户的历史行为给用户的兴趣建模,从而主动给用户推荐能够满足他们兴趣和需求的信息。因此推荐系统需要依赖用户的行为数据。从某种意义上说,推荐系统和搜索引擎对于用户来说是两个互补的工具。搜索引擎满足了用户有明确目的时的主动查找需求,而推荐系统能够在用户没有明确目的的时候帮助他们发现感兴趣的新内容。

    从物品的角度出发,推荐系统可以更好的发掘商品的长尾。根据传统的80/20原则(80%的销售额来自于20%的热门商品),推荐系统通过发掘用户的行为,找到用户的个性化需求,从而将长尾商品准确地推荐给需要它的用户,帮助用户发现那些他们感兴趣但很难发现的商品。

    一般使用以下指标来评判推荐系统:

1. 用户满意度

    可以使用调查问卷的形式,一般情况下也可以用用户点击率、停留时间和转化率等指标来度量用户的满意度。

2. 预测准确率

    可以使用准确率和召回率来度量推荐系统的准确率。令表示根据用户在训练集上的行为给用户做出的推荐列表,令表示用户在测试集上的行为列表,则准确率和召回率的定义如下:

3. 覆盖率

    描述一个推荐系统对物品长尾的发掘能力。覆盖率有不同的定义方法,最简单的定义为推荐系统能够推荐出来的物品占总物品集合的比例。

4. 多样性

    为了满足用户广泛的兴趣,推荐列表需要能够覆盖用户不同的兴趣领域。多样性描述了推荐列表中物品两两之间的不相似性。

5. 新颖性

    新颖的推荐是指给用户推荐那些他们没听说过的物品。评测新颖性度的最简单方法是利用结果的平均流行度,因为越是不热门的物品越是让用户觉得新颖。

6. 惊喜度

    惊喜度可以简单定义为推荐结果和用户的历史兴趣不相似,但却让用户觉得满意。

7. 信任度

    信任度表示用户对推荐结果的信任程度。可以使用以下两种来增强用户的信任度:

  1. 提供推荐解释
  2. 考虑用户的社交网络信息,利用用户的好友信息给用户做推荐

8. 实时性

    推荐系统的实时性主要包含两个方面。一是推荐系统需要根据用户新的行为来实时更新推荐列表;二是推荐系统需要将新加入的物品实时推荐给用户。

9. 健壮性

    健壮性指标衡量了一个推荐系统的抗击作弊能力。在设计推荐系统时,应尽量使用代价比较高的用户行为。

10. 商业指标

    很多公司会根据自己的盈利模式设计不同的商业指标。

基于领域的算法

       基于领域的算法是推荐系统中最基本的算法,该算法分为两大类,一类是基于用户的协同过滤算法,另一类是基于物品的协同过滤算法。

1. 基于用户的系统过滤算法

       基于用户的协同过滤算法主要包括两个步骤:

  1. 找到和目标用户兴趣相似的用户集合

  2. 找到这个集合中用户喜欢的、且目标用户没有听过过的物品推荐给用户

       协同过滤算法主要利用用户行为的相似度计算用户相似度。给定用户u和用户v,令分别表示用户u、v曾经有过正反馈的物品集合,则可以通过以下两种方式定义用户的相似度:

1. Jaccard

2. 余弦相似度

       得到用户之间的相似度后,该算法会给用户推荐和他兴趣最相似的K个用户喜欢的物品。如下的公式度量了目标用户u对物品i的感兴趣程度:

       其中,包含K个和用户u兴趣最接近的用户,表示对物品i有过行为的用户集合,表示用户u、v之间的兴趣相似度,表示用户v对物品i的兴趣。

2. 基于物品的协同过滤算法

       基于用户的协同过滤算法主要包括两个步骤:

  1. 计算物品之间的相似度

  2. 根据物品的相似度和用户的历史行为给用户生成推荐列表

       我们可以用以下的公式定义物品的相似度:

       同时,越活跃的用户对物品相似度的贡献越低,我们可以通过以下相似度公式对用户活跃度进行惩罚,其中表示用户的活跃度:

       在得到物品的相似度后,该算法通过如下公式计算用户u对一个物品j的兴趣度:

       其中,是用户喜欢的物品的集合,是和物品j最相似的K个物品,是物品i、j的相似度,是用户u对物品i的兴趣度。

  1. 基于物品、用户协同过滤算法的比较

      

 

基于用户

基于商品

性能

适用于用户较少的场景

适用于物品数明显少于用户数的场景

实时性

用户有新行为,不会造成推荐结果的实时变化

用户有新行为,会造成推荐结果的实时变化

推荐理由

很难提供合理的推荐解释

利用用户的历史行为给用户做推荐解释

冷启动

在新用户对很少物品产生行为前,不能立即对他记性个性化推荐。

新物品上线后,一旦有用户对其产生行为,就可以将物品推荐给与其兴趣相似的用户

新用户只要对一个物品产生行为,就可以给他推荐和该物品相关的其他物品。

但将新物品推荐给用户,需要离线更新物品相似表。

领域

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

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

 

隐语义模型

       隐语义模型的核心思想是通过隐藏特征(latent factor)联系用户兴趣和物品。隐语义分析技术采取基于用户行为统计的自动聚类,从数据出发,自动找出物品所属的类别。LFM算法通过如下公式计算用户u对物品i的兴趣:

       其中,度量了用户u的兴趣与第k个隐类的关系,而度量了第k个隐类和物品i的关系。对于隐语义模型,我们需要根据最优化理论从训练数据中学习参数。构造训练数据的过程如下:

       对于一个用户,分别从他有行为、没有行为的物品集中采样出一些物品作为正、负样本,注意应使正负样本数量相当(采样负样本时,要选取那些很热门,而用户却没有行为的物品)。

       经过采样,可以得到一个用户-物品集,其中,如果是正样本,则,否则。然后我们需要优化以下损失函数来找到最合适的参数,

       其中,是用来防止过拟合的正则化项。我们可以通过梯度下降算法,不断迭代来优化损失函数。分别对参数求偏导得:

       如下执行梯度下降算法:

       其中,隐特征个数F、学习速率、正则化项、正/负样本比例分别是LFM算法的4个重要参数。

上下文问题

       推荐算法主要研究如何联系用户兴趣和物品,将符合用户兴趣的物品推荐给用户。与此同时,用户所处的上下文,包括用户访问推荐系统的时间、地点、心情等,有助于提高推荐系统的性能。

 

时间上下文

       时间上下文可以应用于基于物品的推荐算法中,具体体现在下面两个方面:

  1. 物品相似度:用户在相隔很多时间内喜欢的物品具有更高的相似度

  2. 在线推荐:用户近期行为相比用户很久之前的行为,更能体现用户的兴趣。

       在得到用户对物品产生行为的时间后,我们可以通过如下公式改进相似度计算:

       函数的含义是,用户对物品i,j产生行为的时间越远,则值越小。可以定义为:

       考虑到用户的兴趣应该和近期的行为更相关,可以将推荐公式定义为:

       时间上下文可以应用于基于用户的推荐算法中,具体体现在下面两个方面:

  1. 用户相似度:如果两个用户同时喜欢相同的物品,那这两个用户应该有更大的相似度
  2. 在线推荐:相同兴趣用户的近期行为更能提现用户现在的兴趣。

       在得到用户对物品产生行为的时间后,我们可以将用户相似度改进为如下公式:

       考虑到用户的兴趣应该和近期的行为更相关,可以将推荐公式定义为:

 

地点上下文

              用户所处的地点和用户兴趣息息相关,主要因为以下两个方面:

  1. 兴趣本地化:不同地方的用户兴趣存在着很大的差别

  2. 活动本地化:一个用户往往在附近的地方活动,因此在基于位置的推荐中,我们需要考虑推荐地点和用户当前地点的距离,不能给用户推荐太远的地方。

       在得到用户对物品产生行为的地点上下文后,我们可以先忽略物品的位置信息,利用基于物品或用户相关性的推荐算法计算用户u对物品i的兴趣度,并在最终生成推荐列表时适当对距离进行惩罚。

       或者我们可以将训练数据按位置信息构造为树形结构,比如国家、省、市的结构。然后,给定一个用户的位置,我们可以将他分配到某一个叶子节点中,而该叶子节点含有和他同一位置的用户的行为数据,然后在该子集上利用用户行为数据对用户进行推荐。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值