大家好,我是Echa。
在互联网领域,推荐系统 (Recommendation Systems)的应用非常广泛。在音视频方面,如抖音、快手、哗理等,在电商平台方面,如京东、淘宝、拼多多等。推荐有助于帮助用户快速发现潜在感兴趣的内容(音视频、商品、新闻等信息流),从而提升用户体验同时有助于提升商业效率。下面小编先揭秘抖音快手推荐系统和淘宝推荐系统具有含金量的架构图,过把瘾。
没有明确需求的用户访问了我们的服务, 且服务的物品对用户构成了信息过载, 系统通过一定的规则对物品进行排序,并将排在前面的物品展示给用户,这样的系统就是推荐系统
可以说,谁能掌握和利用好推荐系统,谁就能在信息分发的激烈竞争中抢得先机。 但与此同时,有着许多问题困扰着推荐系统的开发者,比如:庞大的数据量,复杂的模型结构,低效的分布式训练环境,波动的在离线一致性,苛刻的上线部署要求,以上种种,不胜枚举。
推荐系统是一种通过分析用户的历史行为、个人喜好、兴趣爱好等数据信息,为用户推荐个性化的产品、服务、信息等的技术系统。推荐系统可以帮助用户快速找到自己喜欢和感兴趣的内容,提高用户的满意度和忠诚度,同时也可以帮助企业提高销售额和用户留存率。
小编总结五个方面推荐系统的工作方式:
结合上述内容,粉丝们大概初步了解什么是推荐系统,那么推荐系统意义是什么呢?小编从2个角度分析:
推荐系统一般会有若干个阶段:
借此机会,今天小编给大家13个精选开源推荐系统及算法,值得学习收藏,让正在写推荐系统及算法的小伙们有头绪和开发思路,希望对粉丝们有所帮助。同时祝福大家万事如意,心想事成,身体健康,笑容常开,愿大家的生活更加美好,愿大家的未来更加光明。接下来小编给大家介绍一些推荐系统及算法,喜欢的小伙们记得点个赞和收藏。
Github:https://github.com/twitter/the-algorithm
介绍
马斯克的“开源承诺”,终于如约而至。Twitter推荐系统算法,当时被他宣布对外开放那一刻,仅仅数小时,在Github上便揽获上万个Star,轰动了整个互联网。
据介绍,Twitter的推荐系统基于一组核心模型和功能,可以从推文、用户和互动数据中提取潜在信息。
Twitter的推荐系统由三大部分构成:
Twitter 推荐系统开源主要涵盖了:
Twitter场景下推荐系统问题定义:
整体问题和常见的推荐系统差别不大。特色的地方在于Twitter比较关注social graph的挖掘,包括图特征、图预训练、图召回以及图模型等。
整体架构如下图,包括数据、特征工程和推荐系统服务Home Mixer。
数据:涵盖了社交图、用户的交互行为、用户画像数据等。数据这块是Twitter 的核心资产,由用户、推文和互动构成的超大规模异构社交图。
特征工程:Twitter主要关注社交图的预训练、聚类、社区发现等,这也是Twitter的特色所在。图预训练得到的向量可以用于向量召回、精排特征等。此外,还包括一小部分安全相关的工作。
推荐系统核心服务:Home Mixer,Twitter定制的Scala框架。可以认为是算法工程。类比国内大厂用的Java、Go、C++等。由三大部分构成:
Github:https://github.com/alibaba/EasyRec
介绍
EasyRec- 是一个阿里巴巴开源的大规模推荐算法框架。实现了用于常见推荐任务的最先进的深度学习模型:候选生成(匹配),评分(排名)和多任务学习。它通过简单的配置和超参数调整(HPO)提高了生成高性能模型的效率。
阿里巴巴准备了一系列的Demo帮助用户快速体验EasyRec的功能,降低使用EasyRec的门槛。
这些Demo包含了在公开数据集上针对不同模型做的多种实验,涵盖了推荐系统中的召回任务和排序任务,主要包括数据集下载、预处理、模型配置、训练及评估等过程。
EasyRec的模型训练和评估都是基于config配置文件的,配置文件采用prototxt格式。在大多数任务中,我们只需要创建config文件就能满足相应的应用。
官网:https://zh.d2l.ai/
Github:https://github.com/d2l-ai/d2l-zh
介绍
《动手学深度学习》:面向中文读者、能运行、可讨论。中英文版被70多个国家的500多所大学用于教学。
本开源项目代表了我们的一种尝试:我们将教给读者概念、背景知识和代码;我们将在同一个地方阐述剖析问题所需的批判性思维、解决问题所需的数学知识,以及实现解决方案所需的工程技能。
我们的目标是创建一个为实现以下目标的统一资源:
时至今日,人们常用的计算机程序几乎都是软件开发人员从零编写的。 比如,现在开发人员要编写一个程序来管理网上商城。 经过思考,开发人员可能提出如下一个解决方案: 首先,用户通过Web浏览器(或移动应用程序)与应用程序进行交互; 紧接着,应用程序与数据库引擎进行交互,以保存交易历史记录并跟踪每个用户的动态; 其中,这个应用程序的核心——“业务逻辑”,详细说明了应用程序在各种情况下进行的操作。
为了完善业务逻辑,开发人员必须细致地考虑应用程序所有可能遇到的边界情况,并为这些边界情况设计合适的规则。 当买家单击将商品添加到购物车时,应用程序会向购物车数据库表中添加一个条目,将该用户ID与商品ID关联起来。 虽然一次编写出完美应用程序的可能性微乎其微,但在大多数情况下,开发人员可以从上述的业务逻辑出发,编写出符合业务逻辑的应用程序,并不断测试直到满足用户的需求。 根据业务逻辑设计自动化系统,驱动正常运行的产品和系统,是一个人类认知上的非凡壮举。
幸运的是,对日益壮大的机器学习科学家群体来说,实现很多任务的自动化并不再屈从于人类所能考虑到的逻辑。 想象一下,假如开发人员要试图解决以下问题之一:
在这些情况下,即使是顶级程序员也无法提出完美的解决方案, 原因可能各不相同。有时任务可能遵循一种随着时间推移而变化的模式,我们需要程序来自动调整。 有时任务内的关系可能太复杂(比如像素和抽象类别之间的关系),需要数千或数百万次的计算。
Gitee:https://gitee.com/z812483032/NewsRecommends
介绍
网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐
涉及框架:Django、jieba、selenium、BeautifulSoup、vue.js
软件功能结构/页面展示
系统截图
Github:https://github.com/guofei9987/scikit-opt
介绍
该项目实现遗传算法、粒子群算法、模拟退火、蚁群算法、免疫优化算法、鱼群算法,旅行商问题。
案例截图:
Gitee:https://gitee.com/taisan/recommend_system
介绍
Java利用 皮尔森(pearson)相关系数实现千人千面的推荐算法系统。
该系统使用java编写的基于用户的协同过滤算法(UserCF)和基于物品(此应用中指电影)的协同过滤(ItemtemCF) 利用统计学的相关系数经常皮尔森(pearson)相关系数计算相关系数来实现千人千面的推荐系统。
协同过滤算法
协同过滤推荐算法是诞生最早,并且较为著名的推荐算法。主要的功能是预测和推荐。协同过滤(Collaborative Filtering,简写CF)是推荐系统最重要得思想之一,其思想是根据用户之前得喜好以及其他兴趣相近得用户得选择来给用户推荐物品(基于对用户历史行为数据的挖掘发现用户的喜好偏向,并预测用户可能喜好的产品进行推荐),一般仅仅基于用户的行为数据(评价,购买,下载等),而不依赖于物品的任何附加信息(物品自身特征)或者用户的任何附加信息(年龄,性别等)。其思想总的来说就是:人以类聚,物以群分。 目前应用比较广泛的协同过滤算法是基于邻域的方法,而这种方法主要有两种算法: 分别是:
皮尔森(pearson)相关系数公式定义为: 两个连续变量(X,Y)的pearson相关性系数(Px,y)等于它们之间的协方差cov(X,Y)除以它们各自标准差的乘积(σX,σY)。系数的取值总是在-1.0到1.0之间,接近0的变量被称为无相关性,接近1或者-1被称为具有强相关性。
皮尔森相关系数反映了两个变量的线性相关性的强弱程度,r的绝对值越大说明相关性越强。
通常情况下通过以下取值范围判断变量的相关强度: 相关系数 0.8-1.0 极强相关 0.6-0.8 强相关 0.4-0.6 中等程度相关 0.2-0.4 若相关 0.0-0.2 极弱相关或无相关。
UserCF基于用户的协同过滤
ItemCF基于物品的协同过滤
由于UserCF的缺陷,导致很多电商平台并没有采用这种算法,而是采用了ItemCF算法实现推荐系统。基于物品的协同过滤基本思想是预先根据所有用户的历史偏好数据计算物品之间的相似度,然后把与用户喜欢的物品相类似的物品推荐给用户。ItemCF算法并不利用物品的内容属性计算物品间的相似度,主要通过分析用户的行为记录计算物品之间的相似度。
Github:https://github.com/yitter/IdGenerator
介绍
算法介绍
需求来源
Github:https://github.com/recommenders-team/recommenders
Recommenders是Linux人工智能和数据基金会的一个项目。
微软的推荐系统开源库原来叫Microsoft Recommenders ,后面加入了人工智能与数据Linux基金会(LF AI&Data)!新的组织推荐团队反映了这一变化,最终才叫 recommenders。
微软希望此举能让任何人都能轻松做出贡献!微软的目标仍然是建立一个生态系统和社区,以维持推荐系统中的开源创新和合作。
该库包含构建推荐系统的各种示例和最佳实践,以Jupyter notebooks的形式提供。
推荐人的目标是帮助研究人员、开发人员和爱好者进行原型设计,试验并生产一系列经典和最先进的推荐系统。
下表列出了存储库中当前可用的推荐算法案例:
Github:https://github.com/SunnieShine/Sudoku
介绍
一个使用暴力破解和普通逻辑算法解题的数独分析解题 SDK。目前该解决方案支持对数独的题目生成、使用逻辑技巧或无逻辑技巧解题和一些常见数独特性的验证(例如,验证是否一个指定的盘面是一个最小题目。所谓的最小题目指的是,盘面任意一个数字消失后,都会使得题目多解的题)。
API 有很多,所以这里给出其中一个基本解题的操作,提供参考。
以后,我想把这个解决方案用于几乎所有平台上。我可能会完成 Win11 App 项目、安卓项目、常用网络平台上的机器人(比如可能 QQ 啊,哔哩哔哩之类的)。
我很遗憾我并未创建英文版的 Wiki 内容,因为工程量太大了。我学了很多年的英语,但是对于一些描述(尤其是细节的表达)要翻译成英语仍然有点困难。
当然,你也可以使用 JetBrains 的 Rider 作为你的 IDE 来开发。随便你用什么都行,甚至是记事本(大笑)。虽说 C# 拥有一些只能在 VS 上使用的语法(__makeref 之类的关键字),不过这个项目里没有使用这些内容,因此你可以大大方方地使用别的 IDE 开发。
项目定位
这个仓库的代码适用于下面这些人群:
截图
Github:https://github.com/PaddlePaddle/PaddleRec
介绍
什么是推荐系统?
Gitee:https://gitee.com/aBugsLife/SPA
介绍
连续投影算法(successive projections algorithm, SPA) 是前向特征变量选择方法。SPA利用向量的投影分析,通过将波长投影到其他波长上,比较投影向量大小,以投影向量最大的波长为待选波长,然后基于矫正模型选择最终的特征波长。SPA选择的是含有最少冗余信息及最小共线性的变量组合。该算法简要步骤如下图:
Github:https://github.com/gorse-io/gorse
介绍
Gorse是一个用Go语言编写的开源推荐系统。Gorse的目标是成为一个通用的开源推荐系统,可以快速引入各种在线服务。通过将项目、用户和交互数据导入到Gorse中,系统将自动训练模型,为每个用户生成推荐。
特点:
Github:https://github.com/wangshusen/RecommenderSystem
介绍
该开源项目教你快速开发推荐系统,里面包含了召回算法、排序算法、交叉结构算法、用户行为序列建模、重排、物品冷启动、涨指标的方法等等。
如下图:
一行代码,可能会创造出下一个让人惊叹的产品;
一个创新,可能会开启一个全新的科技时代;
一份初心,可能会影响到无数人的生活;
无论是在大公司工作,还是在小团队奋斗;
无论是资深的程序员,还是刚刚入行的新手;
每个人的代码,都有力量改变世界。
创作不易,喜欢的老铁们加个关注,点个赞,打个赏,后面会不定期更新干货和技术相关的资讯,速速收藏,谢谢!你们的一个小小举动就是对小编的认可,更是创作的动力。
创作文章的初心是:沉淀、分享和利他。既想写给现在的你,也想贪心写给 10 年、20 年后的工程师们,现在的你站在浪潮之巅,面对魔幻的互联网世界,很容易把一条河流看成整片大海。未来的读者已经知道了这段技术的发展历史,但难免会忽略一些细节。如果未来的工程师们真的创造出了时间旅行机器,可以让你回到现在。那么小编的创作就是你和当年工程师们的接头暗号,你能感知到他们在这个时代的键盘上留下的余温。
#文章首发挑战赛#