推荐系统工作笔记(3)

之前的公众号一时博客断断续续写了几篇文章,今天上去看,关注人数刚好到了 500 人,公众号后台偶尔也会有人留言交流,但是因为不经常上线,往往看到的时候消息已经过期无法回复,所以想到启用这个很早就申请的公众号,方便读者大大留言交流,今后也会在这里记录一些推荐算法相关的问题。

image-20190918125652382

qrcode_for_gh_c541576ac455_1280

今天终于腾出时间(放弃躺尸的快乐时光),来记录最近的一些思考。

正式工作已经差不多两个月,基本了解了推荐系统的整套流程,当然,因为场景的特殊性,目前重点关注排序(rank)阶段。

刚开始工作的这段时间,基本都是以完成交代的任务为主,大方向由mentor确定,细节部分也会有自己的思考和实践,也有了一定的产出,这个过程当中也在不断的思考,算法工程师究竟意味着什么?

前几天开会的时候,听到一句“工程的同学往往做的是确定的事情,算法的同学往往做的是不确定的事情”,感觉很有道理。

记录一下自己对于推荐算法工程师日常的理解:

1.对于业务的把握能力,这一点尤为重要

  • 快速熟悉业务的背景,了解业务的核心数据,明确优化指标。

  • 场景的特殊性:不同场景在推荐上也有不同的侧重点和优化点,例如有不断下滑的传统推荐场景,也有基于主商品的推荐,基于店铺的推荐等等,场景的不同,也就意味着除了核心特征之外,场景特征的不同。

  • 整体数据流程:在线请求、召回、排序、日志落地、离线样本构建、模型训练等。
  • 整体数据观:以电商场景为例,常见的 uv 数量,uv 点击数,场景商品价格、销量、ctr 的分布情况等等,核心数据指标一定要很清楚。

2.良好的工程能力:快速迭代、快速试错,保证代码的正确性,合理优化,保证线上响应速度。

3.对于算法的灵活运用:正确理解不同的算法和模型,在不同的场景下合理使用。目前来看,一般的算法演进流程都是 LR -> XGBoost -> DeepFM 等,阿里的 DIN 应用也较为广泛,实际业务当中,没有银弹(Silver Bullet),没有万能的解决方案,都是case by case 的优化。

4.主动发现问题的能力:通过 case、统计分析发现问题,这一点尤为重要,找到可优化的点,比按照指令优化某一问题要更重要。

5.多问为什么,用数据说话:遇到任何情况,先多问为什么,然后慢慢从数据的角度理解现象,指标的提升或下降,要明确变化来自于哪里。有想法的时候,先做好数据层面的分析,然后做 AB 实验,验证想法,做好实验记录。

6.follow 领域最新进展:多和兄弟团队交流,关注好的工作,关注核心会议的优秀 paper。当然,论文当中灌水现象也很严重,需要自己斟酌辨别。

7.确定优先级:精力毕竟有限,给要做的事情分清优先级,做好计划,集中精力做最容易出成功的地方(提升核心指标)。目前看起来上策略是最容易拿到收益的,也最为玄学,一些规则、策略的挖掘,一方面靠经验,一方面也靠对数据、业务的理解。