欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > windows >内容正文

windows

推荐系统笔记:Introduction

发布时间:2025/4/5 windows 29 豆豆
生活随笔 收集整理的这篇文章主要介绍了 推荐系统笔记:Introduction 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1  推荐系统的基本模型

推荐系统的基本模型使用两种数据,分别是

(i)用户-商品交互,如评级或购买行为;

(ii)关于用户和商品的属性信息,如文本配置文件或相关关键字。

使用前者的方法被称为协同过滤(collaborative filtering)方法,而使用后者的方法被称为基于内容的推荐方法。

注意,基于内容的系统在大多数情况下也使用交互数据,尽管该模型通常关注单个用户的评级,而不是所有用户的评级。

在基于知识的推荐系统(knowledge-based)中,推荐是基于明确指定的用户需求。不使用历史评级或购买数据,而是使用外部知识库和约束来创建推荐。

一些推荐系统将这些不同的方面结合起来,形成混合系统。混合系统可以结合各种类型的推荐系统的优势,创建能够在各种设置中更稳健地执行的技术。

1.1 协同过滤模型

        协同过滤模型利用多个用户提供的打分进行推荐。

        设计协同过滤方法的主要挑战是底层的评级矩阵是稀疏的

        考虑一个电影应用程序的例子,在这个应用程序中,用户通过打分表明他们喜欢或不喜欢特定的电影。大多数用户只会观看大量可用电影中的一小部分。因此,大多数评级都是缺失的。

        协同过滤方法的基本思想是,这些缺失的打分可以补全,因为观察到的打分通常在不同用户和项目之间高度相关

        例如,考虑两个名为Alice和Bob的用户,如果两者都打分了的电影的评级非常相似,那么我们可以认为这两个用户的品味很相似。在这种情况下,如果某部电影只有一个用户打分,那另一个用户的预测打分很有可能也会接近这个观测到的打分。

        这种相似性可以用来推断缺失的值。

        大多数协同过滤模型关注于利用预测过程中的项间相关性(inter-item)或用户间相关性(inter-user)。有些模型使用两种类型的相关性。

        此外,一些模型使用精心设计的优化技术来创建训练模型,就像分类器从标签数据中创建训练模型一样。

        然后使用这个模型来补全输入矩阵中缺失的值,就像分类器输入缺失的测试标签一样。

        协同过滤中常用的方法有两种,分别是基于记忆的方法基于模型的方法:

1.1.1  基于记忆的方法

        基于记忆的方法也称为基于邻居的协同过滤算法。这是最早的协同过滤算法之一,在这种算法中,用户-物品组合的评级是基于他们的邻居来预测的。

        这些社区可以通过以下两种方式定义:

  • 基于用户user的协同过滤:

       在这种情况下,使用目标用户 A 的“志同道合”的用户提供的评分来为 A 做出推荐。

         因此,基本思想是确定与目标用户 A相似的用户 ,并通过计算该组评分的加权平均值,为 A 未观察到的评分推荐评分。

        因此,如果 Alice ,Carol和 Bob 过去曾以类似的方式对电影进行评分,那么可以使用 Alice 和 Carol 在某部电影上观察到的评分来预测 Bob 在这部电影上未观察到的评分。、

         通常,可以使用与 Bob 最相似的 k 个用户来对 Bob 进行评分预测。

         在评分矩阵的行之间计算相似性函数以发现相似的用户

  • 基于项目item的协同过滤:

        为了对用户 A 对目标项目 B 进行评分预测,第一步是确定与目标项目 B 最相似的项目集 S。

        项目集 S 中的评分为 由 A 指定,用于预测用户 A 是否会喜欢项目 B。

         比如,Bob 在 Alien 和 Predator 等类似科幻电影中的评分可以用来预测他对 Terminator 的评分。

        在评分矩阵的列之间计算相似性函数以发现相似的项目。

         基于记忆的技术的优势在于它们易于实现,并且产生的推荐通常易于解释。

        另一方面,基于内存的算法在稀疏打分矩阵上效果不佳

        例如,可能很难找到与给电影A评分的、和用户 Bob 足够相似的用户。

         在这种情况下,很难可靠地预测Bob对电影A的评分。

         换句话说,这些方法可能缺乏对评级预测的全面覆盖

        然而,当只需要前 k 个项目时,缺乏覆盖通常不是问题。

