推荐算法效果不佳时的检查清单

有时候我们会遇到推荐算法上线之后,效果不如预期的情况。这种情况下,该如何改进呢?

下面就尝试列出一些检查清单,按照重要性的顺序,建议从上往下依次检查。当然,这些清单还不全面,欢迎大家一起来补充!

1. 用来统计效果指标的行为日志是否正确

  • 是否准确、完整地收集了影响统计指标的行为日志?
  • 埋点是否正确、完整?新的埋点逻辑是否有足够覆盖率的APP的版本更新?

错误Case:

  • 之前有一个客户把实验桶标识存储在Web页面的cookie里,在不同推荐场景的页面之间跳转时,收集到日志服务器的实验桶标识发生了错乱。
  • 还是这个客户,只在当前推荐场景的第一页收集了实验埋点,从推荐结果的第二页开始就没有收集埋点信息,导致效果统计时第二页之后的流量都算到基准桶里了。
  • 当推荐服务超时或异常时,APP端会出一个兜底的默认推荐列表;这个时候实验桶标记既不应该记录为算法桶标记,也不应该记录为基准桶标记,而应该记录为一个特殊的'other'标记,否则在统计效果的时候就会发现有些用户既存在于算法桶内又存在于基准桶内的矛盾。

2. 流量切分是否稳定、随机和足量

  • 流量切分是否是稳定的,即同一个用户在实验期间是否只能落在同一个桶内?
  • 流量切分是否足够随机,会不会存在某些行为异常的用户集中在同一个桶内?对调实验桶的用户集合是否能够观察到对应的效果指标的翻转?
  • AA测试的效果是否是比较接近的?当链路上出现系统性错误时,通常会通知AA测试的效果差异很大。
  • 在统计周期内,实验桶的流量是否足够得出置信的统计结果?这里推荐一个流量多少(样本数量)与指标置信度之间换算的计算器:https://www.evanmiller.org/ab-testing/sample-size.html。如果实验桶流量不够,则需要拉长统计周期。

错误Case:

  • 一些小流量的推荐场景,按天为周期统计指标得到的结论是不可靠的,应根据流量情况适当拉长统计周期;以短周期的效果指标做决策是有风险的。

3. 统计效果指标的代码是否正确

  • 是否筛选了目标场景的日志,过滤掉了无关日志和噪音数据?
  • 统计代码实现是否正确?如何处理低版本的APP流量收集不到正确埋点数据的问题?
  • 各实验桶的流量统计结果占比是否和流量切分的比例大致相同?

错误Case:

  • 统计到的流量切分比例跟实际的切分比例不一致的情况,还是经常出现的。很可能是流量切分的逻辑不合理,或者日志回流的链路上存在问题。

4. 实验变量控制是否正确

  • 基准桶和实验桶是否做到了只有观察变量(比如推荐策略)的不同,而其他方面完全相同?
  • 扩展上一个问题:基准桶和实验桶的推荐候选集是完全一样的吗?
  • 扩展上一个问题:基准桶和实验桶的推荐候选集是否存在更新步调不一致的问题?
  • 扩展上一个问题:基准桶和实验桶的候选集过滤规则(在工程链路的实现上)是完全一样的吗?

错误Case:

  • 基准桶和实验桶的推荐候选集不一致,是推荐系统刚上线时经常遇到的问题

5. 工程链路是否正确,是否能做到持续正确

  • 推荐服务的逻辑实现是否正确?有bug么?如何验证?
  • 推荐服务调用的子系统(如,模型服务、在线存储、实时计算等)是否正确响应?是否存在问题?
  • 依赖的各种离线、近线、实时数据更新是否正常?更新的数据是否正确?
  • 推荐服务的性能是否足够,会不会存在高峰期服务不能正常响应的问题?
  • 推荐服务的日志中有错误Log么?这些错误Log会影响推荐效果指标么?子系统有错误Log么?
  • 上面这些因素是否会随时间发生变化?
  • 系统上的各类指标(性能、cpu、内存、数据量、效果指标等)有监控和报警机制么?

6. 算法模型有效么?并且持续有效么?

  • 是否存在特征数据穿透的问题?
  • 是否考虑了各种系统偏差?如数据循环、信息茧房的问题。
  • 召回模型是否做了负样本采样?
  • 模型是否做了离线效果指标的验证?验证数据集合理么(是否独立于训练集)?是否存在欠拟合、过拟合?
  • 新模型上线是否做了A/B测试,并在验证效果ok后才推广到全流量?
  • 离线、在线的特征工程的结果是否一致?有验证么?
  • 模型离线预测结果与在线预测结果是否一致?
  • 模型如何平衡多个目标,是否存在跷跷板现象?
  • 特征和模型是否及时更新?随着时间的推移,用户群体、用户行为偏好、物品集的分布都会发生变化,特征和模型如果不及时更新效果就会慢慢衰减。特征上,要注意做数值特征的离散化时的分箱边界(boundary)是否更新了,等等诸如此类的问题。

7. 推荐策略是否有瑕疵?

  • 召回结果的多样性是否足够?
  • 召回结果的覆盖率是否足够?是否考虑了冷启动的用户和物品?
  • 召回结果的截断方法是否合理,是否破坏了多样性、覆盖率、探索机制、冷启动策略等?
  • 如有粗排模型,粗排模型的作用范围是否合理?是否破坏了多样性、覆盖率、探索机制、冷启动策略等?
  • 精排之后是否有满足业务期望的重排策略?比如,多样性打散算法或规则?

8. 是否考虑了推荐策略对业务长期受益的影响?

  • 用户、物品的冷启动问题有考虑并建模么?
  • 是否平衡了Exploration & Exploitation的问题?
  • 是否有必要对特定候选集物品做流量调控?
  • 推荐策略是否照顾到了各方利益(用户、内容提供者、平台、广告商等)
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容