物品推荐系统中的挑战和解决方案

快速理解协同过滤:推荐系统小白指南 想快速掌握推荐系统的核心技术?协同过滤是其中最经典的方法之一,通过用户行为数据实现个性化推荐,广泛应用于电商和内容平台。 阅读详情

作者:datarevenue

编译:ronghuaiyang

导读

如何处理没有见过的数据,优化响应时间,并频繁更新模型。

Challenges & Solutions for Production Recommendation Systems

https://www.datarevenue.com/en-blog/building-a-production-ready-recommendation-system

如何处理不可见的数据,优化响应时间,并频繁更新模型。

介绍

有很多关于训练和评估推荐系统的文章,但很少有文章解释该如何克服建立全面系统的挑战。

大多数库都不支持开箱即用的可扩展生产系统。这些挑战通常是:

  • 动态预测 — 当你的用户/物品维度非常大的时候,它可能是非常低效的 — 或者说不可能预先计算好所有的推荐。

  • 优化响应时间 — 当你动态创建预测时,检索它们所需的时间非常重要。

  • 频繁更新模型 — 当系统需要合并可用的新数据时,频繁更新模型是至关重要的。

  • 基于没见过数据进行预测 — 这意味着要处理没见过的用户或物品,并不断地更改特征。

这篇文章将告诉你如何在一个完整的生产环境中修改模型来扩展它的功能。

混合推荐模型能更好地应对现实世界的挑战

我们使用了LightFM模型,这是一个非常流行的python推荐库,它实现了一个混合模型。它最适合中小规模的推荐项目 — 不需要分布式的训练。

简要介绍不同的推荐方法

有两种基本的推荐方法:

协同过滤 模型只使用协同过滤的信息 — 用户和物品之间隐式或者显式的交互(比如看过的电影,评分,是不是喜欢)。没有使用任何实际物品的信息(如电影类别,流派等)。

协同过滤模型在小数据集上可以得到很高的准确率,但是不能处理未知的用户或者物品(冷启动问题)。

协同模型可以在数据少的情况下达到**的高精度,但无法处理未知的用户或项目(**冷启动问题)。

基于内容的 模型完全基于关于物品或用户的可用数据,完全忽略了用户与物品之间的交互。所以他们处理推荐的方式与协同过滤模型非常不同。

基于内容的模型通常:

  • 需要更多的训练数据(你需要为几乎每一个单独的用户/物品组合提供用户/物品样本),并且

  • 比协同过滤模型更难调优。

但是,与协同过滤模型相比,它们可以对未知的物品进行预测,并且通常具有更好的覆盖率。

混合推荐 — 像LightFM一样,将两种方法结合起来,克服了每种方法的各自的缺点。

可以处理新物品或新用户:

当你将一个协同过滤模型部署到生产环境中时,你经常会遇到需要预测没有见过的用户或物品的问题 — 比如当一个新用户注册或访问你的网站,或者你的内容团队发布一篇新文章时。

通常,你必须至少等到下一个训练周期,或者等到用户与某个物品交互时,才能为这些用户提供建议。

但是,即使在这种情况下,混合模型也可以进行预测:它将简单地使用部分可用的特征来计算推荐。

混合模型还可以处理特征缺失:

有时,一些用户和物品会缺少一些特征(仅仅是因为你还没有能够收集它们),如果你依赖于基于内容的模型,这就是一个问题。

混合推荐器适用于为用户(那些从训练中了解到的用户)包括新用户返回物品,只要你有关于他们的特征。这对于物品尤其有用,对于新用户也是如此(当用户第一次访问你的站点时,你可以询问他们对什么感兴趣)。

系统组件

在这个系统中假设物品的数量比用户要少得多,因为它总是检索所有物品的预测。但它可以作为更复杂推荐的基础。

系统的核心是一个flask app,它接收一个用户ID,然后返回和该用户相关的物品。它将(重新)加载LightFM模型,并查询一个针对物品和/或用户特征的redis实例。

我们将假设用户和物品的特征是存储和序列化在一个redis数据库中,并可以随时由flask的应用程序来检索。

所有应用程序都将通过docker容器部署为微服务。

LightFM如何进行预测

但是这个东西怎么工作呢?