1.1.2 基于模型的方法

        在基于模型的方法中,机器学习和数据挖掘方法被使用。 

      这种基于模型的方法的一些示例包括决策树、基于规则的模型(rule-based)、贝叶斯方法和潜在因素模型(latent factor model)。

        许多这些方法,例如潜在因子模型,即使对于稀疏评级矩阵也具有很高的覆盖率。  

1.1.3 协同过滤 与 回归&分类

        协同过滤方法可以被视为分类和回归建模的延申。

        在分类和回归建模问题中,因变量y可以被视为具有缺失值的属性。其他列被视为特征/自变量。

        协同过滤问题可以看作是这个框架的延申,因为任何列都可以有缺失值,而不是(仅)类变量。在推荐问题中,类变量和特征变量之间没有明显的区别,因为每个特征都扮演着因变量和自变量的双重角色。

        此外,协同过滤中的训练行和测试行没有区别,因为任何行都可能包含缺失的条目。

        因此,在协同过滤中谈论训练和测试条目比训练和测试更有意义。

        分类/回归建模和协同过滤之间的这种关系很重要,因为分类和回归建模方法的许多原则可以推广到推荐系统。

        还有一点不同的是,在分类/回归任务重,列代表不同的特征维度,行代表不同的数据样本。但是在协同过滤中,对user-item矩阵/它的转置用同样的一种算法可能是可行的(因为可能只是从user-based 转换成了 item-based) 

1.2 基于内容的推荐系统

        在基于内容的推荐系统中,项目的描述性属性用于进行推荐。

         “内容”指的就是这些描述。 在基于内容的方法中,用户的评分和购买行为与项目中可用的内容信息相结合。

        例如,考虑这样一种情况,Bob对电影A的评价很高,但我们无法访问其他用户的评价。 因此,排除了协同过滤方法。

        但是,电影A的项目描述包含与其他科幻电影类似的类型关键字。 在这种情况下,这些其他科幻电影可以推荐给Bob。  

        当某一个项目没有足够的评分数据时,基于内容的方法在为新项目推荐方面具有一些优势。         这是因为其他具有相似属性的项目可能已被活动用户评分。

        因此,即使没有该项目的评分历史,监督模型也能够将这些评分与项目属性结合起来进行推荐。(以基于内容的协同过滤作为对比,无论是基于用户还是基于item,新项目都很难推荐到)

        基于内容的方法也有几个缺点

         1. 不具备一定外推的能力。例如,如果用户从未使用过具有特定关键字集的商品,则此类商品没有机会被推荐。这种现象往往会降低推荐项目的多样性,这是不可取的。

        2. 尽管基于内容的方法在为新项目提供推荐方面有效,但在为新用户提供推荐方面效果不佳。这是因为目标用户的训练模型需要使用她的评分历史。事实上,为目标用户提供大量可用的评分通常很重要,以便在不过拟合的情况下进行稳健的预测。

         因此,基于内容的方法与协同过滤系统有不同的权衡。  

         有时会使用更广泛的内容。例如,用户可以在自己的配置文件中指定相关的关键字。这些配置文件可以与项目描述相匹配,以便提出建议。这种方法在推荐过程中不使用评级。

        然而,这种方法通常被视为一类独特的推荐系统,称为基于知识的系统,因为相似度指标通常基于领域知识 domain knowledge

        基于知识的推荐系统通常被认为与基于内容的推荐系统密切相关,有时人们会怀疑这两类方法之间是否存在明确的界限。

