推荐系统的禅与道

2020/07/19 posted in  推荐系统

前言

先说说我的简历,毕业刚出来做推荐,在1号店,后来觉得做业务没意思,就各个公司浪了一圈,目前在做Machine Learning Infrastructure。 最近也在和好朋友聊过很多recsys相关的思考, 整理了下,分享给大家

推荐系统之禅

游江海、涉山川,寻师访道为参禅;自从认得曹溪路,了知生死不相关。行亦禅、坐亦禅,语默动静体安然;纵遇锋刀常坦坦,假饶毒药也闲闲。    --\《证道歌\》 永嘉玄觉禅师

修禅即体悟当下, 从个体的角度去感悟,从一个人的角度去了解推荐系统要做啥?

简单地百度下, 都不用Google,就有很多的答案。 其实提炼下没那么多的东西,无非就以下几个工作内容:

  1. 数据收集:理解业务,所有推荐系统的落地都离不开对业务的理解,业务的理解其实就是对数据的理解, 要搭建一个比较合适的推荐系统, 数据收集是第一步也是最基础的;
  2. ETL:Extract、Transform、Load, 工业级推荐系统尤其是移动互联网普及之后, 数据是海量的,不是所有的数据都是有用的, 如何从繁杂的数据中提取到有效的数据;
  3. 模型训练: 利用得到的训练样本,构建模型,得到符合指标的模型,也可能根本没有所谓的模型,可能是最简单的规则, 如仅仅是按热度的排行榜,也算是一种推荐系统;
  4. 评估:评估包括离线的评估与在线的评估, 评估即是如何说明你的工作有效;
  5. 上线:当评估阶段满足预期之后, 模型上线才开始,才真正地开始引入流量;
  6. 持续效果改进:上线之后, 一定是可能会不符合预期的,如果快速理解线上的bad case, 并针对性地解决;

数据收集

数据收集是一个没有信息熵的词, 在互联网中,数据收集这个词你去问不同的同学, 会得到不同的答案, 对于算法同学,数据收集是啥样的呢?

找对人
一定要找到数据的对接人, 公司大了, 数据的产生、使用都有一定的标准流程,流程越长,越难理解数据表中指标的意义,一定要找到合适的人, 他不仅能告诉你数据的意义,更多的时候可能会告诉你还有哪些有意义的数据, 无论做什么工作一定要是很靠谱的合作方,尤其是在这个流程你可能不太明白的情况下, 在我们公司, 数仓开发,是最复杂的功能,他们对接几乎所有的算法团队的数据需求,他们可能是公司中最了解数据的同学,但是他们中的大多数同学因为本身工作的特殊性,有的时候是小伙伴口中自嘲的”sql boy“, 他们很难去理解算法同学对数据真实的一些需求;因而,简单地沟通,其实很多因为彼此知识的不对等,造成提供的和需求的不一致,而且这种比想象的要多的多,和你的业务数据提供方交朋友,可能是最无需成本的沟通;

找哪样的数据
作为需求方, 算法同学一定要知道去拿哪些数据,推荐是一个向人推荐物的过程,用户的特征是首要的,完整的用户画像是极为重要的,了解你的用户是什么样的人,有什么样的属性,喜欢什么,什么时候最活跃等等;其次,了解你的物料,如果是电商,那就是你的商品,你的物料数据在哪儿? 这些数据有哪些维度?是怎样组织的,你需要怎么去做处理?我相信正常的团队,一定有专门作用户画像与物料特征的同学,去和这样的团队沟通,了解他们做了什么,如何去使用他们的数据,甚至是否合作,你也可以去做一些数据挖掘的活,去扩展他们团队没有考虑到的特征维度。

ETL

特征工程

模型训练

评估

上线

推荐系统之道

道即万物运行的轨迹,虽然每个个体都不同