最好走的路越走越难,最难走的路越走越容易

Follow guwendong on Web
  • Subscribe to Beyond Search via RSS
  • Follow @clickstone on SinaWeibo
  • Join Resys Google Group
  • Follow @clickstone on Douban
  • Follow @clickstone on Twitter

Tag Archives: resys

长尾效应,有没有,有没有?

长尾理论 [1],是由《Wired》杂志的主编 Chris Anderson 在 2004 年提出的。此外,他还编撰了同主题的一本书《长尾理论》,来详细阐述这个概念及其带来的深远影响。尽管 Anderson 在致力于颠覆人们对畅销产品的认知,但无疑他自己已经从畅销产品上大赚了一票——《长尾理论》这本书一经出版即大卖。

以 iTunes 服务为例,长尾理论认为,对于这样的纯数字服务来说,由于不再需要货架,也没有制造成本和分销费用,卖出一件非流行品与卖出一件流行品之间没有任何区别,它们的边际利润都是一样的。于是乎,流行不再是利润的唯一代名词了。通过尽可能地扩充产品种类,尽可能地降低产品价格,并充分发挥个性化推荐技术的效能,可以把顾客的需求朝长尾的方向引导,通过大量的之前无人问津的产品产生销售,累积起来就可以获得一个甚至比原有流行市场容量还要大的利基市场。

我是长尾理论的坚定拥护者。


但人生就是一个又一个的轮回。在长尾理论风光了五年之后,重量级的质疑终于还是来了。
沃顿商学院的信息学教授 Serguei Netessine 与他的博士研究生 Tom Tan 一起,发表了一篇工作论文,《Is Tom Cruise Threatened? Using Netflix Prize Data to Examine the Long Tail of Electronic Commerce》。他们通过分析 Netflix Prize 公布的数据,研究了消费者在 Netflix 网站上表现出来的对热门影片以及小众影片的需求情况。论文使用的分析方法严谨有逻辑,讲解也详实有条理,因此结果相当令人信服:“在大部分情况下,长尾效应可能并没有人们想象的那么普遍”!

我这里仅陈述结论,对具体内容感兴趣可以去读一下 paper。

1)论文提出了一个重要问题,到底如何定义“头部”和“长尾”?

在长尾理论里,Anderson 使用的是“绝对定义(absolute term)”的办法,比如“100 部顶级大片”和“100 部小众影片”。Anderson 之所以这么界定,是建立在与传统实体商业模式相比较的基础之上的,比如,录像租赁连锁店 Blockbuster 平均只能提供不到 3000 个DVD;4 万首曲目通常是一个中等音像店的流动库存量。在传统模式下,能够提供的产品总量是相对稳定的,而且所有的产品也都是以某种差不多固定的比率被消费的。
而 Netessine 教授则认为,Anderson 使用的这种绝对定义的方法是有误导性的。在互联网环境下,虽然消费者不再受地域限制,单一产品的受众得以增加;但产品的数量有了极大的提高,越来越多的产品根本无法被发现,或者还来不及被发现就又被新产品淹没了——Netflix 的数据证明了这种结论。因此,必须使用“相对定义(relative term)”的方法,把产品数量快速变化这个因素考虑进来。

2)如果同意使用“相对定义”的方法,那么,Netessine 教授的研究结果表明,在 Netflix 公布的数据中,并没有发现其中存在任何长尾效应。而且还恰恰与长尾理论正相反,帕累托原理(80/20法则)的效应变得更强了,人们对 Top-20% 影片的需求,从 2000 年的 86% 增长到了 2005 年的 90%。
此外,论文中也使用了 Anderson 的绝对定义方法来进行数据分析,结果发现,长尾效应只显示了一部分:随着时间的推移,消费者对大片的需求确实下降了,但对小众影片的需求也同样在逐步降低。(那需求哪里去了?)