1.3 基于知识的推荐系统

        基于知识的推荐系统在不经常购买的物品的情况下特别有用。包括房地产、汽车、旅游请求、金融服务或昂贵的奢侈品等项目。

        在这种情况下,推荐过程可能无法获得足够的评级。由于物品很少购买,并且具有不同类型的详细选项,因此很难为手头物品的特定实例(即选项组合)获得足够数量的评分。

        此外,在处理此类物品时,消费者偏好的性质可能会随着时间的推移而演变。例如,汽车的模型可能会在几年内发生显着变化,因此偏好可能会显示出相应的变化。

        在其他情况下,可能很难用评级等历史数据来完全捕捉用户的兴趣。特定项目可能具有与其相关联的属性,并且用户可能只对特定项目的这一属性感兴趣。比如一个人可能喜欢红颜色的车,绿颜色的帽子(大雾),那么不能可能就不能用某人对帽子颜色的打分数据来对汽车的颜色打分。

        这种情况可以通过基于知识的推荐系统来解决,其中评级不用于推荐。

        相反,推荐过程是基于客户需求和项目描述之间的相似性

        知识库的使用促进了该过程,其中包含有关在检索过程中使用的规则相似性函数的数据。知识库对于方法的有效运行非常重要,需求的明确导致用户对推荐过程的更大控制。

        在协同过滤和基于内容的系统中,推荐完全由用户过去的动作/评分、其他人的动作/评分或两者的组合决定。

        基于知识的系统的独特之处在于它们允许用户明确指定他们想要什么。  

方法目标输入内容
协同过滤根据目标用户/其他用户的打分,进行推荐用户打分
基于内容根据过去打分和动作的内容,进行推荐用户打分+条目属性
基于知识根据我对物品的显示要求,进行推荐

用户属性

物品属性

领域知识

1.3.1 基于约束的推荐系统

        在基于约束的系统中,用户通常指定项目属性的要求或约束(例如,下限或上限)。

        特定领域的规则(domain-specific rules)用于将用户需求与项目属性相匹配。这些规则代表系统使用的特定领域知识。此类规则可以采用对项目属性的约束的形式(例如,“1970 年之前的汽车没有巡航控制。”)。

        此外,基于约束的系统通常会创建将用户属性与项目属性相关联的规则(例如,“老年投资者不投资超高风险产品。”)。

        根据返回结果的数量和类型,用户可能有机会修改他们的原始需求。例如,当返回的结果太少时,他们可能会放宽一些约束,或者他们可能会添加更多约束。这个搜索过程交互地重复,直到用户到达她想要的结果。

 1.3.2 基于案例的推荐系统

        在基于案例的推荐系统中,特定案例由用户指定为目标或锚点

         在项目属性上定义相似性度量以检索与这些案例相似的项目。相似性度量通常以特定于域的方式进行定义。 因此,相似性度量形成了在此类系统中使用的领域知识。

         返回的结果通常用作新的目标案例,并由用户进行一些交互修改。 例如,当用户看到与他们想要的几乎相似的返回结果时,他们可能会重新发出具有该目标的查询,根据用户的喜好更改了一些属性。 该交互过程用于引导用户找到感兴趣的项目。

1.3.3 和基于内容的推荐系统的区别

        值得注意的是,基于知识和基于内容的系统都显着依赖于项目的属性。

        由于使用了内容属性,基于知识的系统继承了一些与基于内容的系统相同的缺点。 例如,就像基于内容的系统一样,基于知识的系统中的推荐有时可能很明显,因为没有利用社区(即同行)评级的使用。

        事实上,基于知识的系统有时被认为是基于内容的系统的“表亲”。 主要区别在于,基于内容的系统从过去的用户行为中学习,而基于知识的推荐系统根据他们的需求和兴趣的主动用户规范进行推荐。 因此,在大多数推荐文献中,基于知识的推荐被认为是与基于内容的推荐不同的类别