这篇LightFM论文:(https://arxiv.org/pdf/1507.08439.pdf)对于学术读者来说信息量很大,但是对于不太熟悉这个领域的人来说可能有点简略。我将在下面更简单地概述LightFM模型的预测的过程。

公式说明:

  • 小写字母表示向量,大写字母表示矩阵。

  • 下标u为单个用户,U为所有用户的集合。

  • 物品以相同的方式引用。

这里的命名大部分与LightFM论文一致。

模型的组成

LightFM结合了协同过滤和基于内容的方法。你可能会说它为两种方法中的每一种建模一个组件。这两个都是必要的,可以从推荐系统中得到我们想要的属性。

协同过滤部分

协作过滤部分允许你在没有任何特征或特征不能提供信息的情况下使用协同过滤算法。最先进的协同过滤算法是通过矩阵分解实现的。他们估计了两个潜在的(未观察到的)矩阵表示,当它们彼此相乘时,将重现训练期间模型看到的每个物品和用户的交互矩阵。当然,误差项可以允许一些噪声和避免过拟合。

打个简单的比方:试着因式分解12。我们可以用2和6,3和4,1和12等等。矩阵也是类似的。

我们称这些矩阵为潜在表示,因为它们是我们交互数据的压缩形式。

基于内容的部分

基于内容的部分允许你在没有交互数据的时候获得预测。

LightFM通过将用户和物品特征与潜在表示关联起来,从而合并了这些特征。假设特征和潜在表示是线性相关的。所以在向量形式中:

为用户的潜在表示,为单个用户特征的行向量,为估计的物品的嵌入,为用户emedding的偏差。(为了简单起见,我们将从现在开始忽略它们。)

看起来很像线性回归,对吧?除了是一个矩阵,其他都是向量。实际上,这实际上执行了多个回归:每个模型组件一个。同样,对于物品也是类似的。

在训练中,利用梯度下降算法估计用户嵌入和物品嵌入。嵌入矩阵中的每一行都是一个特征。嵌入矩阵的列称为分量。列的数量被设置为一个模型超参数,我们从现在开始将其称为d。

上面的图概括了为所有用户和所有物品进行预测的这个过程。因此,在步骤I中,我们将尺寸为的用户特征矩阵与尺寸为的嵌入矩阵相乘。同样的方法也适用于物品特征与物品嵌入的第二次乘法。由步骤I得到两个尺寸为和和的矩阵。因此,每个用户/物品都表示为大小为d的潜向量。

现在你可以很容易地获得一个单一用户的所有表示与以下条件:

是用户潜在表示的行向量,是所有物品的潜在表示的矩阵。

使用指示矩阵对协同过滤模型进行退化

LightFM可以只生成具有协同过滤信息的模型。它使用了一个非常有效的技巧:如果根本不使用用户或物品特征,模型将接受一个大小分别为或的单位矩阵。这是非常有效的,因为它随后学习d向量 — 每个用户一个。这样,模型就可以最终退化成最佳的纯协同过滤方法。你可以将这些组件看作是用户的模型记忆,以及在训练中已经看到的物品。

你还可以强迫模型退回到协同过滤模式 — 即使你有特征:你可以通过向其添加一个单位矩阵来修改特征矩阵。有时你需要这个来让你的模型收敛。然而,这通常意味着你的特征太过嘈杂或者没有携带足够的信息,以至于模型本身无法收敛。

最后,使用这种技巧增加了将模型投入生产所需的工作:在训练期间,用户的索引用于检索相应特征/单位矩阵的正确行 — 而这些信息在生产环境中可能不再可用,另外,LightFM模型将这个责任推卸给了用户。

有趣的事实

在欧几里得空间中,仅使用指示特征就可以获得的相似物品/用户的潜在表示(就协同过滤信息而言)是接近的。该模型基于协同过滤信息对它们进行估计。因此,你可以使用它们来查找物品或用户之间的相似性。

动态地重新创建指示器和特征

现在让我们实现一个模型,该模型可以回到协同过滤模式,跟踪IDs,从而能够重构正确的特征和指示器。

我们将聚焦在实现一个完整的方法。这是相当复杂的,因为同时,它应该能够在大多数情况下给出预测。我们将继承LightFM类并添加一个特殊的predict_online方法,该方法将在生产期间使用。

这样,我们仍然可以使用LightFM的cythonised预测函数,避免分别处理用户和物品ID的映射。

它应可以满足下列要求:

  1. 如果在训练过程中看到过用户/物品,则重构其指示特征

  2. 不管某个用户的数据是什么,都要进行在线预测

  3. 尽可能快地做出预测

ID映射

为了达到第一个要求,你必须在训练中使用同样的类。你还需要调整你的子类,使它在训练期间只接受稀疏矩阵,SparseFrame对象,因此创建并保存ID映射。

重构特征

为了实现第二个需求,你需要在每次请求传入时检查可用数据。有16种情况你必须处理:

在IV、VIII和XII的情况下,我们简单地返回我们的基线预测。对于XIII至XVI的情况,我们无法作出任何预测,因为我们对这些物品了解不够。

总结一下:我们基本上想要创建一个行向量,其中包含用户特征,如果它们是可用的。否则在相应的下标上都是0。如果用户在训练的时候见过,它还在正确的索引上包含了用户的指示特征。

物品特征与用户特征类似,只是我们希望它们能够很容易地放到内存中,以便进行缓存。你可以考虑根据你的使用情况使用不同的缓存策略(如TTLCache),或者根本不使用缓存。

我们还希望支持不添加指示器,或者只将它们添加到用户或物品特征中,这可能会使实现更加复杂。尽管如此,我们还是尽量保持简单。

下面是上述方法的示例实现。这个实现应该能够正确处理到VIII的所有情况。但是可能不是所有的项目用例都实现了,因为我们的应用程序不需要它。因此,预测没有项目特征的已知项目是不可能的,但它应该很容易添加。

本文的第二部分使用这个类,将它连接到一个redis数据库,并使用flask动态地提供它的预测。我们还将向你展示如何使用从flask应用程序内部启动的后台线程在不停机的情况下更新模型。

代码链接:https://gist.github.com/kayibal/16340660d1d85b9ea1872a5d9be0f383

英文原文:https://www.datarevenue.com/en-blog/building-a-production-ready-recommendation-system

完)