3)下面这些现象,均会在一定程度上限制长尾效应发挥作用。

  • 大胆尝试小众影片的主要是电影发烧友,但是发烧友在观影群体中仅占很小的一部分(大约 25%)。而且从满意程度上看,小众影片与大片相比并不能带来额外的满意度。
  • 目前流行的基于协同过滤的推荐系统,有滞后效应,并倾向于把相似的影片推荐给相似的用户,而且,越多人打分的影片被推荐的概率越大。
  • 通常我们会认为,社会化网络 SNS
    的流行,使得口碑(word-of-mouth)的力量被几何性放大了。但有研究表明,口碑的作用其实是使“好的更好,差的更差”,即正面的口碑对畅销产品的影响更大,而负面的评价对利基产品的影响更大。而且,相似用户倾向于消费相似的产品,因为这样大家才具有共同的话题。
  • 总体的搜索成本确实在下降,但同样也是“好的更好”,畅销产品的搜索结果相比利基产品更好了。

很明显,技术进步在同时提升了畅销产品和利基产品需求的情况下,却拉大了畅销产品与利基产品的差距。“好的更好”,对长尾效应是个严峻的问题,


前文中,我有意留了一个悬而未决的问题:“需求哪里去了”?Anderson 与 Netessine 的分歧正在这里。基于 Netflix 的数据分析结果表明,Top-500 影片的需求下降了,而紧接着的一部分需求却扩大了。按照绝对定义,
Anderson 认为这是人们的需求在向长尾移动的表现;而按照相对定义,Netessine 认为这部分应该算在 Top-20% 中,即人们对头部的需求更大了。我个人认为,不管怎样,这都确实反应了人们多样化的诉求是存在的,并且在不断增长。

另外我觉得,与 Anderson 的长尾理论相比,Netessine 这份研究报告存在的一个问题就是他把所有的影片同等对待了。比如《变形金刚》和《疯狂的石头》,一个票房几亿美元,一个只有三千万人民币。尽管相比之下对石头的需求要低得多,但参照石头的拍摄成本来讲,这样的需求度足够了。与此相同的还有豆瓣音乐人,“Converse”的 Fans 只有 15369 个,与大牌歌手相比简直不值一提,但对于 Converse 来讲,这已经是一个很棒的开始了。

但无论如何,Netessine 教授的这篇报告,还是值得长尾理论实践者的高度关注。国内业界领先的实践者胖子,在这方面有着特别的智慧:

用长尾理论的话来说,大众是头,小众是尾,只是我认为与长尾理论这本书说的不同,在可预见的未来,这个头不会变平,会更尖,热的会更热。长尾很难从短头抢生意,只是头变高了,总有东西会滚下来,长尾也会变高。基本上,介入一个领域后,想作大事情,最先满足的一定是大众的需求。大众需求的特质就是磨平个性,小众是强调个性,这就像麦当劳和精品私房菜、成衣和裁缝的关系。

我想,不管是相对定义的头更尖了,还是绝对定义的头更扁了,只要那条尾巴存在,我们这些专注于满足用户个性化需求的从业者,就值得为此努力。
 

怎样利用 GReader Share 数据?

这篇文章试图讨论一下郑昀在《基于Google Reader发展起来的个性化推荐系统之三大问题》一文中提出的一些问题。提请注意,我这里的观点是基于 GReader Share 数据限定之下的。

一、火星人现象
郑昀认为主要原因是:“推荐系统无法获知用户以前的知识结构”。

  1. 这是问题一:从根子上就无法完整反映用户的阅读经历。
  2. 这是问题二:如此大量的阅读视野狭窄的用户,推荐系统能否发挥作用呢?

对于问题一,解决办法我觉得只有两个。

  1. 尽可能多的扩展公开的数据源。比如,看我在 twitter 上推过哪些短址;看我在 delicious 上收藏了哪些链接;看我在 douban 上分享了哪些内容。GReader 的用户差不多都是网络的重度使用者,这方面可用的来源肯定不少。比如我,如果你订阅了我的 FriendFeed,那么我一天在看什么,你就差不多能知道一个大概了。
  2. 需要时间来积累。

这个问题,没有捷径。

对于问题二,其实之前在 kuberfeedzshare 的时候,我就和他讨论过。当时说了要写一篇 blog 的,后来由于我太懒就作罢了。我个人意见,GReader Share 的数据不适合做推荐,应该拿来做过滤器。这个后面展开。

