月中在香港参加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是永远看不完的,作为工业界做应用的,谨记熟读百篇不如实现一篇。

转:Recsys2013论文导读的更多相关文章

  1. AeroSpike踩坑手记1:Architecture of a Real Time Operational DBMS论文导读

    又开了一个新的坑,笔者工作之后维护着一个 NoSQL 数据库.而笔者维护的数据库正是基于社区版本的 Aerospike打造而来.所以这个踩坑系列的文章属于工作总结型的内容,会将使用开发 Aerospi ...

  2. FPGA 17最佳论文导读 ESE: Efficient Speech Recognition Engine with Compressed LSTM on FPGA

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.机器学习技术感兴趣的同学加入. 后面陆续写一些关于神经网络加 ...

  3. ASPLOS'17论文导读——SC-DCNN: Highly-Scalable Deep Convolutional Neural Network using Stochastic Computing

    今年去参加了ASPLOS 2017大会,这个会议总体来说我感觉偏系统和偏软一点,涉及硬件的相对少一些,对我这个喜欢算法以及硬件架构的菜鸟来说并不算非常契合.中间记录了几篇相对比较有趣的paper,今天 ...

  4. ISSCC 2017论文导读 Session 14:A 288μW Programmable Deep-Learning Processor with 270KB On-Chip Weight

    A 288μW Programmable Deep-Learning Processor with 270KB On-Chip Weight Storage Using Non-Uniform Mem ...

  5. ISSCC 2017论文导读 Session 14 Deep Learning Processors,DNPU: An 8.1TOPS/W Reconfigurable CNN-RNN

    转载请注明,本文出自Bin的专栏http://blog.csdn.net/xbinworld,谢谢! DNPU: An 8.1TOPS/W Reconfigurable CNN-RNN Process ...

  6. ISSCC 2017论文导读 Session 14 Deep Learning Processors,A 2.9TOPS/W Deep Convolutional Neural Network

    最近ISSCC2017大会刚刚举行,看了关于Deep Learning处理器的Session 14,有一些不错的东西,在这里记录一下. A 2.9TOPS/W Deep Convolutional N ...

  7. ISSCC 2017论文导读 Session 14 Deep Learning Processors,A 2.9TOPS/W Deep Convolutional Neural Network SOC

    最近ISSCC2017大会刚刚举行,看了关于Deep Learning处理器的Session 14,有一些不错的东西,在这里记录一下. A 2.9TOPS/W Deep Convolutional N ...

  8. 【超分辨率】- CVPR2019中SR论文导读与剖析

    CVPR2019超分领域出现多篇更接近于真实世界原理的低分辨率和高分辨率图像对应的新思路.具体来说,以前论文训练数据主要使用的是人为的bicubic下采样得到的,网络倾向于学习bicubic下采样的逆 ...

  9. Acceleration for ML 论文导读

    Energy efficient parallel neuromorphic architectures with approximate arithmetic on FPGA Motivation ...

随机推荐

  1. C#中加粗label的字体

    1. 在C#的代码中想直接加粗label控件的字体, label1.Font.Bold = true;//发现系统会提示Font.Bold是只读属性 如果必须要加粗字体呢,方法如下: 2. 使用Fon ...

  2. 本地IDC机房数据库容灾解决方案

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯云数据库 TencentDB 发表于云+社区专栏 作者介绍:李明,腾讯云数据库架构师华南区负责人,曾在某专业数据库服务商.51jo ...

  3. <数据挖掘导论>读书笔记2

    1.频率和众数 frequency(vi)=具有属性值vi的对象数/m 分类属性的众数mode是具有最高频率的值. 2.百分位数 3.位置度量:均值和中位数 4.散布度量:极差和方差 绝对平均偏差 A ...

  4. vue基础知识之vue-resource/axios

    Vue基础知识之vue-resource和axios(三)   vue-resource Vue.js是数据驱动的,这使得我们并不需要直接操作DOM,如果我们不需要使用jQuery的DOM选择器,就没 ...

  5. Chrome Command API

    Chrome Command API 参考 Chrome开发工具已经强大得令人发指了,除了可通过UI操作的各种功能外,还提供了基于控制台的命令行方法,极大地方便了开发调试.现在就来领略下Chrome ...

  6. 判断img图片是否加载成功

    上班之余,记录一下工作中遇到的有趣问题... 事情是这样的...在做一个内嵌H5的app时,有一个“个人名片”页面...要求:如果后台接口有给头像的图片链接就用他们给的,如果没给,前端给个默认头像.. ...

  7. Messenger和MVVM中的View Services

    在前面的文章IoC容器和MVVM中, 介绍了IoC容器如何在大量用户类中帮助创建和分配用户类的实例.本文将介绍IoC容器如何帮助应用程序解耦,比如那些根据MVVM模式开发的应用.此模 式广泛应用在基于 ...

  8. 007.ASP.NET MVC控制器依赖注入

    原文链接:http://www.codeproject.com/Articles/560798/ASP-NET-MVC-Controller-Dependency-Injection-for-Be 前 ...

  9. gradle 构建的 Spring Boot 使用 logback

           文章讲的是配置和使用,入门请看文档先. what 目的: 可以实现log不同级别的日志记录,例如info 在一个文件夹内,另一个级别的在另一个文件夹内. how 配置依赖项 //log ...

  10. Gradle 学习(一)

    引入插件 apply plugin: 'java' apply plugin: 'war' apply plugin: 'jetty' 如果希望使用jar来启动项目, 可以这样修改项目和插件属性. a ...