GNN在推荐系统中的挑战、方法和方向 GNN在推荐系统中的挑战、方法和方向 今天给大家介绍清华大学李勇、中科大何向南老师团队有关GNN和推荐系统的综述:Graph Neural Networks for Recommender Systems: Challenges, Methods, and Directions。这篇文章对图神经网络及其在推荐系统中的应用进行了详细的调研,从不同角度对GNN在推荐系统的应用进行了分类,最后基于这些调研对领域内存在的问题和发展方向进行了讨论。 推荐系统的发展历程 浅层模型 早期的推荐模型主要通过计算交互的 阅读详情

相关推荐

当前音乐推荐系统研究中的挑战和愿景

近年来,由于在线流媒体服务的出现和成功,音乐推荐系统(MRS)经历了飞速发展,如今,在线推荐服务几乎可以使所有音乐触手可及。尽管当今的MRS可以极大地帮助用户在这些庞大的目录中找到有趣的音乐,但MRS的研究仍面临着严峻的挑战。特别是在构建、合并和评估推荐策略时,这些策略除了将信息整合到简单的用户物品交互、基于内容表达之外,还需要深入挖掘听众的需求、偏好和意图的本质。MRS研究成为很大的努力方向,但相关的出版物却很少。此趋势和调查文章的目的是双重的。

5491

推荐系统的机遇与挑战

本文是就17号上午发布的《个性化推荐系统学习总结》之后的又一新作。 本文主要讲述目前推荐系统所遇到的机遇与挑战。 所谓机遇包含推荐系统与当前深度学习、知识图谱的结合性研究,并对可解释性的推荐系统做出相关综合性描述; 所谓挑战,则是更加深入地将推荐系统所面临的托攻击进一步展开讲解——即攻击如何检测与防御,以及讲解两种解决稀疏性问题的算法PearAfterSVD与LCM_STI。...

GitChat 648

大模型在推荐系统中的图卷积网络应用

大模型在推荐系统中的图卷积网络应用 摘要 本文深入探讨了大模型在推荐系统中的图卷积网络应用。首先,介绍了推荐系统的基本概念、分类以及核心问题。接着,详细阐述了图卷积网络的基本概念、数学原理和常见架构。随后,探讨了大模型的基本原理及其在推荐系统中的应用潜力。文章重点分析了图卷积网络在用户行为分析、

AI天才研究院 949

个性化推荐的十大挑战

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33852020的博客 423

P5模型在推荐系统的应用:统一的任务解决方案

P5模型在推荐系统的应用:统一的任务解决方案 关键词:P5模型、推荐系统、统一任务解决方案、协同过滤、内容过滤、混合过滤、评分预测、用户画像、模型评估 1. 背景介绍 随着互联网的发展,海量的信息和商品让用户面

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 1193

大数据与推荐系统:协同过滤算法详解

本文旨在全面解析推荐系统中的协同过滤算法,涵盖从基础理论到实践应用的各个方面。协同过滤的基本原理和分类相似度计算方法矩阵分解技术实际应用中的挑战和解决方案Python实现示例背景介绍:介绍推荐系统和协同过滤的基本概念核心概念与联系:详细解释协同过滤的工作原理核心算法原理:深入分析协同过滤的数学基础数学模型和公式:展示相关数学理论和推导项目实战:提供Python实现和代码解读实际应用场景:讨论协同过滤在现实中的应用工具和资源推荐:列出学习和开发资源。