二、有时效性和无时效性
大多数情况下,这个世界并不是非黑即白的。
对于时效性,我个人觉得别把它作为一个太过绝对的概念,它是和人相关的,应该作为一个相对的概念来理解。对于新近才接触某个领域的人来讲,翻翻老皇历也是有必要的。比如你看了我之前这篇的唠叨,对汪峰起了兴趣,那挖出他在鲍家街的老八卦看看也挺有意思,这些信息是新鲜的。而对于同样的内容,给我看就没什么意思了,它们out了。

因此,除了像刘未鹏所指出的“将文章分为有时效性(如新闻时政类)和无时效性(如读书笔记、GTD方法等)”这个方法,我觉得还可以从用户这个角度做一些事情。简要来讲,第一,划分用户关注的领域,这个基本是文本分类的问题,方法有不少,但大规模做起来很难,当然也并没有难到不可解决;第二,让用户方便地在时间线上游动,这个需要考虑呈现方式,给个带时间的列表是一种,高级点的像下面这个

三、惊喜很难吗?
我的回答是:确实很难!非常之难!
对于推荐系统的制作者,如果能让用户发出像 @imrchen 这样的感慨,那将是对其工作的最高程度的肯定。

@imrchen: 太神奇了,Amazon 竟然向我推薦 Python 書籍,我從來不曾在亞馬遜買過程式設計的書籍,最近買的和技術有關的書是 Beautiful Data,和 Python 完全搭不上邊。他們怎麼知道我最近在用 Python 開發東西,這樣的推薦未免也太神了吧!?

一个好的推荐系统制作者,需要钻研数据,精修算法,勤于思考,同时最重要的,要有一颗真正愿意帮助用户解决问题的心。

GReader Share 的数据更适合做过滤器

郑昀的文章里面,把 GReader Share 数据所存在的问题已经讲得很清楚了:基于 Google
Reader 的第三方推荐系统,能够拿到的数据是严重不足的。

你无法知道用户有意忽略了哪些文章,你很难拿到他的好友列表,Google不像
FriendFeed那样提供Dislike/Hide的按钮;你只知道他何时Share或like了某篇文章从何处(值得注意的一个细节是,如果用户是
自己订阅了煎蛋并推荐其中一篇文章,显然煎蛋对用户来说更加重要;相比而言,用户只是从其他人的Shared
Items订阅中share了煎蛋的某篇文章,却不去订阅煎蛋,说明煎蛋对他来说可能还不算重要。这个细节有点像“quick
stumbles”的思路)。

在这样的情况下,有效的方法就是最大化已有数据的能量,解决 GReader 本身尚未解决的一个重要问题:如何对阅读列表进行有效的组织。

1、计算 FollowRank
我曾经在 twitter 上感谢过 @imrchen,因为我发现,我好友的 Share List 里面,让我有精读冲动的,好多都是他 Share 出来的。@imrchen 的例子是我自己人肉过滤出来的,其实这个计算是可以自动化的——协同过滤里所有的 User-based 使用的相似度计算方法这里都适用。然后,根据相似度,我们取 Top50 作为我们的推荐种子,可以得到一个推荐列表。kuber 和 xlvector 应该都是这么做的,这也是最标准的 User-based 方法。

但,对于 GReader Share 数据,我建议再多考虑考虑。

这里面有个典型的例子,应该有好些人都订阅了 keso’s view,然后看到好文章就从这个列表里面进行 ReShare。对于这里面的活跃用户A,如果你用 A 的 Share List 和 keso 进行计算的话,有可能就会因为相似度很高,把 A 加入到了给 keso 进行推荐的种子用户里面。这显然是存在问题的。GReader Share 的产品设计,加重了单向 Follow 的因素,因此在种子用户的选择上,必须对传统 User-based 方法进行修正。

