推荐系统有哪些坑?

求各位介绍一下,在做推荐系统时遇到的坑?
关注者
947
被浏览
22664

15 个回答

大家可以移驾:推荐系统的坑(2) 里面有崭新的,另一个角度的观点。


刚好前段时间写了这么一篇,博客地址:推荐系统的坑

内容如下:

第一坑:高估系统对用户需求的捕捉能力;

我们都说,搜索引擎是满足用户主动需求的产品,而推荐系统则是满足用户隐含需求的产品。当用户明确需要什么信息,就把需求转化为检索词,丢到搜索引擎,搜索引擎帮用户找到它,而推荐系统则能良好的感知用户未明确陈述的需求,为其呈现信息。那么问题来了,既然推荐系统能够捕捉用户的需求,也就是说用户还没丢关键词给搜索引擎之前已然知道用户要什么,直接为用户呈现出信息不更好?还需要搜索引擎干嘛?!

当然更好,当然很好,只是做不到。

用户的需求是多变的,其中暗含着某些规律,但却不可能被完全的,彻底的捕捉到,例如用户浏览一个商品页面,可能他对网页上的产品感兴趣,可能他被网页上的代言美女吸引,可能他在为女友准备礼物,可能他在为家人准备年货,也可能只是误操作罢了,这些细节被系统感知到的难度太大,所以我们无法知道用户下一步要去做什么,哪又如何推荐?

推荐系统有其边界,一切技术均有其边界,局限于当前技术成熟度,局限于数据,局限于现实世界与技术世界的距离。当产品经理不了解技术的边界,而技术人员则缺乏产品思维的时候,这种错误便容易发生。


第二坑:不顾场景,强暴用户需求;

假设你非常喜欢榴莲蛋糕,任何人送你一款这样的蛋糕你都无比高兴,任何人推荐一款这样的蛋糕你一定会认真考虑。但是如果某一天你正在私宅床上与女友翻滚厮磨,有一人推门而入,问你:“根据俺们系统的分析,请问您是否需要一款美味的榴莲蛋糕?”,不知你是否感觉开心。而有一天你正在厕所,蹲坐在亲爱的马桶上,同样这个人也推开门问你“请问您是否需要一款美味的蛋糕?”你有没有不去把他打死的冲动?

这是典型的“不顾场景”的案例。

可能系统良好的挖掘了用户的需求,但是如果不顾场景,带来的将是用户巨大的反感。例如,我们公认的基于社交网络进行各种类型的推荐都是非常好的推荐思路:你所熟悉的人的行为对你有着非常好的借鉴作用。这一点没错。但是一般而言,对商品的推荐还是要放在商品售卖网站,对电影的推荐也请放在电影票售卖网站。浏览这些网站的用户,都带着强烈的隐含需求,但选错了地方,往往形成对用户的“强暴”,安能不败。


第三坑:将“推荐”理解为“推送”;

继续第二个坑的故事,被揍的推销员遁回家后万般委屈,当脑海中萦绕着的“我咋知道你啥时候需要榴莲蛋糕,我咋知道你啥时候跟女友滚床单我咋知道你啥时候蹲厕所”的幽怨思绪沉寂下来后,痛定思痛决定不再到用户家里推销,而是告诉用户,需要蛋糕的时候打个电话给他,他会推荐几款最好的蛋糕给用户,终于避免了被揍并且收获了不菲订单。

嗯嗯..故事只是故事。只是用户渴望惊喜,又憎恨被打扰的折中究竟在哪?

不妨变主动变被动,当下无数的互联网产品都有一个“发现”模块,包括微信,Twiiter等大量产品。用户有需求的时候,会主动的找“推荐”,避免被打搅。而对于推荐系统,也避免对用户形成打扰,引起用户反感。


第四坑:不顾用户需求的“个性化”程度,粗暴技术选型;

我们将推荐系统的目标进行简化,假设它要解决的是点击率/转化率预估问题(但实际上远不止这个问题,本文不展开)。那么这些指标都与哪些因素有关?我们用“看岛国片子”为例,也就是说,用户点击/观看一部被推荐片子,都与哪些因素有关?

(1)平台的因素:一部片子放在官方的平台上,跟放在旮旯的小平台,完全一样的信息,这些数字显然不同(小平台的片子谁敢点?病毒啊对不!);

(2)片子本身的魅力: 几部片子,即使有同样的静态信息(导演,女优,出品商等),一定也会有所差异,这些差异的原因非常难以捕捉,但通过历史信息却可以看到;

(3)片子信息造成的差异:例如一部片子是吉泽明步出演,另一部则是一位名不见经传的女同志出演,第一步被认可的概率必然大一些。

(4)用户的群体偏好:例如“搞IT的更加喜欢苍井空”,那么当一个人是IT从业者,苍老师的片子他应该更加喜欢;

(5)用户的个性化偏好:例如我的一位亲爱的同事喜欢松岛枫,理由是演技高超,气质高冷。那么松岛老师的片子他一定喜欢,同样的“演技高超,气质高冷”的几位演员,对他进行推荐也不错。

其中这几个因素,有一定的界限,其对应的技术选型也不同,如果只有平台的因素,点击率与转化率遵循Beta分布,只需要对这些值进行估计。而片子本身的魅力通过简单的历史信息统计便可得到。片子信息造成的差异,则可以通过典型的线性预估+属性特征进行处理。而如果有强烈的群体偏好,则可以在线性预估模型里面增加交叉特征,但是如果个性化需求极其强烈,那么协同过滤算法可能更加适合。


推荐系统的不同产品形态,“个性化”程度不同,例如微博的推荐产品“微博话题”推荐,没有太强个性化,这样的推荐系统要解决的问题是“大家都喜欢什么?”,简单的统计便能搞定。对于多数广告类产品,个性化需求太难以捕捉,要解决的问题是“什么样的人喜欢什么样的结果?”,那么线性模型+属性特征+交叉特征更加适合。但是对于大多数推荐产品,尤其是大平台的推荐产品,去探索“每个人喜欢什么东西?”的个性化推荐技术(协同过滤,SVD等)可能更加适合。而不同的产品,选型哪怕类似,却也或多或少隐含差异,例如社交网络中的一些推荐产品,基于图挖掘的推荐方式可能更加适合。

一句话,技术选型必须参照产品形态与用户需求。我曾经跟同事慨叹现在方法之多,资料之多,不知道如何选择,同事冷幽幽的一句“全部实现了,再看个半年Case就行了..”,然也。

还有挺多,暂时先谈如上一些。归根结底一句话:缺乏科学精神的“产品理想主义”与“技术理想主义”要不得。

1、高估算法作用

推荐系统中,按照影响效果:用户交互界面(UI) > 数据 > 算法。

2、评测时主观臆断

对推荐结果有心理预期,主观臆断效果好坏。殊不知推荐系统追求的是整体效果提升,而无法照顾到具体每个人。特别是在社会化推荐中,通过用户好友关系增加的是对推荐结果的信任度,而非准确率与召回率,这时候离线评测不合适,需要进行人工评测,谨慎接受每个人的反馈,做好线上评估。

3、忽略算法生命周期

推荐算法都是有生命周期的,不存在银弹,无法一劳永逸,算法需不断迭代。

为什么?