recommender-system-tutorial

recommender-system-tutorial

使用TensorFlow和Keras构建推荐系统的实践教程

本项目提供了一个详细的推荐系统开发教程,基于TensorFlow Recommenders和Keras。教程介绍了信息检索和推荐系统基础,通过Jupyter notebook展示了MovieLens数据集处理、特征预处理、检索和排序模型构建,以及Spotify Annoy相似项搜索。内容涵盖了推荐系统的核心技术和实践方法,适合学术研究者和业界专业人士学习。

TensorFlow推荐系统机器学习深度学习MovieLens数据集Github开源项目

使用TensorFlow和Keras构建推荐系统

这是一个使用TensorFlow RecommendersKeras开发实用推荐系统(检索排序任务)并使用TensorFlow Serving部署的分步教程。

在这里,你可以找到关于信息检索和推荐系统的介绍,然后你可以探索Jupyter笔记本并在Google Colab中运行它以学习代码。

在Colab中打开 <a target="_blank" href="https://lightning.ai/new?repo_url=https%3A%2F%2Fgithub.com%2Fxei%2Frecommender-system-tutorial%2Fblob%2Fmain%2Frecommender_system_tutorial.ipynb"> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/66cbfc41-8be4-4c71-8be8-d0a3ec27774c.svg" alt="在Studio中打开" /> </a>

在笔记本中,我们使用TesorFlow Datasets加载MovieLens数据集,使用Keras预处理层预处理其特征,使用TensorFlow Recommenders构建检索排序任务,并使用Spotify Annoy对相似项目进行索引和搜索。

本教程推荐给学术和行业爱好者。

简介

什么是推荐系统?

在线服务通常提供数千、数百万甚至数十亿的项目,如产品、视频片段、电影、音乐、新闻、文章、博客帖子、广告等。例如,Google Play商店提供数百万的应用程序,而YouTube提供数十亿的视频。[1]

然而,用户更喜欢看到一个简短的可能感兴趣的项目列表,而不是在完整的语料库中挣扎。他们通常可以搜索或过滤列表以找到最佳的几个项目,但有时他们甚至不知道自己真正想要什么(例如生日礼物)。在实体店中,专业销售员会通过有用的推荐来帮助解决这种情况。那么,为什么在在线商店中不这样做呢?

推荐系统可以检索、过滤并推荐最适合用户的个性化结果——用户可能会购买的结果。因此,它是现代企业提高转化率的主要要求之一。2009年9月21日,Netflix向一个团队颁发了100万美元的大奖,该团队的算法在预测评分方面比Netflix自己的算法提高了10.06%。[2]

<p align="center"> <img width="634" height="416" src="https://yellow-cdn.veclightyear.com/0a4dffa0/6afe2462-3302-4407-b11d-ecc351bd394b.jpeg"> </p>

推荐系统是一个根据查询(上下文)(即我们所知道的喜好列表)来过滤语料库(完整的项目目录)并生成候选项(项目、文档)简短列表的系统。查询(上下文)可以是用户ID用户的地理位置用户的历史购买记录,而生成的候选项可以是我们猜测用户可能感兴趣的一些新项目。

查询也可以是项目ID其图像其文本描述,而候选项可以是语料库中的一些相似或相关项目。

<p>&nbsp;</p> <p align="center"> <img width="556" height="82" src="https://yellow-cdn.veclightyear.com/0a4dffa0/1ec32d83-568e-4e68-8546-88742f8a6a27.png"> </p> <p>&nbsp;</p>

推荐阶段(任务)

在实践中,处理大型语料库并将其过滤成简短列表是一项难以处理且效率低下的任务。因此,实际的推荐系统通常有两个(或三个)过滤阶段:

  1. 检索(候选生成)
  2. 排序(评分)
  3. 重新排序或优化等
<p align="center"> <img width="700" height="394" src="https://yellow-cdn.veclightyear.com/0a4dffa0/e986505b-591a-473e-a7ee-04b1f54fa09d.png"> </p> <p align="center"> <img width="700" height="394" src="https://yellow-cdn.veclightyear.com/0a4dffa0/a5a74e44-b028-4ce3-8fb5-f713069784e1.png"> </p>