GReader 目前尚未提供相应的 API 获取用户的 Follow 数据,另外似乎也没有提供 Share 的时间让我们可以排排序,因此,要得到 ReShare 线路图应该是不太可能的。我这里提供一个变通的思路供讨论。
假设从用户A的 Share List 出发,查找和 A 共同 Share 了某篇文章的用户,可以得到一个候选用户集 ASet。然后设计一个公式,对隶属于 ASet 的用户B,综合考虑下面几个因素。

  1. BShare 包含的来源数目。
  2. 只有 B 单独 Share 的文章数量。
  3. 有 B 参与 Share 的文章,统计总 Like 数和 Share 数。
  4. AShare 与 BShare 交集数量 / AShare 数量。
  5. 第4项得分超过某阙值的周期数。

我把依此计算的结果,定义为用户A对用户B的 FollowRank。

剩下的就简单了,取 FollowRank 的 Top50 作为种子,得到候选集,阙值过滤,排排序,搞掂。

2、区分最新/最热的与我最感兴趣的
时常可以看到关注于解决信息过载问题的探讨,我个人认为,万里长征第一步,就是把用户感兴趣的摘出来,其他的按最新/最热排序。对于 GReader Share,做到此足以。

分析用户的兴趣,前面讲到了可以使用文本分类的办法。简单的还有基于 tag 的办法,不过第三方应该是无法获取 GReader 用户的 tag 数据的,此路不通;但可以绕,比如从 delicious 上提取 url 对应的 tags;然而对于中文内容,delicious 能够提供的帮助相当有限。因此,这里我建议可以考虑使用类似于内容基因的办法,说白了就是基于关键字的方法。我曾经在一些豆瓣影评数据上实验过抽取电影基因,得到的关键字组合还是挺靠谱的。我相信类似的算法用在 GReader Share 上效果应该也不会差,因为 GReader Share 数据集的文章质量应该还是比较好的。

目前在 GReader Share 数据的再利用方面,最领先的无疑是 玩聚SR,但它解决的是社会化排序的问题,是非个性化的。总体来讲,GReader 在个性化方向上能够提高的地方还有很多。像郑昀、kuber、xlvector 这样对此感兴趣的第三方开发者不妨加紧实践,没准哪天就被 Google 收编了。

有兴趣进行讨论的,移步这里

 

Toby’s Lessons on recommendation systems

Toby Segaran 是 Recommender Systems 及 Semantic Web 方面的大牛,著有两本很受欢迎的技术著作,《Programming Collective Intelligence》[1]《Programming the Semantic Web》。他具备一项羡煞旁人的技能——轻描淡写之间理清算法脉络,让枯燥的公式变成具有喜感的代码。我是他的 fans。

今年上半年,他受 Andreas Weigend 之邀,在 Stanford 的 Data Mining and Electronic Business 课堂上做了一次有关“Recommender Systems”的讲座。Andreas Weigend 之前在 Amazon 任职,位居首席科学家,在 Amazon 的推荐引擎建设方面做出了大量的贡献。下面是 Toby 自己列出的一些主要观点,

  • Amazon makes 20-30% of its sales from recommendations. Only 16% of people go to Amazon with explicit intent to buy something
  • The data that you collect matters much more than the algorithm you use. Amazon’s
    algorithm is essentially a large product-product correlation matrix for
    the past hour, but it works for them because hey collect so much data
    through user actions
  • Many problems including shopping, targeted advertising, dating, finding events, etc. can be framed as recommendation problems
  • Very important take away: find ways to collect as
    much user input as possible without being disruptive. People don’t
    train systems, they try to benefit themselves, but this is the best
    kind of training data
  • There are a lot of different types of data that can train a system:
    votes, clicks, page-view time, purchases, tagging, adding a title — the
    user does these things anyway, and you can use the data
  • A/B testing is an effective and underused way to learn about
    people. Simply by varying the way you phrase something, you can learn
    more about your users
  • Very few systems now are combining metadata or content with
    collaborative filtering. The consensus in the class when discussing a
    music recommendation system was that this could be very effective

课程相关的资料在这里,看完这个,再对比我曾经所学的课程,想死的心都有了!

 
猛戳这里

简网指阅 联合创始人 & CTO
ResysChina 发起人
1. 持续关注 个性化推荐 技术;
2. 持续关注 Semantic Web 技术;
3. 评论与上两项相关的互联网业务与产品;

我相信技术的力量!
wendell.gu@GMail.com

Archives