推荐系统(十三)

这部分讨论 RS 在 search engine 上的应用,即如何产生一个更加个性化,社会化的搜索引擎。

搜索和推荐是两个不同的概念,背后的问题却有一定的相似性。搜索问题一般是用户通过某个“query”从一堆文档中获得需要的文档的过程,用户往往有一个明确的 information need,当然这是从传统 IR 角度来看待搜索。实际使用过程中,很少有用户能通过 query 非常清晰的表达自己的 information need。这也就是说 query 本身和用户的 information need 本身存在一个 gap,就算 search engine 能够准确的 retrieve 文档,甚至给出对某些人合理的 ranking,但是结果对这个特定的用户来说很可能是不准确的。

推荐问题可以看成是一种对用户的 information need 的猜测,如果说传统的搜索引擎是 query 的忠实执行者,推荐系统就不是一个“忠实”的执行者,它是 RS 的设计者提供的一种“先验性”假设的体现:两个物品如果被很多人同时购买,那么买其中一个的人很可能也需要另外一个;如果你的朋友很喜欢这个东西,兴许你也会感兴趣;如果两个物品功能差不多,也许你会考虑另一个作为购买的潜在对象。因此 RS 注重于一种“主动”(搜索)和“被动”(浏览)之间 gap 上的问题,这也导致 RS 往往出现在某些辅助性的场合里面,并不是给人以非常直观的显眼的感觉。

在搜索问题里面,推荐系统可以为用户提供一些先验上可能有效的 candidate。这其实也算是为 search engine 提供了另外的 signal。传统的 search engine 使用的主要来自下面的 signal:

  • 文档本身与 query 的 signal,如通过 inverted index 进行检索,获得位置信息,匹配程度,等等
  • 文档自身的连接结构信息,如 Google 成名的 PageRank

事实上,如果需要 RS 的技巧,本质上我们希望获得,

  • 用户 profile 以及偏好(常见的做法是使用 profile 作为 ranking 的 feature 或者进行 re-rank):一种策略是要求用户或者网页表明所在 taxonomy(ODP 项目),一种是根据用户的 click 行为进行 feedback 的隐式学习
  • collaborative filtering 展现出来的群体性行为:一般会根据时间、地点这类学习获得 co-located 类型的行为进行推荐
  • social nets 上获得的信号

主要也就是这样三点传统 search engine 尚未完全利用的东西。但是现在的 search engine 已经开始利用这些信息了,比如 Google 现在某些搜索结果里面也会显示“你上次什么时候访问了这个链接”,“有多少人 +1 了这个连接”,“你的朋友 xxx 什么时候访问过这个连接”,很可惜 FB 不是 Google 的,不少这方面的数据还是很 sparse 的。从另外的角度,如果 Google 真的有了这个数据,你还敢在 google 上随意搜索一些东西吗?这个问题比较奇怪,从所谓的“正交性”来探讨这些“工具”,我们觉得搜索和社交应该分离,但是从某些“功能性”的要求,我们似乎又期待两者的整合。

在这些信号里面比较有趣的是 STS(social tagging systems),比如 delicious 和 last.fm,这些网站允许 user 为 item 打上 tag,通过 tag 其他的用户可能可以更方便的定位 item 甚至 user。从某种角度来看可以把这种数据(folksonomy)理解称为维度为 3 的 tensor(个么 tensor 做类似的 decomposition?传说中的 HOSVD),也可以理解称为是一个 hypergraph。这个环境下,除了给 user 推荐 item 以外,还引入了给定 user 和 item 推荐 tag 的问题。

一般说来 tag 的获得分为

  • expert tagging,通过少数专家进行标注,这样获得的一般是高质量的 tagging,但是 coverage 一般比较小
  • annotation games,比如曾经非常火爆的图片标注游戏
  • content-based tagging,这种局限性在于很难找到内容以外的能标注信息的词汇

比较直观的一些 model 是:

  • 将 tagged 数据转换成为 CF/matrix factorization 需要的矩阵,这一般是将存在 tag 的 user/item 之间放 1,否则放 0;
  • multi-mode recommendation,计算用户相似性的时候可以用不同 tag 产生的相似性的加权
  • 对 pLSA 类似的 model 进行扩展,增加 tag 的维度上的分解
  • 推荐的时候可以用张量分解的结果作为 ranking 函数
  • 可以利用 PageRank 的思想对 item 进行学习,重要的 tag 对应 item 就会比较重要,重要的 user tag 也会比较重要,这样我们需要将 hypergraph 先转换成 undirected graph,这其实可以用一个 tri-partite graph 来描述,

这部分内容可以算是一个偏向 research 的 topic,但是感觉现在大部分系统还是使用的比较简单的功能。

——————-
And Abraham answered and said, Behold now, I have taken on me to speak to the LORD, which am but dust and ashes:

Advertisements
推荐系统(十三)

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s