推荐系统的目的是联系用户的兴趣和物品
流行的推荐系统通过3种方式联系用户兴趣和物品
(1):利用用户喜欢过的物品,给用户推荐与他喜欢过的物品相似的物品,这是基于物品的算法。
(2):利用和用户兴趣相似的其他用户,给用户推荐那些和他们兴趣爱好相似的其他用户喜欢的物品,这是基于用户的算法。
(3):通过一些特征(feature)联系用户和物品,给用户推荐那些具有用户喜欢的特征的物品。
特征有不同的表现形式,可以是物品的属性集合(图书:作者,出版社、主题和关键词),也可以表现为隐语义向量(用户的行为历史)还有种特征表现形式----------标签
标签的定义:
标签是一种无层次化结构的、用来描述信息的关键词,它可以用来 描述物品的语义。根据给物品打标签的人的不同,标签应用一般分为两种:一种是让作者或者专 家给物品打标签;另一种是让普通用户给物品打标签,也就是UGC(User Generated Content,用 户生成的内容)的标签应用。UGC的标签系统是一种表示用户兴趣和物品语义的重要方式。当一 个用户对一个物品打上一个标签,这个标签一方面描述了用户的兴趣,另一方面则表示了物品的 语义,从而将用户和物品联系了起来
UGC:
普通用户给物品打标签,也就是UGC(User Generated Content,用 户生成的内容)的标签应用。
一般用户会打什么样的标签呢?
(1)表明物品是什么(2)表明物品的种类(3)表明谁拥有物品
(4)表达用户的观点(5)用户相关的标签(6)用户的任务
(7)类型(8)时间(9)人物
(10)地点(11)语言(12)奖项
(一)一个简单的标签算法:
(1) 统计每个用户常用的标签
(2)对于每个标签,统计被打过这个标签次数最多的物品
(3)对于一个用户,首先找到他常用的标签,然后找到具有这些标签的最热门物品推荐给这个用户。
python标签的推荐算法:
但是上面的推荐算法并不是完美,这里我们需要考虑到对热门标签和热门物品进行打压
可以改进下算法:
借用TF-IDF的思想
标签的清理方法:
(1)去除词频很高的停止词
(2)去除因词根不同造成的同义词
(3)去除因分隔符造成的同义词
(二)基于图的推荐算法
首先,我们需要将用户打标签的行为表示到一张图上。我们知道,图是由顶点、边和边上的 权重组成的。而在用户标签数据集上,有3种不同的元素,即用户、物品和标签。因此,我们需 要定义3种不同的顶点,即用户顶点、物品顶点和标签顶点。然后,如果我们得到一个表示用户u 给物品i打了标签b的用户标签行为(u,i,b),那么最自然的想法就是在图中增加3条边,首先需要在 用户u对应的顶点v(u)和物品i对应的顶点v(i)之间增加一条边(如果这两个顶点已经有边相连,那 么就应该将边的权重加1),同理,在v(u)和v(b)之间需要增加一条边,v(i)和v(b)之间也需要边相 连接。
图4-11是一个简单的用户—物品—标签图的例子。该图包含3个用户(A、B、C)、3个物品(a、 b、c)和3个标签(1、2、3)。 在定义出用户—物品—标签图后,我们可以用第2章提到的PersonalRank算法计算所有物品节点, 相对于当前用户节点在图上的相关性,然后按照相关性从大到小的排序,给用户推荐排名最高的 N个物品。
(三)给用户推荐标签
给用户推荐标签的意义:
1 方便用户输入
2 提高标签质量
这篇主要讲了使用标签进行推荐,实际中的推荐系统更多是多种推荐的组合。