1.3.4 基于效用的推荐系统

        在基于效用的推荐系统中,效用函数 utility function 定义在产品特征上,以计算用户喜欢该项目的概率 。

        基于效用的方法的核心挑战是为手头的用户定义合适的效用函数。 值得注意的是,所有推荐方案,无论是协同过滤、基于内容还是基于知识的方法,都根据目标用户的感知价值(或效用)对推荐项目进行隐式排名。

        在基于效用的系统中,该效用值基于先验已知的函数。 从这个意义上说,这些功能可以看作是一种外部知识。

        因此,基于效用的系统可以被视为基于知识的推荐系统的一个特定案例。 

2 混合推荐系统

        上述三个系统利用不同的输入源,它们可能在不同的场景中运行良好。

         例如,协同过滤系统依赖于社区评分,基于内容的方法依赖于文本描述和目标用户自己的评分,而基于知识的系统依赖于在知识库上下文中与用户的交互。 

         值得注意的是,这些不同的系统使用不同类型的输入,并具有不同的优势和劣势。 一些推荐系统,例如基于知识的系统,在大量数据不可用的冷启动设置中更有效。 当有大量数据可用时,其他推荐系统(例如协同过滤)会更有效。

         在有更多输入可用的许多情况下,可以灵活地为同一任务使用不同类型的推荐系统。 在这种情况下,存在许多混合的机会,在这种情况下,来自不同类型系统的各个方面被结合起来以实现所有领域的最佳效果。

3 推荐系统中特定领域的挑战

3.1 基于上下文的推荐系统

        基于上下文或上下文感知的推荐系统在提出建议时会考虑各种类型的上下文信息。 此类上下文信息可能包括时间、位置或社交数据。 例如,零售商推荐的衣服类型可能取决于季节和客户所在的位置。 另一个例子是特定类型的节日或假期影响潜在客户活动的情况。

        人们普遍观察到,使用此类上下文信息可以大大提高推荐过程的有效性。 基于上下文的推荐系统非常强大,因为其基本思想与各种特定于领域的设置相关。

3.2 时间敏感的推荐系统

        在许多情况下,对项目的推荐可能会随着时间而变化。例如,电影上映时的推荐可能与几年后收到的推荐大不相同。在这种情况下,在推荐过程中加入时间知识是极其重要的。

        此类推荐系统中的时间信息可以通过以下几种方式反映出来:

1. 一个项目的评分可能会随着时间的推移而变化

 2. 项目的评级可能取决于一天中的特定时间、星期几、月份或季节例如,在夏季推荐冬季服装或在旱季推荐雨衣就没有什么意义。

        第一种推荐系统是通过在协同过滤系统中将时间作为显式参数而创建的。(原来可能是Alice对A的打分、Alice对B的打分这样。现在是Alice在12点对A的打分、Alice在13点对A的打分、Alice在12点对B的打分、Alice在13点对B的打分这样)

        第二种类型可以看作是基于上下文的推荐系统的特例

        时间推荐系统具有挑战性,因为评分矩阵是稀疏的,并且特定时间上下文的使用加剧了稀疏问题。因此,大型数据集尤为重要。

3.3 基于地点的推荐系统

        随着支持 GPS 的移动电话的日益普及,消费者通常对基于位置的推荐感兴趣。例如,旅行用户可能希望基于她之前对其他餐厅的评级历史来确定最近的餐厅。(类似于大众点评)

      此类系统共有两种类型的空间局部性:

1. 用户特定位置:用户的地理位置在她的偏好中起着重要作用。例如,来自上海的用户可能与来自北京的用户具有不同的偏好。这种类型的位置被称为偏好位置。

2. 特定于物品的位置:物品的地理位置(例如,餐厅)可能会影响物品的相关性,具体取决于用户的当前位置。用户通常不愿意选择离他们当前位置很远的地方。

        偏好地点和旅行地点的算法完全不同。前者更接近于上下文敏感的系统,而后者通常被设计为特别启发式。由于移动电话和其他支持 GPS 的设备的日益普及,基于位置的推荐系统近年来受到越来越多的关注。

