这篇文章是一篇在L2R中(pairwise)较为鼻祖的文章,截止目前,引用量已经过1500, 以下简单说说文中解决问题的思路:

  1. 以NN为基础, ref (LambdaRank: Learning to Rank with Nonsmooth Cost Functions)
  2. 较早的将pairwise error function 引入到NN模型当中,具体做法也很straightforward,如下:
    1) 根据document的特征向量(combined with Query feature),作为输入, 单个output作为输出(解释为score, 这里不是 probability)->这里就是本文所要改进的地方
    2) 分别对pair document中单个document 进行forward propagation, 记下每个unit的Error和相关激活(注意,这里不针对单个document做 Error back propagation)
    3) 根据document pair之间真实的偏序关系,和1)中求得的score for each document,设计pairwise loss function: map偏序关系to probability(如1 排对了, 0排错了,具体设计思想来源于cross loss function)
    4) 将3)中求得的pairwise error 进行back propagation(先要先求得这里的几个错误率之间的关系:复合函数求偏导), 也就是两次正向传导,换回一次反向传导
  3. 文中还研究了一些其他问题:
    1) 允不允许两个document位置相同
    2) 产生模拟数据的两种方法对估计模型的影响
    3) 训练时加不加入unlabeled的document对结果的影响


收获与启发

  1. 启迪了用神经网络方法做排序问题(两次正向传导,换回一次反向传导,进而更新参数)
  2. 需要注意和区分的是: 这是一篇IR的文章,所以需要注意弄清楚它要解决的问题.
    Query有自己的特征向量,Document有自己的特征向量(anchor; url; text, etc.,), Document有自己的ground truth(the degree of relevance based on its query)
    所以,相较与Recommender System而言,Query相当于user, Document相当于item (问题是,这个模型有没有融合CF的概念?)
    本文学习所基于的素材是对象的特征向量,而非通过对象反应出的协同关系, 所以对于RS而言,怎么泛化到用户未访问的item是关键.(属性值泛化,还是协同关系泛化)
    所以,RS的方法至少有两条路可走, 1) 根据特征值(content-based)判断用户对物品偏好的, 和2) 根据协同关系(CF methods)判断用户对物品偏好的 (由此可以推出 3)融合1)和2)综合求用户对物品偏好的)


content-based 的优缺点(ref: 基于内容的推荐(Content-based Recommendations) )

CB的优点

1. 用户之间的独立性(User Independence):既然每个用户的profile都是依据他本身对item的喜好获得的,自然就与他人的行为无关。而CF刚好相反,CF需要利用很多其他人的数据。CB的这种用户独立性带来的一个显著好处是别人不管对item如何作弊(比如利用多个账号把某个产品的排名刷上去)都不会影响到自己。

2. 好的可解释性(Transparency):如果需要向用户解释为什么推荐了这些产品给他,你只要告诉他这些产品有某某属性,这些属性跟你的品味很匹配等等。

3. 新的item可以立刻得到推荐(New Item Problem):只要一个新item加进item库,它就马上可以被推荐,被推荐的机会和老的item是一致的。而CF对于新item就很无奈,只有当此新item被某些用户喜欢过(或打过分),它才可能被推荐给其他用户。所以,如果一个纯CF的推荐系统,新加进来的item就永远不会被推荐:( 。

CB的缺点

1. item的特征抽取一般很难(Limited Content Analysis):如果系统中的item是文档(如个性化阅读中),那么我们现在可以比较容易地使用信息检索里的方法来“比较精确地”抽取出item的特征。但很多情况下我们很难从item中抽取出准确刻画item的特征,比如电影推荐中item是电影,社会化网络推荐中item是人,这些item属性都不好抽。其实,几乎在所有实际情况中我们抽取的item特征都仅能代表item的一些方面,不可能代表item的所有方面。这样带来的一个问题就是可能从两个item抽取出来的特征完全相同,这种情况下CB就完全无法区分这两个item了。比如如果只能从电影里抽取出演员、导演,那么两部有相同演员和导演的电影对于CB来说就完全不可区分了。

2. 无法挖掘出用户的潜在兴趣(Over-specialization):既然CB的推荐只依赖于用户过去对某些item的喜好,它产生的推荐也都会和用户过去喜欢的item相似。如果一个人以前只看与推荐有关的文章,那CB只会给他推荐更多与推荐相关的文章,它不会知道用户可能还喜欢数码。

3. 无法为新用户产生推荐(New User Problem):新用户没有喜好历史,自然无法获得他的profile,所以也就无法为他产生推荐了。当然,这个问题CF也有。

       CB应该算是第一代的个性化应用中最流行的推荐算法了。但由于它本身具有某些很难解决的缺点(如上面介绍的第1点),再加上在大多数情况下其精度都不是最好的,目前大部分的推荐系统都是以其他算法为主(如CF),而辅以CB以解决主算法在某些情况下的不精确性(如解决新item问题)。但CB的作用是不可否认的,只要具体应用中有可用的属性,那么基本都能在系统里看到CB的影子。组合CB和其他推荐算法的方法很多(我很久以后会写一篇博文详细介绍之),最常用的可能是用CB来过滤其他算法的候选集,把一些不太合适的候选(比如不要给小孩推荐偏成人的书籍)去掉。



留言

登录 请先登陆, 再留言!