对做排序或者推荐功能相关的产品经理来说,机器学习不是什么陌生的概念,大家经常看到的各类产品的推荐内容也在向用户传输机器学习的概念。“看过这件商品的用户也看过”“听过这首歌曲的用户也听过”“您也许认识XX”“您的好友也关注了XX”等等这一类的推荐功能大家已经非常熟悉,排序上面应用这种方式的可能不那么明显,但是稍加留意,你也会发现许多电商平台上展现给你的列表中前面的一些内容和你曾经看过的一些东西好像有些许的关联。如果你恰好是个爱思考的人,那么大概已经猜到了这类功能的实现方式:通过用户和item(歌曲、商品、好友关系)的历史数据,(经过合适的协同过滤或其他算法)来给用户推荐Ta可能感兴趣的内容。
这种机器学习方式的排序/推荐策略效果是非常明显,根据一些公开的数据,亚马逊网站通过推荐带来的销量比例占到了20%以上,而在笔者的产品实践中,也证明了根据用户历史行为对排序策略进行调整和作出推荐对提高转化率有明显的正面作用,因此在排序和推荐等产品的策略制定中,根据用户历史行为做调整也是大家经常会关注到的内容。从上面的描述中你可能已经注意到,这类策略有一个基本前提就是用户和Item要有足够的历史数据来进行计算,如果用户或Item已经有了足够的历史数据,那么只要通过推荐算法就能够给特定的用户推荐出合适的内容,但当用户和Item没有历史数据的时候,直接通过推荐算法出来的内容很可能就会成为Badcase集锦。对于这类新用户或新Item在排序/推荐系统中处理,我们称之为冷启动,这个问题是数据工程师和策略产品经理经常需要讨论解决的问题。
什么是冷启动
冷启动研究的是在没有大量用户和产品数据的情况下,如何给相应的用户做出能够让用户能接受的推荐内容。冷启动主要分为三类:用户冷启动、物品冷启动和系统冷启动。
用户冷启动主要解决给新用户做(个性化)推荐的问题,因为新用户在系统中还没有任何历史数据,因而很难预测其喜好并做出相应推荐。
物品冷启动主要解决将新的物品推荐给可能对它感兴趣的用户的问题,因为新产品同样是没有和用户交互的数据,常见的推荐系统往往推荐的是数据较多较好的物品,而直接忽视这些新物品。在需要用到推荐的产品中,产品覆盖的物品众多,马太效应变成不得不考虑的问题,而推荐往往代表着流量入口,是造成马太效应的罪魁之一也是消减马太效应的渠道之一。如果考虑整个系统中销量的平衡、考虑推荐的多样性和覆盖率,我们需要给新商品一些推荐的机会,但是如果将新物品强行纳入到推荐中,产品经理不得不冒转化率降低的风险,而且最可怕的是这种风险是无法预期的。
系统冷启动处理的问题是用户和物品都没有没有足够的数据时候的推荐,个人认为所研究的内容应该包括在用户冷启动和物品冷启动中,不做细究。
今天主要给大家介绍常见的几种或已经确认在实践中有效的用户冷启动处理方式,至于物品冷启动,处理起来比用户冷启动更复杂,鉴于暂时还没有相应的实践经验,这部分留到有关于物品冷启动的成功实践案例之后,请大家期待产品视角下推荐/排序冷启动的处理(二)。
利用用户基础信息
用户基础信息是指用户不在产品中有任何交互,我们就能够获得的信息,这些信息主要分为三类:一是用户注册信息,比如性别、年龄、电话、职业等等一些可以引导用户填写的客观信息;二是让用户做出喜好或分类选择的主观信息,比如在一些音乐、视频和阅读类看重推荐功能的产品上,用户在注册时需要填写一些必要的信息和选择关注/喜欢的类型,这些信息很大的一个作用就是用于用户个性化内容推荐;三是可以关联外部平台获取的信息,这一类信息是在社会化登陆兴起之后可以提供给推荐的数据,比如网站通过支持微博登陆可以获取用户在微博上注册的信息和好友关系等。
在我们确认能够获得用户的这些信息之后,就可以通过直观或数据分析的方式发现不同类型的用户的不同特征,进而进行推荐。有些推荐逻辑的判别是直观就可以做出来的,比如用户注册信息是男,那么就不要给用户推荐裙子这一类的产品。而对于一些其他信息,则可能需要复杂一些数据分析来完成,比如通过手机号分析用户常住地城市,然后分析不同城市的用户在商品选择时的价格、品类、品牌偏好是否存在差异。
那么如何选择使用哪些信息来细分策略呢?我这里有一条简单的判别方法:不同特征的用户在主要考察数据表现上的差异情况,如果差异大,那就是值得细分深挖,反之就(暂时)没有什么必要。比如,你发现不同性别的用户在转化率体现下没有差异,那就不需要区分性别进行策略计算;而如果发现不同年龄段的用户在转化率体现上有很大差异,那就值得区分年龄做不同的策略。
热门推荐
用户存在着从众的心理,而且大部分人的特征是趋于相似的。因而当我们确实没法获取用户偏好的时候,我们可以采用热门推荐的方式进行推荐。新闻视频网站的浏览量、音乐网站的收听量、电商网站的销量、搜索的频次、社交网站的关注度等等都是是否热门的具体体现,热门的物品表示物品在大范围是受欢迎,研究发现,新用户更愿意接受热门的商品而不愿尝试新物品,给新用户推荐热门商品理论上至少不会犯太多错。
在处理热门的时候,需要注意的是热门的“范围”,即物品在什么维度内是热门的。这个维度包括分类、时间、地域等等,需要根据产品的实际情况进行设置。比如在亚马逊上,在科技图书中的热门,但是可能在所有图书中不是热门的。又如在新闻网站中,1小时内的热门和24小时以内的热门应该是有区别的,选择推荐哪个维度的热门是需要分析试验的。在微博上,热门微博甚至直接是按多长时间内热门分Tab展示的。对于时间跨度上的热门,如果是全局情况下,一般会采用阶梯降权的方式处理,比如1小时、24小时、3天内的阅读量按权重从大到小做推荐得分计算,其他维度的也可以尝试这种阶梯降权的方式做热门处理。
考虑item质量
虽然手头拿不出确实的研究数据,但是根据合理的猜想,用户更倾向于选择质量较高的物品,因而当新用户接触到我们的推荐时,Ta更容易接受(至少看起来)质量更高的商品。几乎每个产品系统中的物品,都会有能够体现物品质量的数据,常见的可获取数据是评分,我们可以给用户推荐在评价系统处于前列的内容。
如果用评分来作为质量的依据,那么我们可能会面临的一个问题就是新用户并不了解这个产品中某个具体评分的意义,比如在一个图书电商网站上,4.8分到底意味着什么?处理这个问题,除了我们要让评分系统尽量靠近用户认知之外(比如,别选个满分为7分的系统),还可以用一些辅助信息的展示来给用户说明,这里有一个大家熟悉的案例:淘宝中每个店铺的页面都会展示分维度的评分,并且在评分后面注明“高于同行XX%”。在推荐内容的展示中,我们可以给新用户展示评分的同时给出评价的相对意义,方便用户理解我们给Ta推荐的物品到底是什么样的质量水平。
除了评价之外,销量、浏览、收藏等等也一定程度上反映除了物品的质量,可以作为辅助参数作为选择热门物品的标准。
合理利用上下文信息
除了从用户和物品上挖掘尽量多可用的信息,对于新用户的推荐还可以合理利用上下文信息,有时候,这些上下文信息的重要程度甚至超过了其他信息。上下文信息是指用户在接触到推荐系统时的时间、地点、心情、场景等等,这些信息在用户做出决策中都具有决定性的作用,因而也是推荐系统需要重点考虑的内容。比如,音乐产品中对用户心情信息的把握,你不能在用户分手后给Ta推荐一首《今儿个真高兴》吧,同理给12月份进入购物网站的新用户推荐T恤也是不能理解的。
在笔者所在的O2O产品中,用户地理信息在排序和推荐中都有着重要位置,在机器学习模型中,其重要性甚至远远超过物品质量、用户偏好所有其他特征,曾经在某个场景中,由于地理信息丢失,转化率和交易额都遭受了严重的损失。因此,一定要关注和产品紧密相关的上下文信息,才能给新用户给出相对合理的推荐内容。
结语
在排序/推荐策略的设计中,对于那些频度较高的产品,或者任何产品中的活跃用户,机器学习的方式能够根据大量的历史数据给出用户满意的排序方式和推荐内容,但对于新用户或当数据稀疏时,机器学习往往达不到想要的效果。根据实践经验,在这种情况下,考虑了用户基础信息、热门情况、物品质量和上下文的强规则方式反而有更好的效果。但是,强规则的处理方式的前提是对业务、用户、产品有着充分的了解,而且策略本身也应该设计成可试验可对比方便迭代的以随时根据试验情况调整。
同时,这也暗含着一个策略产品经理应该掌握的基础能力,那就是对特例的识别。在策略相关的产品中,许多复杂的内容都是工程师使用机器学习来完成的,但机器不是万能的,它只会处理我们已经考虑到的内容,而我们需要做的就是思考让机器去处理哪些内容,这也是一个策略产品经理的价值之一。