3.4 社交推荐

        社交推荐系统基于网络结构、社交线索和标签,或这些不同网络方面的组合。 一般来说,基于社交线索和标签的推荐系统与网络纯粹基于结构方面的推荐系统略有不同。 纯粹基于网络结构方面的推荐系统用于推荐网络本身内的节点和链接。 另一方面,社交推荐系统也可用于通过社交线索推荐各种产品。

4 其他内容

4.1 推荐系统中的冷启动问题

        推荐系统的主要问题之一是最初可用的评分数量相对较少。 在这种情况下,应用传统的协同过滤模型变得更加困难。 虽然在这种情况下,基于内容和基于知识的方法比协作模型更稳健,但此类内容或知识可能并不总是可用。 因此,已经设计了许多特定方法来改善推荐系统背景下的冷启动问题。

4.2 抗攻击推荐系统

        推荐系统的使用对各种产品和服务的销售有重大影响。因此,产品和服务的卖家有很大的经济动机来操纵推荐系统的输出。

        这种操纵的一个例子是向推荐系统提交他们自己产品的夸大评级。恶意竞争对手可能会对竞争对手的产品提交有偏见的负面评论。

        这种攻击是非常不可取的,因为它们会降低推荐系统的整体有效性并降低合法用户的体验质量。因此,需要在存在此类攻击的情况下启用可靠推荐的方法。

4.3 群组推荐系统

        传统推荐系统的一个有趣的扩展是群组推荐系统的概念。在这种情况下,推荐系统被定制为向一组用户而不是单个用户推荐特定活动

        示例可能包括一群人观看电影或电视、在健身中心选择音乐或向一群游客推荐旅行。

        最早的推荐系统聚合个人用户偏好,以创建群组推荐。然而,多年来的共识已经演变成设计推荐系统,这比它们各部分的总和更好,并且可以在设计推荐时考虑不同用户之间的交互

        当群体中包含具有不同品味的用户时,简单的平均策略效果不佳。这是因为用户往往会基于社会心理学现象,例如情绪传染和从众,对彼此的品味产生影响。

4.4 多标准推荐系统

        在多标准系统中,单个用户可能基于不同的标准来指定评级。

        例如,用户可能会根据情节、音乐、特效等对电影进行评分。

        此类技术通常通过将用户对项目的效用建模为对应于各种标准的评分向量来提供推荐。

        在多标准推荐系统中,仅使用总体评分与传统推荐系统相结合通常会获得误导性结果。例如,如果两个用户对一部电影的总体评分相同,但他们对情节和音乐的组成评分非常不同,那么从基于相似性的协同过滤算法的角度来看,这两个用户不应该被认为是相似的。

4.5 推荐系统中的主动学习

        推荐系统的一个主要挑战是获得足够的评分以进行可靠的预测。

        评分矩阵的稀疏性仍然是推荐系统有效运行的重大障碍。获得足够的评分可以减少稀疏问题。各种现实世界的推荐系统都有鼓励用户输入评分以填充系统的机制。例如,可能会向用户提供对某些项目进行评级的激励。

        一般来说,由于获取过程的成本较高,往往很难从单个用户那里获得过多的评分。因此,必须明智地选择要由特定用户评分的项目

        例如,如果用户已经对很多动作片进行了评分,那么要求用户对另一部动作片进行评分对预测其他动作片的评分没有多大帮助,对于预测属于不相关类型的电影的评分帮助更小.

        另一方面,要求用户对打分人次较少的类型的电影进行评分将有助于预测属于该类型的电影的评分。当然,如果要求用户对不相关的电影进行评分,则她没有必要提供反馈,因为她可能根本没有看过那部电影。因此,在推荐系统的主动学习问题中存在许多有趣的权衡,这些在分类等其他问题领域中是没有遇到的。

参考资料

Sci-Hub | Recommender Systems | 10.1007/978-3-319-29659-3

总结

以上是生活随笔为你收集整理的推荐系统笔记:Introduction的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。