月中在香港参加recsys2013会议,文章不少,对我有价值的并不算多,再跟目前工作相关的就更少了。这里过滤了几篇我觉得比较有意思的文章,加上了自己的理解,作为导读。
A Fast Parallel SGD for Matrix Factorization in Shared Memory Systems (best paper,p249.pdf)
这篇来自台湾国立大学libsvm团队的文章获得了本次大会的best paper。无论文章还是ppt,思路表达得非常清晰饱满。这是一篇偏工程实现的文章,比较适合搭平台的,未必对纯粹做model的算法人员有帮助,但仅仅为了开拓一下视野也值得一看。
基于SGD的矩阵分解的并行化计算有过很多的实践,因为无重叠的(p_u,q_v) pair的更新可以独立进行,所以利用这个特性可以进行并行化。这篇文章针对并行化矩阵分解中存在的locking problem和memory discontinuity问题,提出了一种矩阵分解的高效算法,主要的思路是把评分矩阵分成至少n+1*n+1个block(n是计算节点个数),随机为计算节点分配一个合适的block(解决第一个问题),每个节点内则按user序或item序进行更新(解决第二个问题)。过程比较简单,看文章里地算法流程应该就很明了。最后,秉承这个实验室的一贯作风,他们把自己的方法实现并开源(libMF)。
题外话:这届会议上仍然有很多矩阵分解相关的文章,这些理论性的工作是学术界比较喜欢做的事情,而且也是自netflix prize以来形成的比较有“推荐领域”特色的技术。但个人认为它对数据类型和稠密程度有一定的要求(netflix prize提供的数据稠密度在1%左右,算很稠密了,并且是1-5分的分值预测问题,所以SVD会比较容易得到好的效果),且容易碰到cold-start问题,使用过程中需要相当谨慎。但一直以来(包括这次会议)也有不少把这项技术用于0-1无负面反馈的数据(实际中更多碰到的就是这种0-1的top-k推荐问题),可以仔细实践一下,再下定论。
Efficient Top-N Recommendation for Very Large Scale Binary Rated Datasets (p273.pdf)
作者是MSD音乐推荐竞赛的优胜者,这篇文章是他的优胜文章的扩展版。因为MSD数据的特点,作者的思路主要聚焦于0-1且主要是正向反馈的数据集(这种数据集跟我们日常面对的数据集是类似的)。做推荐的思路也比较接近传统的推荐方法——基于CF的各种优化。这里他主要通过对相似性计算的形式化抽象,提出了一种非对称的相似性矩阵的思路。非对称相似性有时会收到奇效,我们以前就用过一些这样的技巧。文中提到的一些参数化的思想是有价值的,非对称的相似性是通过参数化解决的,推荐时的k近邻问题也是通过参数化的方式解决的(这种参数化的思维方式对于培养实际问题解决时的形式化思维很有帮助)。据称,这样的方式计算效率也很不错。
Learning to Rank Recommendations with the k-Order Statistic Loss (p245.pdf)
这是一篇来自google的文章,非常贴近工程应用,据称文中的算法应用在youtube的推荐上,比原来的要好。文章讨论的主题也是大家最近比较关注的learning to rank,这项技术在解决top-k推荐问题上很受追捧。文中使用的还是基于矩阵分解思想的factor学习,主要创新点在于提出了几个损失函数,既能使用SGD比较快速地训练模型,又同时强调了top-k推荐列表里k个元素的重要性。另外一个比较有意思的就是提出了一个mean maximum rank的评价指标。
To Personalize or Not: A Risk Management Perspective (p229.pdf)
看起来是一篇给推荐唱反调的文章,其实是一个很不错的思考,我之前在考虑推荐的多源融合时也考虑到这个问题——什么时候才应该采用个性化推荐。作者把风险管理的概念引入到推荐领域,对每个推荐结果进行风险分析,并提出了一个切换的策略——什么时候使用个性化的推荐,什么时候使用热门推荐(实际中,也有可能让位给其它类型的业务需求)。其实冷启动问题也是这种思路的一个应用场景。
Rating Support Interfaces to Improve User Experience and Recommender Accuracy (p149.pdf)
来自GroupLens团队的文章,是之前Tag系列工作的延续。其实这是一篇做交互设计的同学更要关注的文章,解决的问题是使得用户的评分数据一致性更好,数据质量更高,这样推荐的质量才会好。提出的解决方案是:1、给item展示合理的Tag信息,2、把该用户历史相关的item评分和item信息提示给用户。并做了一个评分交互系统,大家可以看看文章里的网站页面截图,基本就明白这篇文章在讲什么。将来跟PD和UED合作时也可以对外输出价值观了。
Recommending Branded Products from Social Media (p77.pdf)
来自ebay的这篇文章跟我目前的工作关联度很高,social media website + e-commerce,社交网络的数据可以为电商网站做些什么,这里举的案例是facebook+ebay,你会不会想到来往/微博+淘宝?文章指出,纯粹使用facebook的社交数据,就可以对ebay的品牌推荐做出预测,证明了社交数据与电商数据的相关性。
Nonlinear Latent Factorization by Embedding Multiple User Interests (p65.pdf)
这是来自google的另一篇短文,连作者都是一样的。文章研究的还是基于矩阵分解的模型,要点是:user factor应该比item factor更多样,所以表达上需要更为丰富,而不是像item用同样的k维factor来表达。所以作者提出为user训练多个factor向量,推荐时取factor列表里与item-factor相似度最高的作为user-item相似度。这个假设直观上来说是对的,如果某首歌曲可以用一个factor空间来加以描述其风格等潜在特点,而用户对歌曲的偏好是多风格的,那么是否应该用多个factor空间来描述?其实是一种增加参数来换表达能力的做法,难免不会出现过拟合的情况。
Query-Driven Context Aware Recommendation (p9.pdf)
会议上关于context aware的推荐也不少,关注历史偏好和短时兴趣的融合,类似于会上经常被人提及的介乎与online和offline之间的nearline。文章里介绍的领域比较接近文本和搜索,用LDA来描述用户的偏好,提出了一个融合user, item, context的推荐框架,p(i|p,q)。想对nearline、场景推荐有一些感性认识的同学不妨一看。
这些paper我目前读得还比较粗略,远未到实用的层面。即便只是浅读,也是有好处的,作为工业界的算法工程师,paper要看,但不可多看。看paper可以了解学术界和工业界在做什么,怎么思考这个领域的问题,开拓自己的思路,甚至启发自己走出原来已经禁锢的圈子。但多看则容易陷入做学术的套路,paper是永远看不完的,作为工业界做应用的,谨记熟读百篇不如实现一篇。