分享嘉宾:张小凡
内容来源:作者授权
出品社区:DataFun
注:欢迎转载,转载请注明出处。
一、概述
从18年11月开始,接触推荐系统半年左右时间,对推荐系统有了基本的认识。相比于之前做的 nlp 任务,推荐系统复杂更多,数据来源更复杂、pipeline 更复杂、场景更复杂、业务更复杂、指标更复杂。在 NLP 部分的时候,绝大多数时间花在了数据-模型以及其 match 上。而在推荐里由于系统复杂度提升,多了更多的功夫在系统架构、代码重构、快速部署上,工程侧的东西在复杂系统中显得更为重要。秉着精益算法的思想,延续之前的系列,这里我结合自己的经验,给大家分享下如何快速的搭建一个不错 baseline 的推荐系统。请各位吸取精华、去其糟柏即可。
二、问题描述
今日主角:电商推荐系统
问题定义:为用户提供其最有可能产生交互的商品 ( 点击、购买、分享 )
问题举例:
技术价值:作为电商主要的业务场景,通过算法实现千人千面,由货找人,最大化商业指标
三、推荐 pipeline
据我说知,电商推荐系统大的框架如下,为了方便说明问题,我画了个图来解释下。
推荐pipeline
好叻,根据上图简单介绍下推荐流程:
四、推荐 pipeline 的思考
这里针对每个阶段进行一个细节讲解,指出个人觉得重要的地方。
思考1:关于 trigger 选取
思考2:关于是否需要 trigger
思考3:协同过滤 user to item VS item to item
电商场景 item to item 可能更为合适:商品变化小、用户变化快;item-item 比 user to item 的结果上兴趣度更集中。
思考4:协同过滤的优劣
思考5:rank VS match
思考6:rank 模型
思考7:rerank VS rank
五、推荐业务思考
思考1:推荐场景差异度巨大
思考2:如何发现迭代点
任何看上去不合理的地方都是优化点,能做到像阿里这样的不多,很多公司的推荐、搜索仔细看都是能看出问题的,这里就是迭代点。
思考3:迭代流程
六、推荐系统思考
思考1:数据很重要,数据很重要,数据很重要!!!
同样是数据,相比于 NLP 中的数据,推荐的数据来源很杂,可控度不是那么高,里面噪声多,需要更细的去查,在做任何模型的时候要全面检查数据各个指标。分布是否合理,数值范围,默认值,数据规模,数据源,是否重复等。走模型前对数据一定要心里有数。
思考2:探案一样进行探索
一个迭代动作做完之后,如果没有效果或者负向效果,仔细去对比每个步骤,找到可以说服自己的理由。如果找不到就更细化的去分析,分用户,分不同 trigger 去分析。就像探案一样,推荐很多时候解释性还是非常强的,环环相扣,不要因为系统复杂有蒙混的心理。解释不通的地方通常可能会有惊喜。
思考3:快速部署
推荐系统比较复杂,搭建更快的部署方案能让开发时间大大缩减。把系统做好后,算法同学更好的集中精力处理问题,而不是花费大量的时间在部署上。
思考4:关于深度学习
做好 wdl 可能对于很多场景来说已经够了。做好细节可能比搞个高大上的模型有效的多,系统初期不建议花很多时间追高大尚的模型。
思考5:关于离线评估
推荐很多时候是做 ctr 、cvr 等指标。所以线下不好评估。但是找到一个合适的指标非常重要。比如 auc 、gauc ( 按用户级别平均 ) 、xgboost 里面的特征重要性。比如常用的 auc 可能就不是个好指标,因为用户等级不同,点击率分布就不同,随便一个模型就能把 auc 提升,但平均 auc 则不尽然。所以一个合适的离线指标很重要。有的时候需要和线上多次对比才能找到一个合适的指标。
思考6:推荐系统高性价比部分
本文首发地址:
https://www.jianshu.com/p/fb99db68860f