你是否有这样的体会:信息流推荐的内容我已经看过。这是由于推荐算法存在重复推荐的问题,那么,针对不同的信息流,是否有改善该问题的方法? 前段时间接触了与推荐策略相关的工作,如今产品也顺利走上"正确的道路"。关于常见推荐算法规则及原理,网上有很多不错的相关文章,大家可以去搜索浏览。 下面主要聊聊推荐算法实验和常见推荐算法优缺点,以及内容重复推荐相关话题。 评测算法的方法 好的算法模型并不是一蹴而就的,而是不断训练慢慢打磨出来的。 那么,在打磨的路上如何评测推荐算法效果以及不同算法之间的优劣呢? 这里有3种实验方法供你参考。 1. 模拟实验 模拟实验主要通过用户产生的行为日志,比如对该条内容进行浏览、收藏、点赞等用户行为来生成推荐标准的数据集,再把数据集按规则分成"训练组"和"测试组",在"训练组"上调教用户兴趣模型,在"测试组"上进行预测。 该实验好处在于,不需要真实用户参与,只需要从日志系统提取用户行为数据就可以快速计算出推荐效果。但缺点是无法得知用户真实转化指标,比如推荐点击率。 2. 用户调研 监控一批已体验推荐相关的用户,持续观察分析用户行为。 针对用户行为罗列相关问题,在调研中进行询问,最后根据问题及答案来了解推荐效果及满意度。 值得关注的是,准确率高不等于用户满意度高,更应该留意一些由推荐产生的内容有没有给他带来一些"惊喜",更多偏向于用户主观感受。 也正因如此,从行为观察到问题归纳、用户邀约、最后调研结果分析等,实验调查流程及成本都比较高。 3. A/B测试 通过划分用户群,针对不同用户群采用不同推荐算法,统计出不同用户群体转化指标生成测试报告,谨记该实验唯一的变量就是算法规则,不允许有其它变量。 还有一点需要考虑清楚的是,满足什么样的条件用户去跑测试流程,A/B测试缺点在于周期长,短期迸发的测试结果无法保证真实性。所以,该实验适用于模拟实验和用户调研中效果比较好的算法模型,并不适用于跑所有算法,那样效率实在太差。 一类算法只能解决一部分问题,单一的算法难以达到真正的个性化,还需要算法与算法之间打组合拳,接下来聊聊目前常见推荐算法一些优缺点。 热度算法 1. 优点 能够有效过滤掉低质量内容,呈现给到用户都是大部分人都"喜欢过"的。对新用户相对友好,无需产生任何交互也能产生推荐列表;不存在推荐列表为空的情况,并且热度是相对的,热点不会一直都是热点,具有一定时效性。 基础热度分可以人为干预,比如,今天的热点新闻基础热度分要比今天普通新闻的基础热度分要高。 2. 缺点 针对用户层面精准触达精确度不是很够。 因为推荐列表是按热度进行排序,并不是基于个人兴趣喜好排序,单一的热度算法可以被"刷榜",因此要做好相对措施。 采用热度算法典型例子:抖音 游客登录浏览前面几条视频多数为近期热度值为Top5内的,且上热门推荐是需要经过多个热度池大量用户检验,最后还要人工审核才能上首页推荐。 但不会持续超过1周,除非有大量的用户进行模仿跟拍,反推用户行为视频热度权重,用户"跟拍"行为的热度权重远大于收藏、点赞及分享。 基于内容推荐算法 1. 优点 对产品用户体量没有要求,不会因产品用户数的大小影响到该算法。因为每个用户产生行为相互独立,用户行为特征都是由自己的来决定,不存在干扰之说。 另外,该算法有较强的实时性,每当有一条新的内容就可以立马"被推荐",推荐机会和旧内容是一样的,与时间新旧无必然联系。 2. 缺点 无法为新用户产生推荐列表,新用户没有历史行为数据也无法预测。 当没有用户行为特征,无法与内容进行匹配推荐。所以,多数产品会利用注册预填信息、首次登录成功着陆页的弹窗选择等手段,并结合热度推荐来进行冷启动。 但要注意这些动作是否会过分地打扰到用户,权衡用户流失和推荐精准度问题。 其次,基于内容推荐确定性非常强,所有推荐的内容都是由用户的浏览历史决定。单独使用该算法难以挖掘用户的潜在兴趣,所以该算法一般会与其他算法并存的原因也在这。 基于用户协同算法 1. 优点 在于能挖掘用户潜在兴趣,不断调整给用户制造惊喜。同时也有较强的实时性,有新内容同样立马能"被推荐"。 但与基于内容推荐差异在于,该算法除了平台本身产生的新内容外,还包含了用户交互行为所产生的新内容。 2. 缺点 启动门槛相对较高,对产品用户数以及平台内容有一定数量要求,并且对用户学习样本要求也高,学习样本书不足时推荐效果不理想,容易成为人工智障。 在KANO模型的需求分析上属于兴奋需求,所以在产品冷启动时一般不会优先考虑该算法。但在算法冷启动时,应该主动调教用户,如果能把用户圈到不同推荐雏形,对该算法会有一定帮助。 最后聊聊关于重复推荐问题 推荐算法最根本的意义,在于解决信息过载。如果推荐给到用户,是千篇一律的内容,那将毫无意义。 解决重复推荐可以从根源上压制,比如"阅后即焚",当用户看过该条内容后即标记为已读,已读状态的内容不再推荐给该用户。 要定义清楚用户产生什么行为才定义为"看过",是点击详情页就算,还是点开了"查看剩余全文"等行为,需要根据自身业务进行考虑。 上述的"阅后即焚"可以解决内容单条重复,但还无法解决同质化的问题。 以信息流产品为例,有A和B两篇文章: 1)A和B属于列表页和详情页都一致的文章 对用户而言只需要看A和B其中一篇就可以。所以,应该展示其中一篇适当的内容给予推荐,这里面的"适当"可以有两个维度:如发文时间(过滤搬运)、发布者信息(如果是新闻机构号权威一般大于个人号)。 2)A和B两篇文章属于列表页相同,但详情页不相同的情况 那么用户点击过A文章,短时间内大概率不会再看B文章。因为在用户的视角,他认为A和B是重复的,所以会大概率错过B文章,对于这类情况应该拉开推荐间隔。 3)A和B两篇文章属于列表页不同,但详情页相同的情况 需要考虑用户是否有"看过"其中一篇文章。如果看过A文就没必要再推B文;但如果都没有看过,那么可以进行推荐。因为列表页的差异会影响用户行为,一个标题一张封面都会导致用户是否会查看文章,所以这种情况A和B都有推荐的必要性。