推荐系统——利用用户标签数据

UGC(User generated content用户生成的内容)标签系统的代表应用
UGC标签系统是很多web2.0网站的必要组成部分。

标签系统中的推荐问题:

打标签作为一种重要的用户行为,蕴含了很多用户兴趣信息。其中的推荐问题主要由以下两个:
如何利用用户打标签的行为为其推荐物品?
如何在用户给物品打标签时为其推荐适合该物品的标签?

标签被一个用户使用一次则流行度就加1

用户打什么样的标签:
ScottA.Golder总结的分类如下:
①表明物品是什么
②表明物品的种类:它属于什么
③表明谁拥有物品:比如博客中就包含博客作者等信息
④用户相关的标签:比如my favorite、my comment等
⑤用户的任务:比如to read(即将阅读)、job search(找工作)等

基于标签的推荐系统:

一个最简单的算法步骤:
①统计每个用户最常用的标签
②对于每个标签,统计被打过这个标签次数最多的物品
③对于一个用户,首先找到他常用的标签,然后找到具有这些标签的最热门的物品推荐给这个用户

则用户u对物品i的兴趣公式:

P(u,i) = ∑(b)n(u,b)*n(b,i)

B(u)是用户u打过的标签集合,B(i)是物品i被打过的标签集合,n(u,b)是用户u打过标签b的次数,n(b,i)是物品i被打过标签b的次数
规定:

records存储标签数据三元组,records[i] = [user, item, tag];
User_tags存储n(u,b),user_tags[u][b] = n(u,b)
Tag_items存储n(b,i),tag_items[b][i] = n(b,i)

算法改进:

①用TF-IDF方法:

n(u)b记录了标签b被多少个不同用户使用过,n(u)i记录物品i被多少个不同的用户打过标签

标签扩展本质是对每个标签找到和它相似的标签,计算相似度。对于标签b,令N(b)为有标签b的物品集合,n_{b,i}为给物品i打上标签b的用户数,可以通过计算b和b’的相似度:

Sim(b,b’) =∑(i∈N(b)∩N(b’)) n(b,i)*n(b’,i) / sqrt[∑(i∈N(b))n^2(b,i) * ∑(i∈N(b’))n^2(b’,i) ]

②标签清理:
要提高标签的质量就要去除一些停止词或者表示情绪的词,其次这些推荐解释里不能包含很多意义相同的词语,一般来说有如下的方法:
①去除词频很高的停止词
②去除因词根不同造成的同义词
③去除因分隔符造成的同义词

如何给用户推荐标签:

①推荐整个系统里最热门的标签
②给用户推荐物品i上最热门的标签
③推荐用户自己经常使用的标签
④通过一个系数将上面两种方法的推荐结果线性加权

将两个列表线性相加时都将两个列表按最大值做了归一化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值