代码方面,主要实现了4.3和4.2.2的一个验证统计,4.4的代码本来准备写一下的,后来因为杂碎的统计工作太多就放弃了。代码和笔记的word版放在https://github.com/littlelittlefei/recommendsystem

推荐的另一种重要方式是通过一些特征联系用户和物品,给用户推荐那些具有用户喜欢的特征的物品。这里的特征有不同的表现方式,比如可以表现为物品的属性集合(比如对于图书,属性集合包括作者、出版社、主题和关键词等),也可以表现为隐语义向量(latent factor vector),这可以通过前面提出的隐语义模型习得到。本章将讨论一种重要的特征表现方式——标签。

这里主要讨论UGC的标签应用,研究用户给物品打标签的行为,探讨如何通过分析这种行为给用户进行个性化推荐。

UGC标签的代表性应用

Delicous可算是标签系统里的开山鼻祖,它允许用户给互联网上的每个网页打标签,从而通过标签重新组织整个互联网。

CiteULike是一个著名的论文书签网站,它允许研究人员提交或者收藏自己感兴趣的论文并且给论文打标签,从而帮助用户更好地发现和自己研究领域相关的优秀论文。

Last.fm是一家著名的音乐网站,它让用户用标签标记音乐和歌手。通过分析用户的听歌行为预测用户对音乐的兴趣,从而给用户推荐个性化的音乐。

豆瓣是中国著名的评论和社交网站之一。它允许用户对图书和电影打标签,借此获得图书和电影的内容信息和语义,并用这种信息改善推荐效果。

标签系统的最大优势在于可以发挥群体的智能,获得对物品内容信息比较准确的关键词描述。

标签系统中的推荐问题

用户为什么要打标签?

社交需要/功能要求

用户怎么打标签?

统计结果表明,标签的分布也遵循幂律分布。

能看出来线性很强,还是比较符合幂律分布的。

用户打什么样的标签?

由于标签是人写的,就不可避免地会出现各种各样的不确定因素。可能出现的标签会有不同的种类和含义,需要具体问题具体分析,给标签赋予恰当的含义。

基于标签的推荐系统

以delicious数据集为例,通过学习训练集中的用户标签数据预测测试集上用户会给什么物品打标签。

评价指标:准确率,召回率,覆盖率和新颖度

第一个推荐算法

在最简单的情况下,推荐算法可以是这样的:

 统计每个用户最常用的标签。

 对于每个标签,统计被打过这个标签次数最多的物品。

 对于一个用户,首先找到他常用的标签,然后找到具有这些标签的最热门物品推荐给这

个用户。

这时,用户u对物品i的兴趣可以被写为:

这里, n_u,b是用户u打过标签b的次数,n_b,i是物品i被打过标签b的次数。这里实际上就是计算了通过每一个标签b,可以从用户u“通往”标签i的路径权重之和。

可能的几种改进方向:

惩罚热门物品:TF-IDF算法

克服数据的稀疏性:增加相似标签

标签清理:去除无意义或负面意义的标签,提高标签的质量

基于图的推荐算法

这是一个用户-物品-标签图的例子,每条三折线表示一条记录,比如A-b-3就表示用户A对于物品b打了标签3。

回顾之前的算法。在简单算法中,我们把用户和物品之间的连接看成是由标签相连的“路径”。那么,既然我们使用了基于图的推荐算法,就可以尝试把它画成有向图的形式,具象地表达出路径的概念。

基于标签的推荐解释

基于标签的推荐其最大好处是可以利用标签做推荐解释。比方说我们使用用户相似度做协同过滤,那么解释就是“与你相似的用户也喜欢blablabla”,但是如果我们用标签推荐,就可以解释为“猜你喜欢悬疑/科幻/数据挖掘”等等,比如豆瓣的推荐界面。

同时,用户还可以自主选择标签,增加了推荐的实用程度。

关于这种方式的推荐,在推荐列表中,如何选择推荐物品的排序、如何向用户解释这些推荐结果,GroupLens的研究人员Jesse Vig有一些实验结果。

q 用户对标签的兴趣对帮助用户理解为什么给他推荐某个物品更有帮助;

q 用户对标签的兴趣和物品标签相关度对于帮助用户判定自己是否喜欢被推荐物品具有同

样的作用;

q 物品标签相关度对于帮助用户判定被推荐物品是否符合他当前的兴趣更有帮助;

q 客观事实类标签相比主观感受类标签对用户更有作用。

确实跟绕口令一样……

给用户推荐标签

正如上面所说过的一样,用户自由发挥的时候,谁也不知道这个标签是个什么意思,这显然并不是我们想看到的。

那怎么办呢?我们可以在用户生成标签的时候,就给他推荐一些候选答案,限制他的思维,让标签变得高质量。

为什么要给用户推荐标签?

方便用户输入标签/提高标签质量

如何给用户推荐标签?

我们有几种思路可以参考:

(0)推荐整个系统里最热门的标签【PopularTags算法】

(1)推荐这个物品最热门的标签【ItemPopularTags算法】

(2)推荐这个用户最常用的标签【UserPopularTags算法】

(3)将(1)(2)的结果加权

注意这一节和上一节的区别,这一节是预测“用户要打什么标签”,标签是预测目标。上一节是预测“用户要对什么物品打标签”,标签是预测路径。

