前段时间对推荐系统很感兴趣,所以拿到了这本书,几乎都是用碎片时间阅读的,所以大概看了两个多月。

因为没有看过推荐系统其他的书,所以无法横向评价,但对于一个认知为零的人,从该书中受益还是很大的。

这本书讲的东西比较全,也很贴切实际。整本书篇幅不多,200页出头,很适合我这样的初学者,作为知识了解阶段的读物。

开篇就是介绍推荐系统的概念和应用范围。

第二章 利用用户行为数据。

介绍,如何利用用户的行为进行推荐,设计实验时要分为训练集和测试集,要多次划分,多次测试,求平均值。评测指标包括准确度、覆盖度、新颖度、流行度。例如用户活跃度和物品活跃度。介绍了基于用户的协同过滤算法,和基于物品的协同过滤算法。隐语义模型:用于根据行为自动分类事物。这里面也包括了如何找到负样本。基于图的模型:该模型先画出人物和物品的连接图,再使用随机游走算法PersonalRank,根据节点被访问的概率,来进行预测打分。

第三章 推荐系统的冷启动问题

这章介绍了如何在缺少历史数据的情况下,尽量保证推荐效果,这里面讲的也就是利用静态信息,例如注册信息,物品信息,现有的专家信息,以及在用户使用中,引导用户产生行为。

第四章 利用用户标签数据

事物的标签来自于自身或外界,用于描述一个事物的一个特征。很多推荐网站都会利用用户的标签信息进行推荐。所以要引导用户对于事物进行标签标注,也要提供标签推荐功能,方便用户,降低特征维度。基于标签的推荐也可以使用基于图的推荐算法。

第五章 利用上下文信息

这章简述了时间效应对于推荐系统的影响。对于不同的内容,时间对于兴趣的影响是不一样的,例如新闻类信息,对于时间效应十分敏感,对于百科类信息,就没有那么敏感,所以,如果时间能影响用户的兴趣行为,就要加入时间因素。本章也介绍了如何计算流行度。对于推荐结果,要保持实时性,也要考虑时间多样性。实时性就是用户有操作,就能根据用户操作修改推荐结果。时间多样性就是如果所有条件都不改变,也尽可能的改变推荐结果,不要每天都一样。如果推荐系统带有地点性质,也要考虑地点上下文。时间地点信息可以通过图模型进行推荐。

第六章 利用社交网络数据

这章描述了社交信息对于推荐系统的影响。因为人们本能的会相信熟悉的人的选择,并且社交信息对于推荐也有很好的解释性,所以这方面的信息,能很好的提高推荐的准确性。或者说是,提高了用户的兴趣。插一句题外话,前几天听张俊林博士讲,在微博中,很多方法都没有社交信息对于推荐准确性的帮助更大。获得社交网络数据的途径包括了电子邮件,用户注册信息,用户的位置信息,相关的兴趣组,社交网站,即时聊天工具等。这些信息中,都隐含了用户之间的关系可能性。例如邮件列表,位置相邻,好友列表等等。基于社交的推荐包括了基于邻域的社会化推荐算法,例如和用户关系最好的一些人的选择,和用户兴趣最相近的一些人的选择。还有基于图的社会化推荐算法,在建立用户和物品,用户和用户,用户和社群的联系,再通过随机游走的算法,进行推荐。在这类推荐中,还有好友推荐,例如通过共同的属性,共同的兴趣,共同的朋友圈等方式。

第七章 推荐系统实例

这章讲述了推荐系统的模块分布。大的划分就是用户行为收集系统、推荐系统、展示系统。其中推荐系统包括了数据的收集和存储、N个推荐引擎(通过不同的算法或维度进行推荐)、初始推荐、推荐结果处理系统(过滤、排名、推荐解释)。推荐引擎包括了行为提取,行为特征转化,特征向量,特征-物品相关推荐,候选物品集合。用户的特征向量包括了用户的行为,用户行为的时间,次数,物品的热门程度(物品越热,用户行为的特异性越小)。得到用户特征后,可以根据离线的相关表得到初始的物品推荐列表。过滤模块主要是为了过滤已经产生行为的物品,候选物品以外的物品,质量很差的物品。

第八章 评分预测问题

推荐系统都是一个TopN的问题,用于排序的依据就是用户的评分预测问题。评分预测算法包括了平均值、基于邻域的方法、隐语义模型和矩阵分解模型。这里面对于Funk-SVD分解算法(LFM)作了介绍。因为SVD分解算法计算量过大,所以需要将评分矩阵R分解为两个低维矩阵相乘。如果能找到合适的p\q来最小化训练集的预测误差,那么应该也能最小化测试集的预测误差。learningLFM主要包括两步,首先,需要对P,Q矩阵进行初始化,然后需要通过随机梯度下降法的迭代得到最终的P、Q矩阵。为了提升效果,一般还要加入偏置项。偏置项包括全局平均数,用户偏置项,物品偏置项。考虑到用户的历史评分的物品,Koren提出了SVD++模型。对预测加入时间信息,进行基于邻域的模型融合时间信息(TItemCF),降低用户久远行为对当前的影响。Netflix Prize的最终获胜队伍通过融合上百个模型的结果才取得了最终的成功。由此可见模型融合对提高评分预测的精度至关重要。模型融合通常有模型级联融合(在当前预测器的基础上设计下一个预测器),模型加权融合(线性融合,人工神经网络融合)。

后记

