推荐系统系列二:推荐系统的工程实现

本文是推荐系统系列的第二篇,重点介绍了推荐系统的工程实现,包括数据收集、ETL、特征工程、推荐算法、推荐结果存储、Web服务等核心模块。文章强调了推荐系统与大数据的紧密关系,指出构建推荐系统需要考虑数据处理、模型训练、存储和实时性等问题。此外,还分享了推荐系统的业务流程、设计哲学和未来发展趋势。
摘要由CSDN通过智能技术生成

       下面内容转自大数据与人工智能微信公众号,由于网络上推荐系统的相关学习资料太多太杂,东拼西凑学习很难摸出门道,同时我也在学习推荐系统,因此我将该系列内容摘录到我的博客,方便大家直接在博客中查看,大家一起学习进步,后面我也会阅读推荐系统相关的论文,并在本博客记录笔记,希望大家一起进步哈。

        在我更新第一篇《推荐系统介绍》之后,过了一两天这篇介绍的阅读量就达到了三百多,可见当下存在一个矛盾:大家日益增长的对推荐系统好文章的渴求与真正有含金量的推荐系统学习资料间供应存在着巨大的矛盾,因此我将加快本系列文章的更新,很感谢大数据与人工智能微信公众号,大家如果有额外的需求,可以去该公众号详询原作者,由于博客中不能直接粘贴微信公众号中的图片,本文的图片都是我一张一张手动截图粘贴,整理不易,希望能帮到大家,毕竟好的文章值得我们推广,不应被埋没,好了,话不多说,马上开始。

===================正文开始===================
一:写在前面

       在上篇文章《推荐系统介绍》中简单对推荐系统做了一个较全面的介绍,相信大家对推荐系统有了初步的了解。本篇文章作者会结合多年推荐系统开发的实践经验粗略介绍推荐系统的工程实现,简要说明要将推荐系统很好地落地到产品中需要考虑哪些问题及相应的思路、策略和建议,其中有大量关于设计哲学的思考,希望对从事推荐算法工作或准备入行推荐系统的读者有所帮助。           本篇文章主要从整体上来介绍推荐系统工程实现,以后发布的系列文章会逐步介绍工程实现的各个细节实现原理与策略。为了描述方便,本文主要基于视频推荐来讲解,作者这几年也一直在从事视频推荐系统开发的工作,其他行业的推荐系统工程实现思路类似。

二:推荐系统与大数据

推荐系统是帮助人们解决信息获取问题的有效工具,对互联网产品而也用户数和信息总量通常都是巨大的,每天收集到的用户在产品上的交互行为也是海量的,这些大量的数据收集处理就涉及到大数据相关技术,所以推荐系统与大数据有天然的联系,要落地推荐系统往往需要企业具备一套完善的大数据分析平台。

推荐系统与大数据平台的依赖关系如下图。大数据平台包含数据中心和计算中心两大抽象,数据中心为推荐系统提供数据存储,包括训练推荐模型需要的数据,依赖的其他数据,以及推荐结果,而计算中心提供算力支持,支撑数据预处理、模型训练、模型推断(即基于学习到的模型,为每个用户推荐)等。

大数据与人工智能具有千丝万缕的关系,互联网公司一般会构建自己的大数据与人工智能团队,构建大数据基础平台,基于大数据平台构建上层业务,包括商业智能(BI),推荐系统及其他人工智能业务,下图是典型的基于开源技术的视频互联网公司大数据与人工智能业务及相关的底层大数据支撑技术。

在产品中整合推荐系统是一个系统工程,怎么让推荐系统在产品中产生价值,真正帮助到用户,提升用户体验的同时为平台方提供更大的收益是一件有挑战的事情,整个推荐系统的业务流可以用下图来说明,它是一个不断迭代优化的过程,是一个闭环系统。

有了上面这些介绍,相信读者对大数据与推荐系统的关系有了一个比较清楚的了解,下面会着重讲解推荐系统工程实现相关的知识。

三:推荐系统业务流及其核心模块

先介绍一下构建一套完善的推荐系统涉及到的主要业务流程及核心模块,具体流程如下图,下面分别介绍各个模块:

(1)数据收集模块

构建推荐模型需要收集很多数据,包括用户行为数据,用户相关数据及推荐“标的物”相关数据。如果将推荐系统比喻为厨师做菜,那么这些数据是构建推荐算法模型的原材料。巧妇难为无米之炊,要构建好的推荐算法收集到足够多的有价值的数据是非常关键和重要的。

标的物的意思是:电影推荐中标的物就是电影,书的推荐中标的物就是书,今日头条的标的物就是新闻资讯等。

(2)ETL模块

收集到的原始数据一般是非结构化的,ETL模块的主要目的是从收集到的原始数据中提取关键字段(拿视频行业来说,用户id,时间,播放的节目,播放时长,播放路径等都是关键字段),将数据转化为结构化的数据存储到数据仓库中。同时根据一定的规则或策略过滤掉脏数据,保证数据质量的高标准。在互联网公司中,用户行为数据跟用户规模呈正比,所以当用户规模很大时数据量非常大,一般采用HDFS、Hive、HBase等大数据分布式存储系统来存储数据。

用户相关数据及推荐“标的物”相关数据一般是结构化的数据,一般是通过后台管理模块将数据存储到MySQL、ProgreSQL等关系型数据库中。

(3)特征工程模块

推荐系统采用各种机器学习算法来学习用户偏好,并基于用户偏好来为用户推荐“标的物”,而这些推荐算法用于训练的数据是可以“被数学所描述”的,一般是向量的形式,其中向量的每一个分量/维度就是一个特征,所以特征工程的目的就是将推荐算法需要的,以及上述ETL后的数据转换为推荐算法可以学习的特征。

当然,不是所有推荐算法都需要特征工程,比如,如果要做排行榜相关的热门推荐,只需要对数据做统计排序处理就可以了。最常用的基于物品的推荐和基于用户的推荐也只用到用户id,标的物id,用户对标的物的评分三个维度,也谈不上特征工程。像logistic回归等复杂一些的机器学习算法需要做特征工程,一般基于模型的推荐算法都需要特征工程。

特征工程是一个比较复杂的过程,要做好需要很多技巧、智慧、行业知识、经验等,在这篇文章中作者不作详细介绍。

(4)推荐算法模块

推荐算法模块是整个推荐系统的核心之一,该模块的核心是根据具体业务及可利用的所有数据设计一套精准、易于工程实现、可以处理大规模数据的(分布式)机器学习算法,进而可以预测用户的兴趣偏好。这里一般涉及到模型训练、预测两个核心操作。下面用一个图简单描述这两个过程,这也是机器学习的通用流程。

好的推荐工程实现,希望尽量将这两个过程解耦合&#x

  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值