《推荐系统实践》:当我们在谈推荐时在想什么?
2016-11-06
用信息过载甚至信息爆炸来形容当前这个无处不被互联网渗透的时代真是毫不夸张。每天打开手机,不断推送的各种信息,通过各种手段抢夺着每一个用户的分分秒秒。在这个时代,无论是信息消费者还是信息生产者都遇到很大挑战:对于信息消费者,饱受过载信息干扰而很难找到自己感兴趣的内容;对于信息生产者,让自己平台的信息获取用户关注,也并非一件容易的事情。
因此,不少人预言,互联网的一大潜力市场在于对用户时间的节约,谁能在有限时间内更高效为用户解决问题,谁就能获取用户的青睐。因此,高效个性化充分满足用户潜在需求的推荐系统开始发挥越来越大的作用,它在连接信息生产、信息本身、信息接收三者之间起到很重要的桥梁作用。
可能一些人会把推荐系统的优化认为是纯技术算法的事情,或者认为推荐系统的优化是一件有点神秘的事情,如何将算法应用在推荐系统的优化中?如何解决推荐系统的冷启动问题?如何解决推荐策略中的马太效应?最近看了一本《推荐系统实践》,觉得是一本不错的推荐入门书籍,推荐给大家。
首先说明这是一本技术书籍,作者就是一名工程师,里面贴了大量代码,不懂代码的人可以忽略不看,但可以阅读代码背后的策略逻辑。以及虽然在阅读电子书时,做了不少摘录和笔记,但不会把每一章每一节的内容事无巨细的告诉大家,主要说一些我的感受。
推荐的冷启动问题。
当一个新用户来到一个应用/网站,是缺乏基础信息的,推荐系统不知道他的历史行为和偏好,这里就需要推荐的冷启动。针对冷启动的推荐,《推荐系统实践》里主要提到了这一点——提供非个性化的推荐。
1 非个性化推荐的最简单例子就是热门排行榜,我们可以给用户推荐热门排行榜,然后等到用户数据收集到一定的时候,再切换为个性化推荐。
2 利用用户注册时提供的年龄、性别等数据做粗粒度的个性化。
3 利用用户的社交网络账号登录(需要用户授权),导入用户在社交网站上的好友信息,然后给用户推荐其好友喜欢的物品。
4 要求用户在登录时对一些物品进行反馈,收集用户对这些物品的兴趣信息,然后给用户推荐那些和这些物品相似的物品。
5 对于新加入的物品,可以利用内容信息,将它们推荐给喜欢过和它们相似的物品的用户。
6 在系统冷启动时,可以引入专家的知识,通过一定的高效方式迅速建立起物品的相关度表。
我们谈个性化时,我们在想什么?
作者说:“个性化推荐的成功应用需要两个条件。第一是存在信息过载,因为如果用户可以很容易地从所有物品中找到喜欢的物品,就不需要个性化推荐了。第二是用户大部分时候没有特别明确的需求,因为用户如果有明确的需求,可以直接通过搜索引擎找到感兴趣的物品。”
在我看来,个性化推荐要做到充分满足用户个人需求且真正有价值的,需要重点考虑以下几点:
1 覆盖率问题。一个热门的信息被用户点击的越多,就越容易被推荐系统所推荐,最后导致的结果,推荐系统呈螺旋式分布,越热门的越被推荐,长尾的价值被淹没了。因此,要谨防推荐系统的马太效应,对特别热门的大家已知的内容要适当降权,而应该更多考虑基于用户兴趣、社交关系、时效性的推荐。
2 提升有价值信息的权重。这里就涉及到一个推荐系统健壮性的问题。基本上互联网从业者都知道,个性化推荐需要综合用户人口统计学特征、用户行为以及社交网络的多重因素,但这个多重因素如何分配权重问题?是不是所有和个性化相关的都要加到参考因素里进行实时计算呢?这样做,不仅意义不大,当系统物品数超级庞大时进行对计算能力也是一个挑战。因此,设计推荐系统时尽量使用代价比较高的用户行为。比如,如果有用户购买行为和用户浏览行为,那么主要应该使用用户购买行为,因为购买需要付费,攻击购买行为的代价远远大于攻击浏览行为。
3 提升用户的信任度。推荐系统需要通过前台展现告诉用户这是其感兴趣的人或物。简单的呈现,并不能得到越来越精明用户的认可,怎么办?需要提升用户的信任度。提升信任度需要提升推荐的透明度告知推荐理由。推荐理由也有很多细分:从物品本身进行挖掘,比如推荐一家餐厅,展示餐厅的推荐菜;从用户行为进行挖掘,“你曾经购买过”、“你曾经收藏过”;借助用户的社交网络进行推荐:“你的微信好友也去过”,“你的微博好友也喜欢”。在对物品本身进行挖掘时,针对离散化语言的语义挖掘识别非常重要,目前电商和O2O网站应用比较普遍,将用户非结构化的评价标签化。标签化的好处在于简单易理解,聚合同类信息,便于输出应用。
推荐十原则
书中提到,2009年ACM推荐系统大会上Strand的研究人员总结了10条在设计推荐系统中学习到的经验和教训。
(1) 确定你真的需要推荐系统。推荐系统只有在用户遇到信息过载时才必要。如果你的网站物品不太多,或者用户兴趣都比较单一,那么也许并不需要推荐系统。不要为了做推荐系统而做推荐系统,而是应该从用户的角度出发,设计出能够真正帮助用户发现内容的系统,无论这个系统算法是否复杂,只要能够真正帮助用户,就是一个好的系统。
(2) 确定商业目标和用户满意度之间的关系。对用户好的推荐系统不代表商业上有用的推荐系统,因此要首先确定用户满意的推荐系统和商业上需求的差距。一般来说,有些时候用户满意和商业需求并不吻合。但是一般情况下,用户满意度总是符合企业的长期利益,因此这一条的主要观点是要平衡企业的长期利益和短期利益之间的关系。
(3) 选择合适的开发人员。一般来说,如果是一家大公司,应该雇用自己的开发人员来专门进行推荐系统的开发。(不过我觉得这句话基本约等于废话)
(4) 忘记冷启动的问题。不断地创新,互联网上有任何你想要的数据。只要用户喜欢你的产品,他们就会不断贡献新的数据。
(5) 平衡数据和算法之间的关系。使用正确的用户数据对推荐系统至关重要。对用户行为数据的深刻理解是设计好推荐系统的必要条件,因此分析数据是设计系统中最重要的部分。数据分析决定了如何设计模型,而算法只是决定了最终如何优化模型。
(6) 找到相关的物品很容易,但是何时以何种方式将它们展现给用户是很困难的。不要为了推荐而推荐。
(7) 不要浪费时间计算相似兴趣的用户,可以直接利用社会网络数据。
(8) 需要不断地提升算法的扩展性。
(9) 选择合适的用户反馈方式。
(10)设计合理的评测系统,时刻关注推荐系统各方面的性能。
推荐系统将把我们带向何方?
推荐系统的初衷是为了节约时间,为无明确需求的用户提供决策指导、丰富阅读信息。然后理想很丰满,现实很骨感,现实是这样的么?
前几天看到caoz写的一篇文章《推荐算法,机器学习,会将我们带向何方?》,里面讲到一些反面例子。比如某以算法著称和个性化推荐的app,会让作者觉得自己是一个低俗的人,“为了追求用户的点击,浏览,也就是自己的内容更多的被推荐,他们更倾向于采纳故弄玄虚,危言耸听的标题,而系统,这套算法,在实践运营中,也明显激励了这样的行为。”“从数据来说,这是一个多赢,用户的活跃度很高,点击率很好看,广告卖的很好,作者分到了很多钱,而这家公司获得了非常漂亮的财务报告。”用户获得更有价值的信息吗?用户的时间被节约了么?事实上,是一些用户和作者在恶趣味的道路上越走越远,最终会让用户产生这是一个低俗内容app的感觉。虽说算法是冷冰冰的,理性的,但算法是可以调优的,在设计推荐系统时需要考虑不做恶原则。
说完内容引导的不做恶原则,再谈谈推荐算法在移动互联网时代的实际应用。这本书因为写的较早,基于移动互联网的一些思路没写进去。比如基于地理位置附近的用户感兴趣的,正在做的,附近的有价值商户(新的,优惠的)以及基于用户征信的,都可以对用户行为作预测和推荐。比如o2o平台百度糯米充分利用百度大数据和对用户行为的深度挖掘,可根据用户地理位置推荐餐馆优惠打折信息,并根据用户已有行为在电影开始前、KTV开始前等购买预约行为进行引导提示,在合适的地点合适的地点精准预测用户需求,用户不再需要主动去搜索,更好节约用户时间,为用户创造价值。类似还有google now等。
推荐系统将把我们带向何方?这是一个结合智能策略、机器算法、人工智能预测分析人心的系统,在想,随着科技进一步的发达和VR、AR技术的发展,以后会有基于感官体验的推荐么?人的一切吃穿住行都可以被系统推荐安排吗?也许若干年后,人的核心价值就是思考了吧。