Archive ← Prev Next →

D5P387-210409

《Recsys Research Project (9)》

4.6 和 S2M 的 sync 会议上,印方工程团队的 Deepak 介绍了 AB 测试、推荐上线的工程细节。目前他们打算每 7 天重跑一遍 709 搞的推荐算法(FM),然后每天更新一次(如果用户登录),去掉已经读过的文章。这意味着用户的推荐列表不会实时更新,而且如果每次给每个用户都生成 150 篇文章的列表,也挺浪费的。还有很大提升空间啊…

(4.20 注:Jure 在 CS 246 的 Recsys 讲座上讲到他在 Pinterest 的经历,一开始他们每晚计算好下一天的推荐列表,后来他帮助加入实时推荐之后,engagement 提升了 30%。)

另外,排名是原封不动按 pred util 排,还是可以稍微打乱点顺序?已经开始的文章会出现在推荐列表里吗?已经推荐过的文章如何重新推荐,换句话说,排在第一的文章被跳过以后,重新推荐放在第几?…确实,一个推荐系统生成排名之后还有很多细节,这些细节可能在多数业界的 recsys 论文里都是略去的,王喆的课里也没提到,需要我们自己做决定。

我们 lab 搞 Recengine 这个工程已经至少一年半了,中途 team 经过几次变动,这还是第一次上线新的推荐模型,足见进度之龟速…没过几周,印度疫情失控,印方团队不少人都请了假,而且大家担心社会形势的变化会影响测试结果,就差点中断了 AB 测试。

4.7,经过一周的构思,我写了一篇 1200 多词的长文;晚上第一次和 710 一对一,讨论了 ConFilt。710 吐槽他做 S2M proj 已经有些不开心了,我倒从来没有想过我做这个项目开不开心;另外,709 从来没有和我吐槽过 project 本身难做或者没进展,我和 709 开会的感觉就是我们一直在取得各种进展。

4 月初,我开始给 ALP 301 这节课写推荐系统的教程,主要就是在去年的 4 个教程里加入今年的数据,当然还需要再做一些改进,然后要写一个全新的教程。看着去年 Eray 写的教程,我发现我之前做的一些东西,其实更早以前就被做过了(这种情况出现很多次了…)另外 R 里也有推荐系统的现成包可以使用。

4 月中旬,我能明显感觉 709 对我催得越来越紧,有时他周日给我打电话,后来每天在我理应开始工作的时间之前发消息问我进度,这让我十分不爽。

4.20 晚上,709 和我说最新的教程 5 今晚就要我写好,我说做不完,然后他跟我发了一大堆话,说我最近给自己设的标准太低什么的,想和 Susan 重新讨论对我的期待值。

看了这些,我的不爽反而消失了,反驳了他对我的批评。我觉得他的批评是不合理的,真要闹到 Susan 那儿,我有充分的理由证明我已经足够努力了,是 709 低估了我把这些代码重新跑起来、改进这些教程,要花多少精力(你行你来整啊)。当然,如何处理得当,对我的情商还是个挺大的考验的。

他对我的批评并非空穴来风,最近我确实经常“拖 ddl ”。追根溯源,我刚开始入手写教程的时候,709 给我设了几个 ddl,当时是 4.1,他让我 3 个工作日内(4.5)完成教程 1,4.7 完成教程 2。这些 ddl 是不切实际的,首先我对 R 不熟,更何况当时我还在做另一个任务(参见前文),我就到 4 月中旬才完成,他也没说啥。这给了我一种“这些 ddl 就是走个形式”的危险错觉。

写了这么多,其实没多大事,很快 709 也向我表达了歉意,估计他就是一时脾气不好啦,可能最近压力比较大?4.23 和 Susan 开会的时候我才了解了他这么着急的原因,因为理论上他是负责教程的,然后把任务分给了我。

之后就进入了审核、修改环节。教程里有的部分我写完后我和 709 都看得懂,但审核人没有 context 是不能理解的,所以需要调整行文结构、加更多注释和解释,以保证学生能更轻松地理解教程内容。这需要综合多方的反馈意见,众口难调,十分繁琐。当然这还没完,后续还零星有一些关于教程的问题进来。

4.20 晚上搞出来的新教程是关于冷启动策略的,探索了 D5P379-210227 提到的“从什么时候开始个性化”的问题,得出的结论是对于 S2M 数据,当 item 积累了 20 ~ 40 个互动之后,协同过滤的表现开始超过内容过滤。

之后打算用 Python 重做一下实验,但我们一直纠结于 precision@k 这个 metric 靠不靠谱。主要的问题是它把所有缺失的数据都当做 0,所以 709 发明了另一种计算方法,只在可观察的数据上计算精确度,但这样算还是会有一些问题。

4.29 和 709 讨论,他说“我们不可能是地球上第一个想到这件事的人,肯定有人意识到了 precision@k 的问题”。当时我觉得有些激动,觉得这是个很有意思的课题,我又能进入到纯粹地探索未知的状态了,而更赞的是有个大神可以带我一起探索。

不过我周末搜了一下,原来 Recsys 13’ 其实已有人研究过这个了:用可观察数据 vs 缺失数据 vs 所有数据计算精确度,得到的结果和对应的理解会很不一样。另外缺失数据上 RMSE 是未定义的。

(上篇:D5P381,下篇:D5P392