推荐系统算法学习笔记(六)——利用用户标签数据
目前流行的推荐系统基本上通过3种方式联系用户兴趣和物品。
标签可以用来描述物品。标签应用一般分为两种:一种是让作者或者专家给物品打标签;另一种是让普通用户给物品打标签(UGC)。
1、使用UGC标签系统的代表网站
UGC标签系统的鼻祖Delicious、论文书签网站CiteULike、音乐网站Last.fm、视频网站Hulu、书和电影评论网站豆瓣等。
2、标签系统中的推荐问题
- ①如何利用用户打标签的行为为其推荐物品(基于标签的推荐)?
- ②如何在用户给物品打标签时为其推荐适合该物品的标签(标签推荐)?
2.1 用户为什么要打标签 ?
- 便于上传者组织自己的信息;
- 便于帮助其他用户找到信息;
- 用于更好地组织内容,方便用户将来的查找;
- 用于传达某种信息(比如照片的拍摄时间和地点)。
2.2 用户怎么打标签 ?(用户活跃度和物品流行度的长尾分布)
长尾分布的含义就是排名靠前的物品,虽然排名靠前,但是总的占比较小。
因此要看一下标签流行度的分布。我们定义的一个标签被一个用户使用在一个物品上,它的流行度就加一。如下代码计算了每个标签的流行度。
def TagPopularity(records):
tagfreq = dict()
for user,item,tag in records:
if tag not in tagfreq:
tagfreq[tag] = 1
else:
tagfreq[tag] += 1
return tagfreq
2.3 用户打什么样的标签(最常用) ?
- 表明物品是什么,比如CSDN博客的‘CSDN’;
- 表明物品的种类,比如CSDN博客的‘博客’;
- 表明谁拥有物品,比如CSDN博客的博主等信息;
- 类型,比如CSDN博客属于IT行业类型;
- 人物,比如CSDN博客不同的博主,大牛,菜鸟类似的。
3 基于标签的推荐系统
一个用户标签行为的数据集一般由一个三元组的集合表示,其中记录(u, i, b) 表示用户u给物品i打上了标