推荐系统实践 笔记4 利用用户标签数据
AngelAndAngel
2012-12-14
标签应用一般分两种:一种是让作者或者专家给物品打标签;另一种是让普通用户给物品打标签,也就是UGC。
当一个用户对一个物品打上一个标签,这个标签一方面描述了用户的兴趣,另一方面则表示了物品的语义,从而将用户和物品联系了起来。 标签系统的最大优势在于可以发挥群体的智能,获得对物品内容信息比较准确的关键词描述。 标签系统的推荐问题主要有以下两个: 1,如何利用用户打标签的行为为其推荐物品(基于标签的推荐)? 2,如何在用户给物品打标签时为其推荐适合该物品的标签呢(标签推荐)? 基于标签的推荐 首先,计算物品标签向量之间的余弦相似度,向量的值为各个标签被物品打的次数 先找出用户前k个最常用的标签 以及这个用户分别打了多少次每个标签(这个数字将作为用户对每个标签的权重,暂且成为用户标签权重),然后找出物品i被哪些标签打过,并记录次数(这个数字暂且称为标签物品权重),两个标签集取交集,为下面的迭代做准备,最后,迭代这些物品I和用户U, 每个用户u(i)对物品i(j)的兴趣度就等于 用户标签权重*标签物品权重的乘机之和。 但是这种算法倾向于给热门标签和热门标签对应的热门物品过大的权重,所以可以参考关键词搜索中tf-idf的方式,给热门标签或热门物品降权,即连加的过程中分别除以log(1+n1)*log(1+n1),n1表示某个标签被多少个不同的用户使用过,n2表示某个物品被多少个不同的用户打过标签 标签系统上线后,数据较少,可以把标签的相似标签都加入到用户的标签集合中。相似标签最简单的方法是找出同义词,或者计算标签相似度 标签推荐 如何给用户推荐标签? 1,推荐整个系统里最热门的标签 2,给用户推荐某物品上最热门的标签 3,给用户推荐自己经常使用的标签 4,前两者结合 假设第2,3分别计算出某个标签的权重(分别都可以为0)为w2,w3,那么第四种的计算方法为w4=a*w2+(1-a)*w3 在目前的测试中,a=0.8,也就是物品标签权重大一点的话,推荐结果最为准确。 在实际情况中,我们可以在物品下面分别列出物品最热门的标签和用户自己最常用的标签。 对于新用户或冷门物品(或者新物品),没有太多历史标签记录,那么可以提取关键字作为标签,或者通过相似度计算进行标签扩展。 |