前章:http://www.jianshu.com/p/7abcecdb83ef
在设计推荐系统之前,我们需要明确什么才是一个好的推荐系统,指标有哪些。
用户期望
用户想看什么内容呢?
用户正在寻找某一个内容,我们就把这个东西推荐给他了;
用户最近对某一类内容非常感兴趣,我们就把这一类的优质内容推荐给用户;
用户完全没有目标,但是我们根据用户行为推荐了一个内容,用户看到之后,觉得这个内容真的很好,发现了新世界!
根据这些场景,我们应该怎么设计我们的推荐系统呢?有哪些指标呢?
衡量指标
预测的准确性
我们推荐出来的商品用户是否喜欢,是否准确?我喜欢烧脑剧情片,结果推荐出来一个超级英雄片,这肯定是不适合的。
我们可以统计用户数据,然后按照时间纬度,将基础数据分成基础数据(训练集)和校验数据(测试集),我们在基础数据中建立用户模型,然后预测用户在测试集的行为。最后通过对比预测数据与用户在测试集的真是行为,得出我们的预测准确度。
时效性
时效性有两个纬度,一个用户行为纬度,一个内容纬度。
从用户行为来说,用户现在刚刚浏览一个招聘信息,那就应该及时的向用户其他的招聘网站或者相关企业招聘。如果不够及时,后续才推荐,那么不但达不到推荐效果,还可能对用户造成干扰。
从内容纬度来说,基础数据要权衡好新老内容。以新浪微博为例:新的热点内容,因为触达的用户较少,热度较低,指标可能都不如老内容。那么如何保证新的热点内容,及时推荐给用户?保证用户同时接触到新内容,和经过沉淀的优质内容?
推荐系统需要在设计时,将时间也作为一个指标,保证新内容茁壮生长,老的内容慢慢死亡。
覆盖率
覆盖率指的是被推荐的商品占总商品的比例,随着长尾理论,我们需要保证小众的内容也能顺利地推送给用户,这也是推荐系统的魅力,将平常很难接触到的内容推荐给用户,让用户发现要给新天地。
衡量方法:我们可以统计所有的产品被推荐的次数,按照次数进行排序做一张物品流行度分布表,如果曲线非常陡峭,说明推荐主要集中在热门商品,不利于内容的覆盖率;如果曲线比较平缓 ,说明对长尾内容覆盖的比较好,用户理论上容易发现更广阔的世界。
多样性
每个人都是一个复杂的人,兴趣是非常复杂的,比如我既喜欢看恐怖电影,也喜欢看热血动漫,假如只推荐一种类型的信息,用户非常容易的疲劳。所以我们需要基于相似用户也喜欢的方式,给用户推荐少量的其他类别的信息,来引导用户发现更多感兴趣的内容。
在安排多样性内容的时候,建议采取2/8定律,多样性的内容总占比保持在20%左右
惊喜度serendipity
什么叫惊喜的推荐结果?推荐结果和用户的历史兴趣不相似,但是用户却非常满意!这就是惊喜。由于与用户的历史兴趣相似度很小,无法通过基于内容的推荐方式,只能通过相似用户也喜欢的方式或者这种推荐结果。
商业价值
作为系统设计者,为了实现商业价值。人为推送内容到用户的推荐系统中。这个时候我们必须非常谨慎小心,时时关注推荐效果,用户对于这些推荐内容的感受,实际的商业收益等等指标。要避免因一次失败的商业活动,摧毁用户对于我们推荐系统的信任度。推荐系统的商业化需要谨慎进行。
一般建议采取A/B test的方法,对照被人为推送内容的用户与未推送内容的用户之间的区别,整个推荐系统的内容的关注度是否降低/增长了?推广的效果如何,有无达到商业目的?
健壮性
将内容推荐给用户,增加了内容的曝光度。那么就会有很多内容的提供度,会人为的干扰推荐结果,例如淘宝刷单,微博水军等等。
至于提高健壮性的方法,太广太大,这里简说一下看法:横向对比。以刷单为例,用户的横向对比,大量的淘宝小号,刷好评,刷销量。那么在系统上这些小号,肯定存在一些特征:例如购买的东西一般都是促销商品,每周购买大量同类的,单价低的商品,确认收货的速度很快,商品评价描述单一等等;商品纬度:可以检测单品的热度,如果某个单品在同类别热度增长异常,就触发系统预警,进行多纬度的检查。
系统能做的就是不断增加系统的健壮性,提高干扰的难度。提高健壮性是一个长期斗智斗勇的工作。
判断健壮性的方式:建立一个训练集,计算出推荐结果A;然后进行人为攻击干扰,重新计算推荐结果B;对比A和B,就可以计算出系统的健壮性。
思考的纬度
用户纬度
用户是否得到了自己感兴趣的内容?
物品纬度
物品是否被合适的推送给用户了?
时间纬度
是否在合适的时间,将内容推送给用户?
空间纬度
是否在合适地点,将内容推送给用户?这是非常常见的O2O场景。
未完待续
引申阅读:部分内容参考自《推荐系统实践》项亮编,很不错的书,欢迎大家阅读