根据书里给出的实验结果,第三种算法是最好的。这符合我们的直觉。不过,即使是最好的这种算法,依然存在着冷启动的问题。

解决这一问题有两个思路。

第一个思路是从物品的内容数据中抽取关键词作为标签。这方面的研究很多,特别是在上下文广告领域。

第二个思路是针对有结果,但结果不太多的情况。比如《MongoDB权威指南》一书只有一个用户曾经给它打过一个标签nosql,这个时刻可以做一些关键词扩展,加入一些和nosql相关的标签,比如数据库、编程等。

【读书笔记】推荐系统实践·第四章·利用用户标签数据相关推荐

  1. 《推荐系统实践》 第四章 利用用户标签数据 读书笔记

    推荐系统的目的是联系用户的兴趣和物品,这种联系需要依赖不同的媒介.GroupLens在一篇文章(文章名是"Tagsplanations : Explaining Recommendation ...

  2. 《推荐系统实践》第二章 利用用户行为数据

    2.1 用户行为数据简介 在电子商务网站中行为主要包括网页浏览.购买.点击.评分和评论等. 用户行为在个性化推荐系统中一般分两种--显性反馈行为(explicit feedback)和隐性反馈行为(i ...

  3. 推荐系统实践读书笔记-04利用用户标签数据

    推荐系统实践读书笔记-04利用用户标签数据 推荐系统的目的是联系用户的兴趣和物品,这种联系需要依赖不同的媒介.GroupLens在一篇文章中表示目前流行的推荐系统基本上通过3种方式联系用户兴趣和物品. ...

  4. 《推荐系统实践》样章:如何利用用户标签数据

    <推荐系统实践>样章:如何利用用户标签数据 推荐系统的目的是联系用户的兴趣和物品,这种联系需要依赖于不同的媒介.GroupLens在文章1中认为目前流行的推荐系统基本上通过三种方式来联系用 ...

  5. 读书笔记--推荐系统实践(2)

    第二章 利用用户行为数据 用户行为数据简介 最简单的存在形式是:日志 行为数据的反馈形式以及对比: 用户行为分析 设计算法之前的分析,更有针对性的进行算法设计. 用户活跃度和物品流行度的分布:满足Po ...

  6. 机器学习-推荐系统-利用用户标签数据

    在之前的博文中介绍了三种方法给用户推荐物品. 1)UserCF:给用户推荐和他们兴趣爱好相似的其他用户喜欢的物品. 2) ItemCF:给用户推荐与他喜欢过的物品相似的物品. 3) LFM:通过一些特 ...

  7. 推荐算法(3):利用用户标签数据

    推荐算法(1):协同过滤总结 推荐算法(2):基于内容的推荐 推荐算法(3):利用用户标签数据 推荐算法(4)利用上下文信息 推荐算法(5)利用社交网络数据 推荐算法(6) 实例 推荐算法(7)缺失的 ...

  8. 推荐系统实践-利用用户标签数据(4)

    4.1 UGC标签系统的代表应用 标签应用一般分为两种,一种是作者或者专家来给物品打标签,另外一种是让普通用户打标签即UGC(User Generated Content),当用户给物品打标签时,一方 ...

  9. 读书笔记--推荐系统实践 第一章

    推荐系统实践 编著 项亮 参与创建Resys China推荐系统社区 第一章 好的推荐系统 什么是好的推荐系统?什么样的特征?有哪些评价指标? 1.1 好的推荐系统 信息过载 (Information ...

最新文章

  1. cocos2dx多线程以及线程同步 与 cocos2dx内存管理与多线程问题
  2. 客户合作伙伴关系研究
  3. 100流明相当于多少w_1990年的100元,相当于2020年的多少钱?
  4. android 异步回调中操作UI线程,UI同步、卡死阻塞等性能问题
  5. *PAT_B_1052_C++(20分)
  6. 浏览器中的JavaFX
  7. C#调用Python模块
  8. linux ls 参数列表过长,ls提示参数列表过长解决办法
  9. 11、旋转数组的最小数字
  10. 泪目!java项目源码免费下载
  11. word删除括号里内容
  12. 全球及中国体育用品商店行业商业模式分析及投资风险预测2022年版
  13. python统计词频瓦尔登湖_点评《瓦尔登湖》
  14. 仿朋友圈页面(超小白)
  15. 使用XUL开发跨平台桌面应用
  16. 1148: 组合三位数之一 C语言
  17. 一次性刻录光盘内容(刻录完成后不能再编辑光盘中内容)
  18. Monkey King - 左偏树
  19. 树莓派串口通信编码_树莓派3B 串口通信超详细
  20. 微信公众 mysql回复图片_微信公众号开发之微信公共平台消息回复类实例

热门文章

  1. 出版java类的书籍需要多少钱,出版一本书需要花费多少资金?
  2. 简单易懂的CRC校验原理阐述
  3. 解决$ is not defined 的几种方法
  4. 苹果计算机 win10,苹果怎么装win10苹果装win10详细教程【图文】
  5. ”微信小程序“一场风暴还是过江之鲫
  6. 刷入magisk无限重启_手机刷成砖了?别慌,这些方法可以救回来
  7. 关于sdcard读写速率慢的问题排查
  8. linux中命令tat,10个炫酷的Linux终端命令大全
  9. 外呼防封系统源码提供
  10. 马尔克斯写给读者的告别信