软件工程实践的博客 849

推荐系统中的个性化推荐策略的优化

1.背景介绍 1. 背景介绍 推荐系统是现代互联网公司的核心业务,它可以根据用户的历史行为、兴趣爱好等信息,为用户推荐个性化的内容、商品、服务等。个性化推荐策略的优化是提高推荐系统的准确性和用户满意度的关键。 在推荐系统中,个性化推荐策略的优化主要包括以下几个方面: 用户特征的提取和筛选 物品特征的提取和筛选 用户行为的建模和预测 推荐策略的选择和优化 本文将从以上几个方面进行深入探...

AI天才研究院 1375

利用大模型优化推荐系统的长尾物品曝光

利用大模型优化推荐系统的长尾物品曝光 关键词: 推荐系统、长尾物品、大模型、深度学习、优化、曝光率 摘要: 本文深入探讨了利用大模型优化推荐系统中长尾物品曝光的问题。首先,我们介绍了推荐系统的基本概念、发展历程和应用场景,然后分析了长尾物品

AI天才研究院 1035

《推荐系统实践》读书笔记4

利用上下文信息 系统时间特性的分析 为什么要研究系统的时间特性? 不同系统有不同的时效性,有的系统物品的时效性很短,热起来,很快会冷下去;而有的系统物品的时效性长,具有比较长的生命周期。 研究系统的时间特性,能增强系统的有效性推荐。比如推荐新闻,会主要选择最近时间段发生的新闻事件进行推荐;而推荐旅游景点,时效性较长(有些也有季节性变化),则考虑主要从用户目前的兴趣出发来推荐景点。 如何研究系统的时...

qq_33700082的博客 272

对工时评估的思考:当AI颠覆了coding效率

在AI时代,“人日”作为软件工时度量衡已然失效。开发的价值核心正从“编码实现”转向“深度思考”与“精准沟通”——即如何将人类的模糊需求精确地传达给AI。当最有价值的“思想工作”变得最难量化时,传统的项目管理范式随之动摇。我们必须超越对过程的算计,开始探索衡量思想、沟通与业务价值的新标尺。

架构师刘7的博客 1017

ENVI中Landsat8大气校正法实现地表温度精准反演

本文详细介绍了在ENVI软件中,利用大气校正法对Landsat8热红外数据进行地表温度反演的完整流程。该方法通过辐射定标、大气参数获取、发射率估算及温度转换四个核心步骤,精准剔除大气干扰,还原地表真实温度,是城市热岛效应监测、农业旱情分析等应用的关键技术。

weixin_29292535的博客 150

冷启动原理与项目实战

一、冷启动原理与项目实战 1 冷启动原理与技术原理 推荐系统需要根据用户的历史行为和兴趣预测用户未来的行为和兴趣,因此大量的用户行为数据就称为推荐系统的重要组成部分和先决条件。很多在开始阶段就希望有个性化推荐应用的网站来说,在没有大量用户数据的情况下设计个性化推荐系统并且让用户对推荐结果满意从而愿意使用推荐系统,就是冷启动问题。本质:商品或用户多、但行为历史数据或特征历史数据少。 1.1 冷启动问题 用户不确定性需求是客观存在的,在当今信息爆炸的时代,用户的不确定性需求更加明显,而推荐作为一种解决用户不确定

weixin_44888486的博客 1500

前端零代码丨UIOTOS + NodeRed:无代码搭建工控上位机的绝配组合!

用户类型价值硬件产品商软硬一体方案,无代码GUI上位机成新卖点软件服务商售前原型演示利器,交付成本降低至1/3平台开发商融合无代码技术,同质化竞争中脱颖而出🚀 总结UIOTOS的前端零代码设计(页面嵌套、属性继承、节点连线)与NodeRed的后端流程自动化,堪称工控与IoT开发的黄金组合。无论是串口通信、SCADA监控还是业务管理,均能实现“无代码交付”,真正让前端不求人,硬件交互触手可及!探索更多案例:UIOTOS官网在线体验。

2502_91192798的博客 757

java 推荐系统_电商个性化推荐系统:协同过滤算法方案解析

