推荐系统的问题模式
我们知道,推荐系统的使命是为用户和物品建立连接,建立的方式是提前找出那些隐藏的连接呈现给用户,这是一个预测问题;
所以推荐系统的预测问题模式,从达成的连接目标角度区分,有两大类:
1. 评分预测;
2. 行为预测
因为评分和行为是用户对推荐结果的两类反馈,我们给他们推荐了一个或多个物品,目的是希望他们“消费”,
这种消费反应在 用户行为上,比如“点击查看”, 信息咨询类的还有“阅读完成”, 视频音乐类的有“播放完成”, 电商类的“加入购物车” 等。
这里我们的思考点,其中可以思考的一个点,我们平时营销活动场景,搞活动发券,券的核销,最终的整一个活动闭环。
整个行为呈现一个漏斗形状,从曝光到最终消费完成。最后在用户完成消费后,产品方一般还希望他们告诉自己消费的体验,这时候就有评分了;所以不同推荐系统的任务也不同,有的直接去预测用户如果消费完之后会给多少评分,更多的推荐系统则会分层,致力于预测用户的行为。
评分预测
评分预测要干的事情是这样的:假如用户消费完一个物品之后会给出一个打分,比如通常是1~5 分,或者有的网站用星星的颗数表示,也是一样。
我们就想能不能提前预测一个用户对每一个物品会打多少分,找出那些他可能会打高分,但是还没消费的物品,然后装作若无其事地呈现在他面前,惊不惊喜,意不意外?
问卷系统:收到用户的评分报告。
说干就干,怎么干呢?正如王小波给李银河写的信那样:不能胡干。一个朴素的思想是:建立一个模型,这个模型会给用户历史上打过分的物品去预测分数。
预测分数和实际分数之间会有误差,我们根据这个误差去调整模型参数,让这个误差越来越小,最后得到的这个模型理论上就可以为我们干活了。事实上,这其实就是个机器学习里面的回归问题。
评分预测问题常见于各种点评类产品(如:书影音的点评),但评分类推荐存在以下问题:
- 数据不易收集,我刚才说过,用户给出评分意味着他已经完成了前面所有的漏斗环节;
- 数据质量不能保证,伪造评分数据门槛低,同时真实的评分数据又处在转化漏斗最后 环,门槛高;
- 评分的分布不稳定,整体评分在不同时期会差别很大,个人评分在不同时期标准不同,人和人之间的标准差别很大。
用户爸爸们给产品施舍的评分数据,我们又叫做显式反馈,意思是他们非常清晰明白地告诉了我们,他们对这个物品的态度;与之相对的还有隐式反馈,通常就是各类用户行为,也就是另一类推荐系统问题:行为预测。
- 隐式反馈常常和模型的目标函数关联更密切,也因此通常更容易在 AB 测试中和测试指标挂钩。这个好理解,比如 CTR 预估当然关注的是点击这个隐式反馈。
几个常见顽疾
- 冷启动问题;
- 探索与利用问题;
- 安全问题。
关于“如何解决冷启动”本身,有伪命题的嫌疑,因为通常的解决方式就是给它加热:想办 法引入数据,想办法从已有数据中主动学习(一种半监督学习)。
探索与利用,行话又叫做 EE 问题。假如我们已经知道了用户的喜好,一般有三种对待方 式:
- 全部给他推荐他目前肯定感兴趣的物品;
- 无视他的兴趣,按照其他逻辑给他推荐,如编辑推荐、随机推荐、按时间先后推荐等 等;
- 大部分给他推荐感兴趣的,小部分去试探新的兴趣,如同一边收割长好的韭菜,一边播种新的韭菜。
评分预测是显示反馈,因为用户已经购买过商品表明了他们的态度,给其他商品打分是为 了找出符合用户态度的商品然后做推荐;行为预测之所以说是隐式反馈,是因为我们仅有用户的行为数据,但是用户还没实际的买账操作,相比用户已经购买的显式态度,这是用 户的隐性态度.
对于存在多种隐反馈行为的推荐系统,比如电商这一场景(同时有点击、浏览、收藏、加 入购物车),该如何设计推荐策略。我们过去的做法是将这些行为作为不同维度的量化特 征对来预测将来某一种行为会不会发生。老师有没有好的建议?
回复: 可以这样做,但是可能有过拟合的危险,因为多种行为可能不见得是时序先后发生的。还有一种做法是分别对每种行为建模预测,在不同场景使用不同侧重的模型。
类似这些在一个领域总结出来的普适规律,对于推荐系统的效果提升非常有用:有的是防止闹笑话自毁品牌形象,有的是大幅提高某些指标,有的是缩短模型训练周期。
一种对算法的常见误会就是:短期高估,长期低估。如果你不是算法工程师,比如产品经理或者运营人员,那么可能你要尤其注意,在一款个性化产品诞生之初,算法所起到的作用可以忽略,我们不能指望它能让产品起死回生、一飞冲天,但就此抛出“算法无用论”也是很愚蠢的。
目标思维和不确定性思维
四个元素的重要性认识清楚后,我再给你掏心掏肺地传达两个思维模式:目标思维和不确定性思维。
我个人对于软件产品有一个粗略分类。传统的软件是一个信息流通管道,从信息生产端到信息消费端的通道,比如一款内容 App,写内容的可以正常记录,读内容的可以流畅加载,
无论多大的并发量都扛得住,这就是一个正常的产品了。
但推荐系统这种产品,如果是一个产品的话,它和作为信息流通管道的本质不一样,它是一个信息过滤工具,要解决的问题不是信息流通本身,而是如何让流通更有效率。
这两个本质不同的软件产品,决定了我们要以不同视角去对待推荐系统。传统的软件产品追求的是稳定和满足预期,背后思想强调的是逻辑和因果链条,软件体验上设定好行为和响应,软件设计上强调分层以应对无比复杂的操作逻辑。
核心词可以表述为:逻辑、因果、分层。反观推荐系统这种信息过滤系统,追求的是指标的增长,背后思想强调是目标和不确定性:我们并不能很确定地模拟每个人将会看到什么,也不能很好地复现一些操作过程,充满了不确定性,但是在推荐系统未动的情形下,目标先行则是常识。
反观推荐系统这种信息过滤系统,追求的是指标的增长,背后思想强调是目标和不确定性:我们并不能很确定地模拟每个人将会看到什么,也不能很好地复现一些操作过程,充满了不确定性,但是在推荐系统未动的情形下,目标先行则是常识。
关于目标思维,如果了解机器学习的人会很好理解。通常来说,训练机器学习模型是一个不断最小化(或者最大化)目标函数的过程,先设定一个目标函数,然后通过不断迭代让这个函数值到最小值(或者最大值)。
我们把一个推荐系统也看做一个函数,这个函数的输入有很多:UI、UE、数据、领域知 识、算法等等,输出则是我们关注的指标:留存率、新闻的阅读时间、电商的 GMV、视频的 VV 等等。这些指标就是函数值,我们做任何事情:加新的策略、替换现有的推荐算法、修改 UI、甚至一些文案的调整,都是在改变这个函数的参数,是否有效就要看看函数的输出值,输出值在增长,说明修改就有效,就继续沿着那个方向修改,一旦无效或者起反作用就立即需要回滚。
盯着量化后的目标去行动后,还需要你具备另一个思维:不确定性思维。这个思维是开发传统软件类产品后较难转变形成的。
什么是确定性思维?举个例子说,原来的产品我们能知道某个人的界面上看到的是什么,因为它是完全依靠逻辑和因果链条引发而成的,只要初始条件给定,那么结果就是一定的,也因此在出现 Bug 时可以很容易复现,这是确定性思维,就是对于结果有预期,可以提前推演出来。 反之,不确定性思维就是:不用因果逻辑严丝合缝地提前推演,而是用概率的眼光去看结 果。 比如说,出现了一个不是很合适的推荐,通常老板们会立即责问:“为什么出现这个”,这 就是确定性思维在作祟,如果是不确定性思维,就会问:“出现这个的可能性有多大”。
为什么负责推荐系统产品的人一定要有不确定性思维呢?原因有以下几个。
-
绝大多数推荐算法都是概率算法,因此本身就无法保证得到确切结果,只是概率上得到好的效果;
-
推荐系统追求的是目标的增长,而不是一城一池的得失;
-
如果去花时间为了一个 Case 而增加补丁,那么付出的成本和得到的收益将大打折扣;
-
本身出现意外的推荐也是有益的,可以探索用户的新兴趣,这属于推荐系统的一个经典问题:EE 问题
不确定思维就是根据我们的数据,哪怕对同一用户同一时间的推荐结果,都可能是不同 的,我们总是推荐目前推荐系统结果中概率最大的结果,但当其他数据累加时,即使该用 户行为不变,我们算法也不变,这个结果也是很有可能会变的。
量化指标和结果不确定性是推荐系统的两个重要特征。只要做好量化才可以计算,才能成 为一个可计算问题,一切没有量化的知识、逻辑都无法从算法获益。任何一个模型都是错误的,因为模型和现实永远会有偏差,优化只能减小这种偏差,不能完全消除偏差。
不确定性思维,是由于推荐系统的推荐的是概率性事件,不是必然事件,因此结果不是确 定的,要用不确定性的思维去理解
NewsFeed 的成功,验证了几个常识:
-
数据驱动比舆论驱动靠谱,别听人们嘴上是怎么说的,只看人们是如何行动的;
-
窥探隐私,向群体靠拢,害怕孤单是普遍人性,把新鲜事公开这件事验证了这一点;
-
注意力非常有限,用推荐系统的方法更好地储存注意力,基于兴趣的信息流验证了这一点。
-
内容源 内容源是注意力的重要间接影响因素。“内容哪里来”是信息流要不断思考的问题,对于 NewsFeed 来说,就是社交关系上的人发布新鲜事。 NewsFeed 存在的前提是要依赖用户建立大量的社交联系,这样才会出现信息过载,因此 NewsFeed 的一个重要的配套设施就是“你可能感兴趣的人”推荐系统。 这是一个我们在产品形式上比较熟悉的推荐系统,它是一套大规模矩阵分解算法,,这套推荐系统希望用户和用户,用户和 App、公共主页等都建立起大量的连接。
建立起连接,相当于变相地增加了内容源,这些用户发布的新鲜事,App 产生的内容,公 共主页发布的帖子,都会通过这些连接流进用户的个人信息流。
社交信息流中,内容源依赖于社交关系的数量。而图文资讯信息流,则更多依赖爬虫技术,“不生产内容,只是内容的搬运工”。依赖爬虫的信息流内容源,质量非常不可控,会有涉黄、涉政、涉暴力等敏感内容,甄别工作量非常巨大,而且一旦控制不好就是社会事件,代价惨重,这一点在 2018 年,你一定感受很深。
内容源是信息流的一种重要基础设施,要想尽办法建设好。
内容源应该考虑下面几种。
-
质量:虽然群体喜欢消费低质量的内容,便宜商品,但是一旦出现敏感内容, 不合格的 商品等,代价还是很高昂。
-
多样性:信息只有多样了才有信息量,有了多样性才能满足更多的用户,才能在存储海 量注意力时不衰减。
-
数量:数量自不必说,推荐系统解决信息过载问题,没有信息过载问题怎么办呢? 就是先制造信息过载问题,要制造信息过载,信息的数量就要有保障。
-
广告系统 Facebook 的广告形态多样。
-
Suggested Page (你可能喜欢的公众页)
-
Page Post (公众号帖子推广)
-
Suggested App (你可能喜欢的应用)
-
Video Ads (视频广告)
注意力有个特点:总量有限。随着信息越来越丰富,注意力越来越稀缺。
大致来说,打造一个推荐系统的成本分布在这几个地方:
- 团队成本;
- 硬件成本;
- 机会成本。