13-基于标签的的推荐算法
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
物品表示:为每个物品抽取出一些特征(也就是物品的content了)来表示此物品; 特征学习:利用一个用户过去喜欢(及不喜欢)的物品的特征数据,来学习出此用户的喜
好特征; 生成推荐列表:通过比较上一步得到的用户喜好与候选物品的特征,为此用户推荐一组相
关性最大的物品。
4
基于内容的推荐方法
基于内容的推荐的过程
根据给物品打标签的人的不同,标签应用一般分为两种:一种是让作者或者专家给物品打标签;另 一种是让普通用户给物品打标签,也就是UGC的标签应用。
UGC的标签系统是一种表示用户兴趣和物品语义的重要方式。当一个用户对一个物品打上一个 标签,这个标签一方面描述了用户的兴趣,另一方面则表示了物品的语义,从而将用户和物品联系 了起来。
addValueToMat(user_items, user, item, 1)
24
基于标签的推荐系统
SimpleTagBasedCB
#对用户进行个性化推荐
def Recommend(user): recommend_items = dict() tagged_items = user_items[user] for tag, wut in user_tags[user].items(): for item, wti in tag_items[tag].items():
豆瓣允许用户对图书和电影打标签,借此获得图书和 电影的内容信息和语义,并用这种信息改善推荐效果
Last.fm分析用户的听歌行为预测用户对音乐的兴趣, 从而给用户推荐个性化的音乐。
12
标签系统中的推荐问题
标签的作用
表达标签系统帮助我表达对物品的看法。(30%的用户同意) 组织打标签帮助我组织我喜欢的电影。(23%的用户同意) 学习打标签帮助我增加对电影的了解。(27%的用户同意) 发现标签系统使我更容易发现喜欢的电影。(19%的用户同意) 决策标签系统帮助我判定是否看某一部电影。(14%的用户同意)
到的基于用户的算法。 第三种要的方式是通过一些特征联系用户和物品,给用户推荐那些具有用户喜欢的特征的品。这里的特
征有不同的表现方式,比如可以表现为物品的属性集合(比如对于图书,属性集包括作者、出版社、主题 和关键词等)
3
基于内容的推荐方法
基于内容的推荐的概念
基于内容的推荐
基于内容的推荐的过程一般包括以下三步
22
基于标签的推荐系统
最简单的推荐算法
定义一个三元组(u,i,b)表示用户u给物品i打了标签b,如何推荐?
最简单的算法
1、统计每个用户最常用的标签 2、对于每个标签,统计被打过这个标签次数最多的物品 3、对于一个用户,找到他常用的标签,找到具有这些标签的最热门的物品推荐给这个用户
用户u对物品i的兴趣 P(u, i)= nu,bnb,i
#if items have been tagged, do not recommend them
if item in tagged_items: continue
if item not in recommend_items: recommend_items[item] = wut * wti
好的可解释性
如果需要向用户解释为什么推荐了这些产品给他,你只要告诉他这些产品有某某属性,这 些属性跟你的品味很匹配等等。
新的物品可以立刻得到推荐
只要一个新物品加进物品库,它就马上可以被推荐,被推荐的机会和老的物品是一致的。
8
基于内容的推荐方法
基于内容推荐的缺点
物品的特征抽取一般很难
讨论UGC的标签应用,研究用户给物品打标签的行为,探讨如何通过分析这种行为给用户进行个 性化推荐。
11
标签系统中的推荐问题
基于标签推荐的应用系统
Delicious允许用户给互联网的每个网页打标签,从而 通过标签重新组织整个互联网。
CiteULike是一个著名的论文书签网站,允许研究人员 提交或者收藏自己感兴趣并且给论文打标签,帮助用 户更好的发现与自己领域相关的优秀论文。
6
基于内容的推荐方法
基于内容的推荐的过程
生成推荐列表(Filtering Component)
通过比较上一步得到的用户喜好与候选 物品的特征,为此用户推荐一组相关性 最大的物品
用户反馈 改进用户画像
7
基于内容的推荐方法
基于内容推荐的优点
用户之间的独立性
既然每个用户的profile都是依据他本身对物品的喜好获得的,自然就与他人的行为无关。 而CF刚好相反,CF需要利用很多其他人的数据。CB的这种用户独立性带来的一个显著好处 是别人不管对物品如何作弊都不会影响到自己。
else: tagfreq[tag] +=1
return tagfreq
标签流行度的长尾分布
16
标签系统中的推荐问题
用户打什么样的标签
标签的规范
在用户看到一个物品时,我们希望他打的标签是能够准确的描述物品内容属性的关键词, 但用户往往不是按照我们的想法操作,而是可能给物品打上各种各样奇奇怪怪的标签
很多情况下我们很难从物品中抽取出准确刻画物品的特征,比如电影推荐中物品是电影,社会化网络 推荐中物品是人,这些物品属性都不好抽。其实,几乎在所有实际情况中我们抽取的物品特征都仅能 代表物品的一些方面,不可能代表物品的所有方面。
无法挖掘出用户的潜在兴趣
既然CB的推荐只依赖于用户过去对某些物品的喜好,它产生的推荐也都会和用户过去喜欢 的物品相似。如果一个人以前只看与推荐有关的文章,那CB只会给他推荐更多与推荐相关 的文章,它不会知道用户可能还喜欢数码。
用户的真实标签行为数据远远比三元组表示的要复杂,比 如用户打标签的时间、用户的属性数据、物品的属性数据 等。
但是为了集中讨论标签数据,只考虑上面定义的三元组形 式的数据,即用户的每一次打标签行为都用一个三元组( 用户、物品、标签)表示
21
基于标签的推荐系统
实验评价指标
准确率和召回率
Precision= |R(u) T (u) | |R(u) |
Recall= |R(u) T (u) | |T (u) |
覆盖率
| R(u) | Coverage= uU
|I|
多样性
sim(item_tag[i],item_tag[j])
Diversity(R(u))=1- iR(u) jR(u), ji | R(u) |
2
13
标签系统中的推荐问题
标签系统中的推荐问题
打标签作为一种重要的用户行为,蕴含了很多用户兴信息
深人研究和利用用户签的行为可以很好地指导我们改进个性化推荐系统的推荐质量 标签的表示形式非常便于很多算法处理
标签系统中的推荐问题
如何利用用户打标签的行为为其推荐物品(基于标签的推荐)? 如何在用户给物品打标签时为其推荐适合该物品的标签(标签推荐)?
17
标签系统中的推荐问题
标签分类示例
比如说豆瓣图书(左),网易云音乐(右)
18Biblioteka 目录1 2基于内容推荐方法 标签系统中的推荐问题
3
基于标签的推荐系统
4
给用户推荐标签
5
小结
19
基于标签的推荐系统
20
基于标签的推荐系统
用户标签行为的数据集
一个用户标签行为的数据集一般由一个三元组的集合表示 ,其中记录(u, i, b) 表示 用户u 给 物品i 打上了 标签b。
5
基于内容的推荐方法
基于内容的推荐的过程
特征学习:(Profile Learner)
通过机器学习方法形成用户画像 解决的是一个典型的有监督分类问题
,理论上机器学习里的分类算法 最近邻方法(kNN) Rocchio算法 决策树算法(DT) 线性分类算法(LC) 朴素贝叶斯算法(NB)
为了研究上面的两个问题,我们首先需要解答下面3个问题
用户为什么要打标签? 用户怎么打标签 用户打什么样的标签
14
标签系统中的推荐问题
用户为什么进行标注
在设计基于标签的个性化推荐系统之前,我们需要深入了解用户的标注行为(即打 标签的行为).知道用户为什么要标注,用户怎么标注,只有深入了解用户的行为,我 们才能基于这个行为设计出令他们满意的个性化推荐系统
tag_items = dict() user_items = dict() for user, item, tag in records.items():
addValueToMat(user_tags, user, tag, 1) addValueToMat(tag_items, tag, item, 1)
15
标签系统中的推荐问题
用户如何打标签
在互联网中,每个用户行为表面看是
随机的,但背后蕴含很多规律。
#统计标签流行度 def TagPopularity(records):
tagfreq = dict() for user, item ,tag in records:
if tag not in tagfreq: tagfreq[tag] = 1
用 records 存储标签数据的三元组, def InitStat(records):
其中records[i] = [user, item, tag];
user_tags = dict()
用 user_tags 存储nu,b,其中 user_tags[u][b] = nu,b;
用 tag_items存储nb,i,其中 tag_items[b][i] = nb,i。
大数据,成就未来
基于标签的推荐算法
2019/12/1 7
目录
1 2
基于内容推荐方法 标签系统中的推荐问题
3
基于标签的推荐系统
4
给用户推荐标签
5
小结
2
基于内容的推荐方法
联系用户和物品的几种途径
推荐系统的目的是联系用户的兴趣和物品,这种联系需要依赖不同的媒介
利用用户喜欢过的物品,给用户推荐与他喜欢过的物品相似的物品,这就是前面提的基于物品的算法。 利用和用户兴趣相似的其他用户,给用户推荐那些和他们爱好相似的其他用户喜欢的物品,这是前面提
Scott A. Golder 总结了Delicious上的标签,将它们分为如下几类。
表明物品是什么:是乔布斯的首页,就会有个标签叫“乔布斯”。 表明物品的种类 :表示一个网页类别的标签包括 article(文章)、blog(博客)等。 表明谁拥有物品: 比如很多博客的标签中会包括博客的作者等信息。 表达用户的观点: 比如用户认为网页很有趣,就会打上标签funny(有趣。 用户相关的标签: 比如 my favorite(我最喜欢的)、my comment(我的评论)等。 用户的任务: 比如 to read(即将阅读)、job search(找工作)
b
B(u)是用户u打过的标签集合,B(i)是物品i被打过的标签集合,nu,b是用户u打过标签b的次 数,nb,i是物品i被打过标签b的次数。
23
基于标签的推荐系统
SimpleTagBasedCB
在Python中,我们遵循如下约定 #从records中统计出user_tags和tag_items
无法为新用户产生推荐
新用户没有喜好历史,自然无法获得他的profile,所以也就无法为他产生推荐了。
9
目录
1 2
基于内容推荐方法 标签系统中的推荐问题
3
基于标签的推荐系统
4
给用户推荐标签
5
小结
10
标签系统中的推荐问题
基于用户标签的推荐
根据维基百科的定义,标签是一种无层次化结构的、用来描述信息的关键词、它可以用来描述物 品的语义。
物品表示(Content Analyzer)
抽取特征,形成特征向量 这些属性通常可以分为两种:结构化
的属性与非结构化的属性。 所谓结构化的属性就是这个属性的意
义比较明确,其取值限定在某个范围 ;而非结构化的属性往往其意义不太 明确,取值也没什么限制。 用的最多的计算方法还是信息检索中 常用的词频-逆文档频率(TF-IDF)
Morgan Ames研究图片分享网站中用户标注的动机问题
首先是社会维度,有些用户标注是给内容上传者使用的(便于上传者组织自己的信息).而有些 用户标注是给广大用户使用的(便于帮助其他用户找到信息)
另一个维度是功能维度,有些标注用于更好地组织内容,方便用户将来的查找,面另一些标注用 于传达某种信息,比如照片的拍摄时间和地点
好特征; 生成推荐列表:通过比较上一步得到的用户喜好与候选物品的特征,为此用户推荐一组相
关性最大的物品。
4
基于内容的推荐方法
基于内容的推荐的过程
根据给物品打标签的人的不同,标签应用一般分为两种:一种是让作者或者专家给物品打标签;另 一种是让普通用户给物品打标签,也就是UGC的标签应用。
UGC的标签系统是一种表示用户兴趣和物品语义的重要方式。当一个用户对一个物品打上一个 标签,这个标签一方面描述了用户的兴趣,另一方面则表示了物品的语义,从而将用户和物品联系 了起来。
addValueToMat(user_items, user, item, 1)
24
基于标签的推荐系统
SimpleTagBasedCB
#对用户进行个性化推荐
def Recommend(user): recommend_items = dict() tagged_items = user_items[user] for tag, wut in user_tags[user].items(): for item, wti in tag_items[tag].items():
豆瓣允许用户对图书和电影打标签,借此获得图书和 电影的内容信息和语义,并用这种信息改善推荐效果
Last.fm分析用户的听歌行为预测用户对音乐的兴趣, 从而给用户推荐个性化的音乐。
12
标签系统中的推荐问题
标签的作用
表达标签系统帮助我表达对物品的看法。(30%的用户同意) 组织打标签帮助我组织我喜欢的电影。(23%的用户同意) 学习打标签帮助我增加对电影的了解。(27%的用户同意) 发现标签系统使我更容易发现喜欢的电影。(19%的用户同意) 决策标签系统帮助我判定是否看某一部电影。(14%的用户同意)
到的基于用户的算法。 第三种要的方式是通过一些特征联系用户和物品,给用户推荐那些具有用户喜欢的特征的品。这里的特
征有不同的表现方式,比如可以表现为物品的属性集合(比如对于图书,属性集包括作者、出版社、主题 和关键词等)
3
基于内容的推荐方法
基于内容的推荐的概念
基于内容的推荐
基于内容的推荐的过程一般包括以下三步
22
基于标签的推荐系统
最简单的推荐算法
定义一个三元组(u,i,b)表示用户u给物品i打了标签b,如何推荐?
最简单的算法
1、统计每个用户最常用的标签 2、对于每个标签,统计被打过这个标签次数最多的物品 3、对于一个用户,找到他常用的标签,找到具有这些标签的最热门的物品推荐给这个用户
用户u对物品i的兴趣 P(u, i)= nu,bnb,i
#if items have been tagged, do not recommend them
if item in tagged_items: continue
if item not in recommend_items: recommend_items[item] = wut * wti
好的可解释性
如果需要向用户解释为什么推荐了这些产品给他,你只要告诉他这些产品有某某属性,这 些属性跟你的品味很匹配等等。
新的物品可以立刻得到推荐
只要一个新物品加进物品库,它就马上可以被推荐,被推荐的机会和老的物品是一致的。
8
基于内容的推荐方法
基于内容推荐的缺点
物品的特征抽取一般很难
讨论UGC的标签应用,研究用户给物品打标签的行为,探讨如何通过分析这种行为给用户进行个 性化推荐。
11
标签系统中的推荐问题
基于标签推荐的应用系统
Delicious允许用户给互联网的每个网页打标签,从而 通过标签重新组织整个互联网。
CiteULike是一个著名的论文书签网站,允许研究人员 提交或者收藏自己感兴趣并且给论文打标签,帮助用 户更好的发现与自己领域相关的优秀论文。
6
基于内容的推荐方法
基于内容的推荐的过程
生成推荐列表(Filtering Component)
通过比较上一步得到的用户喜好与候选 物品的特征,为此用户推荐一组相关性 最大的物品
用户反馈 改进用户画像
7
基于内容的推荐方法
基于内容推荐的优点
用户之间的独立性
既然每个用户的profile都是依据他本身对物品的喜好获得的,自然就与他人的行为无关。 而CF刚好相反,CF需要利用很多其他人的数据。CB的这种用户独立性带来的一个显著好处 是别人不管对物品如何作弊都不会影响到自己。
else: tagfreq[tag] +=1
return tagfreq
标签流行度的长尾分布
16
标签系统中的推荐问题
用户打什么样的标签
标签的规范
在用户看到一个物品时,我们希望他打的标签是能够准确的描述物品内容属性的关键词, 但用户往往不是按照我们的想法操作,而是可能给物品打上各种各样奇奇怪怪的标签
很多情况下我们很难从物品中抽取出准确刻画物品的特征,比如电影推荐中物品是电影,社会化网络 推荐中物品是人,这些物品属性都不好抽。其实,几乎在所有实际情况中我们抽取的物品特征都仅能 代表物品的一些方面,不可能代表物品的所有方面。
无法挖掘出用户的潜在兴趣
既然CB的推荐只依赖于用户过去对某些物品的喜好,它产生的推荐也都会和用户过去喜欢 的物品相似。如果一个人以前只看与推荐有关的文章,那CB只会给他推荐更多与推荐相关 的文章,它不会知道用户可能还喜欢数码。
用户的真实标签行为数据远远比三元组表示的要复杂,比 如用户打标签的时间、用户的属性数据、物品的属性数据 等。
但是为了集中讨论标签数据,只考虑上面定义的三元组形 式的数据,即用户的每一次打标签行为都用一个三元组( 用户、物品、标签)表示
21
基于标签的推荐系统
实验评价指标
准确率和召回率
Precision= |R(u) T (u) | |R(u) |
Recall= |R(u) T (u) | |T (u) |
覆盖率
| R(u) | Coverage= uU
|I|
多样性
sim(item_tag[i],item_tag[j])
Diversity(R(u))=1- iR(u) jR(u), ji | R(u) |
2
13
标签系统中的推荐问题
标签系统中的推荐问题
打标签作为一种重要的用户行为,蕴含了很多用户兴信息
深人研究和利用用户签的行为可以很好地指导我们改进个性化推荐系统的推荐质量 标签的表示形式非常便于很多算法处理
标签系统中的推荐问题
如何利用用户打标签的行为为其推荐物品(基于标签的推荐)? 如何在用户给物品打标签时为其推荐适合该物品的标签(标签推荐)?
17
标签系统中的推荐问题
标签分类示例
比如说豆瓣图书(左),网易云音乐(右)
18Biblioteka 目录1 2基于内容推荐方法 标签系统中的推荐问题
3
基于标签的推荐系统
4
给用户推荐标签
5
小结
19
基于标签的推荐系统
20
基于标签的推荐系统
用户标签行为的数据集
一个用户标签行为的数据集一般由一个三元组的集合表示 ,其中记录(u, i, b) 表示 用户u 给 物品i 打上了 标签b。
5
基于内容的推荐方法
基于内容的推荐的过程
特征学习:(Profile Learner)
通过机器学习方法形成用户画像 解决的是一个典型的有监督分类问题
,理论上机器学习里的分类算法 最近邻方法(kNN) Rocchio算法 决策树算法(DT) 线性分类算法(LC) 朴素贝叶斯算法(NB)
为了研究上面的两个问题,我们首先需要解答下面3个问题
用户为什么要打标签? 用户怎么打标签 用户打什么样的标签
14
标签系统中的推荐问题
用户为什么进行标注
在设计基于标签的个性化推荐系统之前,我们需要深入了解用户的标注行为(即打 标签的行为).知道用户为什么要标注,用户怎么标注,只有深入了解用户的行为,我 们才能基于这个行为设计出令他们满意的个性化推荐系统
tag_items = dict() user_items = dict() for user, item, tag in records.items():
addValueToMat(user_tags, user, tag, 1) addValueToMat(tag_items, tag, item, 1)
15
标签系统中的推荐问题
用户如何打标签
在互联网中,每个用户行为表面看是
随机的,但背后蕴含很多规律。
#统计标签流行度 def TagPopularity(records):
tagfreq = dict() for user, item ,tag in records:
if tag not in tagfreq: tagfreq[tag] = 1
用 records 存储标签数据的三元组, def InitStat(records):
其中records[i] = [user, item, tag];
user_tags = dict()
用 user_tags 存储nu,b,其中 user_tags[u][b] = nu,b;
用 tag_items存储nb,i,其中 tag_items[b][i] = nb,i。
大数据,成就未来
基于标签的推荐算法
2019/12/1 7
目录
1 2
基于内容推荐方法 标签系统中的推荐问题
3
基于标签的推荐系统
4
给用户推荐标签
5
小结
2
基于内容的推荐方法
联系用户和物品的几种途径
推荐系统的目的是联系用户的兴趣和物品,这种联系需要依赖不同的媒介
利用用户喜欢过的物品,给用户推荐与他喜欢过的物品相似的物品,这就是前面提的基于物品的算法。 利用和用户兴趣相似的其他用户,给用户推荐那些和他们爱好相似的其他用户喜欢的物品,这是前面提
Scott A. Golder 总结了Delicious上的标签,将它们分为如下几类。
表明物品是什么:是乔布斯的首页,就会有个标签叫“乔布斯”。 表明物品的种类 :表示一个网页类别的标签包括 article(文章)、blog(博客)等。 表明谁拥有物品: 比如很多博客的标签中会包括博客的作者等信息。 表达用户的观点: 比如用户认为网页很有趣,就会打上标签funny(有趣。 用户相关的标签: 比如 my favorite(我最喜欢的)、my comment(我的评论)等。 用户的任务: 比如 to read(即将阅读)、job search(找工作)
b
B(u)是用户u打过的标签集合,B(i)是物品i被打过的标签集合,nu,b是用户u打过标签b的次 数,nb,i是物品i被打过标签b的次数。
23
基于标签的推荐系统
SimpleTagBasedCB
在Python中,我们遵循如下约定 #从records中统计出user_tags和tag_items
无法为新用户产生推荐
新用户没有喜好历史,自然无法获得他的profile,所以也就无法为他产生推荐了。
9
目录
1 2
基于内容推荐方法 标签系统中的推荐问题
3
基于标签的推荐系统
4
给用户推荐标签
5
小结
10
标签系统中的推荐问题
基于用户标签的推荐
根据维基百科的定义,标签是一种无层次化结构的、用来描述信息的关键词、它可以用来描述物 品的语义。
物品表示(Content Analyzer)
抽取特征,形成特征向量 这些属性通常可以分为两种:结构化
的属性与非结构化的属性。 所谓结构化的属性就是这个属性的意
义比较明确,其取值限定在某个范围 ;而非结构化的属性往往其意义不太 明确,取值也没什么限制。 用的最多的计算方法还是信息检索中 常用的词频-逆文档频率(TF-IDF)
Morgan Ames研究图片分享网站中用户标注的动机问题
首先是社会维度,有些用户标注是给内容上传者使用的(便于上传者组织自己的信息).而有些 用户标注是给广大用户使用的(便于帮助其他用户找到信息)
另一个维度是功能维度,有些标注用于更好地组织内容,方便用户将来的查找,面另一些标注用 于传达某种信息,比如照片的拍摄时间和地点