推荐系统的一些事情
推荐系统本质上就是为了从海量的信息里找到用户的喜欢的内容/商品,帮助用户进行内容浏览等等。然而干这事儿大部分时候都是为了钱!!!例如,推荐场景下是为了让人去买或者把时间花在这破app上,搜索场景下是为了让人的体验变好,从而获得更多流量、给商品给多的曝光等。
简介
如上图,可以看到在推荐系统的各个环节,我们都有可以进行算法优化和改进的可能:
- 如何对用户的兴趣进行建模
- 用户的自有/静态属性对用户兴趣的影响
- 用户的动态特征,即各种行为序列,如,点击序列,购买序列,观看序列,搜索query的序列等等。
- 如何对商品的特征进行模型
- 商品自由特征,类别,名称,描述等等。
- 商品的交互特征,如点击/购买共现。
- 如何从海量的item中选出当前用户最可能喜欢的item候选集–召回
- 个人见解,recall和precision是这个阶段里最主要的评估手段。过低recall的没有意义,同样,既然recall达标,但precision太低(即过多的无效召回)也显然的浪费后面的排序的算力。
- 如何判断不同item与当前用户的点击可能–粗排(可选)/精排
- 很多时候粗排的目的还是因为恐惧精排可能达不到实时性的效率要求,所以也不见得在每个系统里都存在。
- 在精排阶段,在效率/计算量可承受的上限下,尽可能的使用我们能够拿到的特征、模型对召回/粗排的结果进行排序,一般来讲,这个阶段我们需要考虑排序的准确率(例如用mAp,NDCG等)进行评估,当然很多时候,我们还会考虑新颖性等,但我建议,将这个问题这么看,即把新颖性等当作约束,在满足一定新颖多样等指标的前提下,尽可能的优化准确性。
- 如果使得我们的排序结果与实际场景更相符–重排
- 一般来说,这一步可能涉及很多业务的策略。不太好说。