Tag Archives: recsys explanation

Surprise Recommendations need Reasonable Explanation

In recent years, many researches focus on increasing recommendation serendiptiy – how to make surprise recommendation. In my research, I find surprise recommendation is not enough, we must give reasonable explanations. This is because users need explanation to make sure your recommendation is relavant to them. In real life, we always give detail explaination when [...]

推荐解释对推荐的重要性

知道推荐解释是很久之前的事情了,但真正了解推荐解释的重要性却是最近的事情。推荐解释之重要,在于他可以让用户理解推荐,并且知道他的行为是怎样影响他的推荐结果的。 好的推荐解释的例子有上图amazon的推荐解释。另外大家常用的google reader也是有推荐解释的。他的推荐解释是基于user的,他会告诉你这篇文章谁也喜欢,或者是谁分享的。这个时候,用户如果要获得好的推荐,他可以通过选择follow谁来决定。所以说,有了好的推荐解释,甚至可以不用算法。我个人把twitter本身也看做一个有解释的推荐系统。用户可以通过选择follow来决定自己的首页上显示什么样的消息。 一个好的推荐系统,不在于其算法的复杂性,也不在于其精度或者其他指标。而是在于他能成为一个循环的良性系统。一个系统要进入良性循环,反馈是最重要的。而反馈是用户给的,如果用户能给出好的反馈,那么推荐系统就会越来越好。这几年推荐系统的研究逐渐复杂化,大家都在比拼自己算法的高深和玄妙,其实没有必要。复杂的算法只是用来应付坏的数据,而如果数据足够的好,简单的算法效果是最好的。 用户有的时候困惑于我们的推荐,他们会很奇怪,为什么我们给他推荐这个东西。从而产生对推荐系统的不满。这个时候,如果我们给他以解释,告诉他我们为什么推荐这个,已经推荐结果和他的日常行为之间的关系。用户就可以知道如何反馈行为给推荐系统。同时对奇怪的推荐的不满程度也会下降。 其实揭示算法的本质,goole很早之前就做了。google鼓励大家seo,并且告诉大家什么样的网页权重会高。这也促进了互联网上网页格式的统一,对google本身也是好的。当然这也会引来作弊,这是双刃剑,无法避免。 国内的推荐系统在解释方面不是很重视,豆瓣似乎一直是没有解释的,他只是简单区分了友邻的推荐和基于浏览历史的推荐。 我感觉,好的推荐系统是应该以可解释性为中心的。一个不可以解释的推荐系统终将不能成为一个持久的系统。当然很多算法的解释性不好。KNN的解释很容易,而SVD的算法几乎就是没法解释的。而往往常规的推荐系统设计是以精度为中心的。我现在对精度的看法是,这件事基本不靠谱。我们实验测的精度,和用户满意度之间有没有线性正比关系,我相当怀疑。一个用户对一个系统满意,不仅仅在于推荐本身是否满足他的需要,而且在于系统告诉他,他应该怎么做才能获得自己想要的结果。 对实验精度的另一个批判是,这其实只是预测精度。预测这件事情有的时候很容易做对,他的难易在于被预测item的信息量。如果我预测太阳从东方升起,那肯定是100%的精度。而我对现有推荐算法的看法是,我们的所谓预测精度的提高,往往都是在提高对容易预测对的事情的预测精度,而对于不容易预测对的事情的精度,我们几乎没有提高。比如在netflix prize中,对于高方差的电影(用户看法极端不一致的电影),我们的预测精度的提高甚至连1%都没有。要知道,如果一个电影全世界的人都打4分,你预测一个新人也打4分,预测对了,也是没有意义的。