编程it互联网程序员产品面面观

推荐系统(二)纬度考量

2016-04-09  本文已影响176人  xunzou

前章:http://www.jianshu.com/p/7abcecdb83ef

在设计推荐系统之前,我们需要明确什么才是一个好的推荐系统,指标有哪些。

用户期望

用户想看什么内容呢?

用户正在寻找某一个内容,我们就把这个东西推荐给他了;

用户最近对某一类内容非常感兴趣,我们就把这一类的优质内容推荐给用户;

用户完全没有目标,但是我们根据用户行为推荐了一个内容,用户看到之后,觉得这个内容真的很好,发现了新世界!

根据这些场景,我们应该怎么设计我们的推荐系统呢?有哪些指标呢?

衡量指标

预测的准确性

我们推荐出来的商品用户是否喜欢,是否准确?我喜欢烧脑剧情片,结果推荐出来一个超级英雄片,这肯定是不适合的。

我们可以统计用户数据,然后按照时间纬度,将基础数据分成基础数据(训练集)和校验数据(测试集),我们在基础数据中建立用户模型,然后预测用户在测试集的行为。最后通过对比预测数据与用户在测试集的真是行为,得出我们的预测准确度。

时效性

时效性有两个纬度,一个用户行为纬度,一个内容纬度。

从用户行为来说,用户现在刚刚浏览一个招聘信息,那就应该及时的向用户其他的招聘网站或者相关企业招聘。如果不够及时,后续才推荐,那么不但达不到推荐效果,还可能对用户造成干扰。

从内容纬度来说,基础数据要权衡好新老内容。以新浪微博为例:新的热点内容,因为触达的用户较少,热度较低,指标可能都不如老内容。那么如何保证新的热点内容,及时推荐给用户?保证用户同时接触到新内容,和经过沉淀的优质内容?

推荐系统需要在设计时,将时间也作为一个指标,保证新内容茁壮生长,老的内容慢慢死亡。

覆盖率

覆盖率指的是被推荐的商品占总商品的比例,随着长尾理论,我们需要保证小众的内容也能顺利地推送给用户,这也是推荐系统的魅力,将平常很难接触到的内容推荐给用户,让用户发现要给新天地。

衡量方法:我们可以统计所有的产品被推荐的次数,按照次数进行排序做一张物品流行度分布表,如果曲线非常陡峭,说明推荐主要集中在热门商品,不利于内容的覆盖率;如果曲线比较平缓 ,说明对长尾内容覆盖的比较好,用户理论上容易发现更广阔的世界。

多样性

每个人都是一个复杂的人,兴趣是非常复杂的,比如我既喜欢看恐怖电影,也喜欢看热血动漫,假如只推荐一种类型的信息,用户非常容易的疲劳。所以我们需要基于相似用户也喜欢的方式,给用户推荐少量的其他类别的信息,来引导用户发现更多感兴趣的内容。

在安排多样性内容的时候,建议采取2/8定律,多样性的内容总占比保持在20%左右

惊喜度serendipity

什么叫惊喜的推荐结果?推荐结果和用户的历史兴趣不相似,但是用户却非常满意!这就是惊喜。由于与用户的历史兴趣相似度很小,无法通过基于内容的推荐方式,只能通过相似用户也喜欢的方式或者这种推荐结果。

商业价值

作为系统设计者,为了实现商业价值。人为推送内容到用户的推荐系统中。这个时候我们必须非常谨慎小心,时时关注推荐效果,用户对于这些推荐内容的感受,实际的商业收益等等指标。要避免因一次失败的商业活动,摧毁用户对于我们推荐系统的信任度。推荐系统的商业化需要谨慎进行。

一般建议采取A/B test的方法,对照被人为推送内容的用户与未推送内容的用户之间的区别,整个推荐系统的内容的关注度是否降低/增长了?推广的效果如何,有无达到商业目的?

健壮性

将内容推荐给用户,增加了内容的曝光度。那么就会有很多内容的提供度,会人为的干扰推荐结果,例如淘宝刷单,微博水军等等。

至于提高健壮性的方法,太广太大,这里简说一下看法:横向对比。以刷单为例,用户的横向对比,大量的淘宝小号,刷好评,刷销量。那么在系统上这些小号,肯定存在一些特征:例如购买的东西一般都是促销商品,每周购买大量同类的,单价低的商品,确认收货的速度很快,商品评价描述单一等等;商品纬度:可以检测单品的热度,如果某个单品在同类别热度增长异常,就触发系统预警,进行多纬度的检查。

系统能做的就是不断增加系统的健壮性,提高干扰的难度。提高健壮性是一个长期斗智斗勇的工作。

判断健壮性的方式:建立一个训练集,计算出推荐结果A;然后进行人为攻击干扰,重新计算推荐结果B;对比A和B,就可以计算出系统的健壮性。

思考的纬度

用户纬度

用户是否得到了自己感兴趣的内容?

物品纬度

物品是否被合适的推送给用户了?

时间纬度

是否在合适的时间,将内容推送给用户?

空间纬度

是否在合适地点,将内容推送给用户?这是非常常见的O2O场景。

未完待续

引申阅读:部分内容参考自《推荐系统实践》项亮编,很不错的书,欢迎大家阅读

上一篇下一篇

猜你喜欢

热点阅读