基于内容的过滤与协同过滤

过滤项目是基于相似性的。我们可以基于相似的候选项(基于内容的过滤)或基于查询和候选项之间的相似性(协同过滤)来过滤列表。协同过滤算法通常比基于内容的方法表现更好。

<p align="center"> <img width="700" height="330" src="https://yellow-cdn.veclightyear.com/0a4dffa0/745562aa-b11f-4129-b020-ef65a234855b.png"> </p> ### 查询或候选项的表示

查询或候选项有许多不同的特征。例如,查询可以由以下特征构成:

  • 用户ID
  • 用户历史记录
  • 用户职业
  • 等等

而候选项可以具有如下特征:

  • 项目描述
  • 项目图片
  • 项目价格
  • 发布时间
  • 等等

这些明显的特征可以是"数值变量"、"分类变量"、"位图"或"原始文本"。然而,这些低级特征还不够,我们应该从这些明显特征中提取一些更抽象的"潜在特征",以将查询或候选项表示为数值型高维向量 - 即"嵌入向量"。

"矩阵分解"(MF)是一种经典的协同过滤方法,用于从"用户ID"、"项目ID"和"评分"特征中学习一些"潜在因子"(潜在特征),并用潜在(嵌入)向量表示用户项目

<p align="center"> <img width="826" height="398" src="https://yellow-cdn.veclightyear.com/0a4dffa0/3630d9bc-7f4e-4c11-aa82-2157495a3aef.png"> </p>

矩阵分解方法只使用"用户ID"和"候选项ID"特征协同学习"潜在特征"。事实上,它并不关心其他侧面特征,如"候选项描述"、"价格"、"用户评论"等。

为了在学习潜在特征(嵌入)时同时涉及侧面特征和ID,我们可以使用深度神经网络(DNN)架构,如"softmax"或"双塔"神经模型。

<p align="center"> <img width="540" height="340" src="https://yellow-cdn.veclightyear.com/0a4dffa0/23f58245-56d5-4e36-b90b-5367cf4939f6.gif"> </p>

YouTube的双塔神经模型使用侧面特征将查询和候选项表示为抽象的高维嵌入向量。

<p align="center"> <img width="540" height="340" src="https://yellow-cdn.veclightyear.com/0a4dffa0/e84831a1-c396-4089-a588-18d9ae5db494.png"> </p>

Movielens数据集

"Movielens"数据集是推荐系统研究领域的一个基准数据集,包含一组用户对电影的评分,这些数据收集自MovieLens网站 - 一个电影推荐服务。

Movielens有5个不同版本可用于不同目的:"25m"、"latest-small"、"100k"、"1m"和"20m"。在本教程中,我们将使用"100k"版本。有关不同版本的更多信息,请访问官方网站

movielens/100k-ratings

MovieLens数据集的最早版本,包含943名用户对1,682部电影的100,000条评分。每个用户至少对20部电影进行了评分。评分以整星增量给出。除了电影和评分数据外,该数据集还包含用户的人口统计数据。

movielens/100k-movies

这个数据集包含movielens/100k-ratings数据集中被评分的1,682部电影的数据。

<p>&nbsp;</p>

探索Jupyter笔记本

<table class="tfo-notebook-buttons" align="left"> <td> <a target="_blank" href="https://github.com/xei/recommender_system_tutorial/blob/main/recommender_system_tutorial.ipynb"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/ac122c72-43ad-4b89-9259-6c3813e3b78b.png" /> 在GitHub上查看代码</a> </td> <td> <a target="_blank" href="https://colab.research.google.com/github/xei/recommender_system_tutorial/blob/main/recommender_system_tutorial.ipynb"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/ace55649-0058-4ddf-9dcf-160cf7d25d71.png" /> 在Google Colab中运行代码</a> </td> </table> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p>

捐赠

如果这个项目对你有帮助,请给个⭐!

编辑推荐精选

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

下拉加载更多