算法简介在网络资讯和电子商务信息爆炸式的增长,繁杂的信息中容易造成流失,再次背景下用户的个性化推荐系统显得尤为重要,对电子商务平台和社交信息平台产生了质的影响。协同过滤推荐算法是诞生最早,并且较为著名的推荐算法。主要的功能是预测和推荐。算法通过对用户历史行为数据的挖掘发现用户的偏好,基于不同的偏好对用户进行群组划分并推荐品味相似的商品。其主要价值体现在:将潜在用户转化为支付用户;提升电子商务平台交...

weixin_34548449的博客 2139

STorM BGC V1.31硬件+SimpleBGC固件:从零搭建三轴云台开发环境(Keil+JLink避坑指南)

本文详细介绍了如何从零搭建STorM BGC V1.31硬件+SimpleBGC固件的三轴云台开发环境,涵盖硬件连接、Keil+JLink开发工具配置、固件编译与烧录等关键步骤,并提供了常见问题的解决方案和调试技巧,帮助开发者快速上手三轴云台开发。

weixin_28693683的博客 380

Avalonia+ReactiveUI跨平台路由:从零到舞者,你的UI也能跨界起舞?

至此,你已掌握了Avalonia+ReactiveUI的跨平台路由精髓!你的应用现在能够优雅地在各个界面间穿梭,就像是在不同星球间跳跃的宇宙飞船。无论是初探跨平台开发的新手,还是经验丰富的老船长,这段旅程都能让你的UI编排技能更上一层楼。现在,是时候让世界见证你的跨平台魔术了!💫记住,每一次实践都是向着完美编舞迈进的一步,勇敢地在你的项目中尝试吧!如果在航行中遇到风暴,别忘了回来看看这篇指南,或者在评论区抛出你的救生圈,我们一起解决!🌊。

java专栏 1534

构建企业级推荐系统(10):推荐系统冷启动

《构建企业级推荐系统》新书已出版,强烈建议收藏加关注,文章免费看!

大数据与人工智能 871

地图之家总目录

地图之家总目录 cesium示例 leaflet示例

GIS之家家长 1万+

推荐算法二_推荐算法再深入

推荐系统

qq_41829867的博客 228

【IoT】 产品设计之结构设计:如何设计产品按键

1、硅胶按键功能实现有两种接触方式 1)硅胶按键按压在DOME片(锅仔片)上 通常用在手机、儿童手表手机、防水手机等防水设备上。 2)硅胶按键增加导电基,一种黑色的导电碳粒,实现回路导电 通常用在遥控器、电脑键盘、特殊设备上。 两种方式结构设计原理是一样的,按键的固定与配合间隙与行程要确保好。 2、硅胶遥控器按键的结构方式(导电基) 按键帽为大颗粒实心的,触点为黑色导电基,通过压注成型融合为一体,那么这种按键结构设计时需要注意那些呢? 最主要的是按键按压回弹的手感,由于没有DOME片实现

产品线负责人 8670

在 SAP 系统中,成本中心(Cost Center)是成本核算与费用管控的基础组织单元,其设计质量直接决定了后续成本归集、分摊、分析及责任考核的准确性

SAP系统成本中心设计核心要点:1. 设计原则包括责任可控、业务同质、核算颗粒度适配、组织对齐及稳定性平衡;2. 划分维度主要有部门、功能、地域、项目和资产5类,可组合使用;3. 需避免颗粒度过细、跨责任主体归集等常见误区;4. 建议采用"明确目标-梳理业务-设计编码"三步法,建立科学的成本中心体系。合理的成本中心设计能精准归集费用、明确责任主体,为成本分析和管控奠定基础。

金牌架构师 1439

计算机毕业设计Python+Django协同过滤算法房源推荐系统 二手房数据分析 二手房推荐系统 租房推荐 大数据毕业设计 大数据毕设

本文设计实现了一个基于Python+Django的协同过滤房源推荐系统。系统采用基于用户的协同过滤算法,通过用户历史行为数据挖掘兴趣偏好,实现个性化推荐。利用Django框架构建后端,MySQL存储数据,实现了用户相似度计算、邻居选择、推荐列表生成等核心功能。实验结果表明,在K=20、N=10参数下,系统准确率达85.3%,召回率78.6%,F1值81.8%,显著提升了房源匹配效率和用户体验。未来将探索多算法融合和实时推荐优化方向。

全网计算机/大数据辅导(自媒体)道祖第一人、全网粉丝100W+,专注于大学生项目实战开发,讲解,毕业答疑辅导,高校老师/讲师/同行合作。以及产品测评宣传、工具推广等合作。同时招收学生代理、校园代理。 808

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

上一篇: BERT中的黑暗秘密
下一篇: 把BERT的推断速度提升17倍
Wang_AI
博客等级 码龄12年 991粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值