推荐系统是一个大的方向,里面的好多思想都和搜索相关。都是尽量找到用户的需求,给出用户的需要的结果。可以想象,以后人们获取信息所需要主动给出的显性查询信息越来越少,得到的结果可能越来越精准。现在之所以这种数据提供方式叫做推荐,恰恰是因为推荐系统的不精准性造成的,只能用于辅助,解决不了人最迫切的需求。希望尽快能看到类似首脑的中央电脑,了解人们所有的需求,存储所有所需的数据。在预测到用户需要信息的时候,已经早已主动把信息准备好了。随着大数据这个理念的提出,当对一个人的信息收集的足够丰富,对大规模人的行为进行统计,那么预测个人的所需,绝对不是一个梦。

读 项亮《推荐系统实践》相关推荐

  1. 项亮 陈义 王益《推荐系统实践》

    最近很多读者关注<推荐系统实践>一书,询问本书目前的写作进展和出版时间.自今日起,本书正式进入开放出版流程,作者会全程在本社区中互动,与大家分享写做过程中的点滴. 技术背景 推荐系统从19 ...

  2. 《推荐系统实践》试读:第一章:好的推荐系统

    如果想阅读word版本的试读,下载链接为:<推荐系统实践>试读:第一章:好的推荐系统 推荐系统实践 在研究如何设计推荐系统前,了解什么是好的推荐系统至关重要.只有了解了优秀推荐系统的特征, ...

  3. 【阅读笔记】项亮前辈的《推荐系统实战》

    推荐系统是个有意思的方向.项亮前辈的<推荐系统实战>来当作入门的第一本书还是很合适的,这段时间在断断续续的抽空阅读了一遍.本书写的浅显易懂,很好的勾勒出了推荐引擎十年前的主流算法,以及工业 ...

  4. 推荐系统实践整体化总结

    这一阵子在找实习,总的情况来看,一点都不理想,做了总结,主要是由于我的理论不够扎实,实践又不多导致的,其实这两者是有一定的联系的,因为实践的不多,所以理论上的提升就非常的有限.最近比较喜欢推荐系统相关 ...

  5. 《推荐系统实践》序言、样章欢迎阅读!

    <推荐系统实践>这本书上市很短,但是反响很大,图书销量也非常好,如果你对推荐系统感兴趣,不防看看哦!一定会有很大的收获的!祝阅读愉快! -------------------------- ...

  6. 字节跳动推荐平台技术公开,项亮:底层架构有时比上层算法更重要

    允中 发自 凹非寺 量子位 报道 | 公众号 QbitAI 字节跳动已正式吹响进军云计算市场号角. 12月2日,火山引擎全系列云产品亮相,共推出了78项云产品服务,涵盖云基础.视频及内容分发.数据中台 ...

  7. 《推荐系统实践》笔记(转)

    本文来源:http://www.yeolar.com/note/2013/10/03/recommend-system/ 放假在家看项亮的<推荐系统实践>,觉得写得不错.因为我接触推荐系统 ...

  8. 推荐系统实践——什么是推荐系统

    什么是推荐系统 学完了机器学习,将自己的研究方向定为推荐系统,然后现在看起了项亮的<推荐系统实践>,决定看完一段就来这里总结记录一下,方便之后复习.第一章主要是对推荐系统进行简介,主要分为 ...

  9. 推荐系统实践读书笔记-02利用用户行为数据

    推荐系统实践读书笔记-02利用用户行为数据 为了让推荐结果符合用户口味,我们需要深入了解用户.如何才能了解一个人呢?<论语·公冶长>中说"听其言,观其行",也就是说可以 ...

  10. 推荐系统实践读书笔记-05利用上下文信息

    推荐系统实践读书笔记-05利用上下文信息 本章之前提到的推荐系统算法主要集中研究了如何联系用户兴趣和物品,将最符合用户兴趣的物品推荐给用户,但这些算法都忽略了一点,就是用户所处的上下文(context ...

最新文章

  1. VirtualBox下安装MacOS11
  2. [PyTorch] jit.script 与 jit.trace
  3. 在线SQL(Insert/Update)语句转JSON工具
  4. 24分钟让AI跑起飞车类游戏
  5. 卡巴斯基安全浏览器_知名安全软件耍流氓!擅自监控用户,双十一绝不应该成为流氓软件的狂欢!...
  6. JS中的迭代器和生成器
  7. Vuforia入门之简单图片识别案例(一)
  8. 阿里淘宝Nginx升级版Tengine
  9. java 获取field类型_获取Java类中所有Field
  10. 跳槽遇到背景调查,你可以这样做!
  11. 怎么设置微信公众号自动回复蓝色字体小程序链接
  12. led灯光衰怎么解决_解决LED灯具光衰办法大全
  13. 输入英文句子,导出英语单词个数和英文字母个数 Python
  14. ULC2平台CTA音频调试记
  15. CAN总线协议报文浅析
  16. 浅显理解Java泛型的super和extends
  17. STM32F767 资料汇总
  18. Spring的那些事情(二)
  19. 强化学习大厂面经【看到你就赚了,满满】
  20. c语言程序设计主编陆蓓,C语言程序设计--详细介绍

热门文章

  1. 前端js导出excel代码及出现的中文乱码和数字过长等问题的解决办法
  2. 查看Sql Server2016是否激活
  3. unity visual effect Graph 1
  4. 免费网络管理软件大全
  5. UNIX环境高级编程习题——第七章
  6. Android手机健康类APP市场分析
  7. 如何写一个播放器-解析MNVideoPlayer(一)
  8. JDK11无法启动VisualVM
  9. 高质量编程之编译警告级别
  10. win10安装visio2010出错_win7安装Office Visio 2010时出现错误怎么办