大家应该能发现,越来越多的推荐系统,特别是基于feed或者说基于流的推荐系统,比如短视频,比如淘宝的推荐主页,比如微博主页等等,新增了不喜欢或者不感兴趣这个按钮。
那么作为一名算法工程师,你应该如何使用这样的信号来帮助你的产品呢?
面对这样一个问题,或者面试题,其实是没有什么标准答案或者最好答案的,使用这个信号的方法是多种多样的。
可能首先大部分人能想到的是,不喜欢是一个很强的信号,它比类似“没有点赞”,“没有点击进入”,“停留不超过5秒”这样的负面信号还要负面,是一个high confident(高置信水平)的负面信号。
面对这样的信号,大家可能第一反应就是做一些rule(规则),比如“当当前内容与不喜欢过的内容或者产品相似,则降低其推荐权重。” 这个想法很直观,但是如何判断两个内容或者产品频是否“相似”,则引申出了另一个一个很大的机器学习问题。
那么我们可以把这些数据当做来训练用的label(标签)吗?这个当然也是可以的。但是这里就又引申出来了其他问题,比如我们是应该训练一个【预测用户是否喜欢一个item】的模型,然后把这些label当做额外的负面的label加到训练数据集使用,还是应该用这些label来训练一个【预测用户是否不喜欢一个item】的模型。 如果是第一种的话,如何给这些high confident的负面label更大的训练权重。是否可以作为multi-task learning的一个task来学习? 如果作为label,它是否会过于稀疏了?等等等等。
我们还可以把不喜欢的信号,当做feature(特征)加到我们一些预测模型中。
除了以上讨论的,还有其他问题,比如用户现在不喜欢这个东西,那是否代表他永远不喜欢,如何考虑用户不喜欢程度随时间的变化?
以上就是很经典的一个ML Design的思考过程,作为ML从业人员,大家需要加强这种思维能力。这个不仅对于面试,对于工作来说也极其重要。