推荐系统实践 8.1分
读书笔记 1.3
老中医

推荐系统评测 什么才是好的推荐系统?这是推荐系统评测需要解决的首要问题。一个完整的推荐系统一般存在3个参与方(如图1-22所示):用户、物品提供者和提供推荐系统的网站。以图书推荐为例,首先,推荐系统需要满足用户的需求,给用户推荐那些令他们感兴趣的图书。其次,推荐系统要让各出版社的书都能够被推荐给对其感兴趣的用户,而不是只推荐几个大型出版社的书。最后,好的推荐系统设计,能够让推荐系统本身收集到高质量的用户反馈,不断完善推荐的质量,增加用户和网站的交互,提高网站的收入。因此在评测一个推荐算法时,需要同时考虑三方的利益,一个好的推荐系统是能够令三方共赢的系统。

用户满意度 用户作为推荐系统的重要参与者,其满意度是评测推荐系统的最重要指标。但是,用户满意度没有办法离线计算,只能通过用户调查或者在线实验获得。 用户调查获得用户满意度主要是通过调查问卷的形式。用户对推荐系统的满意度分为不同的层次。GroupLens曾经做过一个论文推荐系统的调查问卷,该问卷的调查问题是请问下面哪 句话最能描述你看到推荐结果后的感受?

视频网站Hulu的推荐页面(如图1-24所示)和豆瓣网络电台(如图1-25所示)中,都有对推荐结果满意或者不满意的反馈按钮,通过统计两种按钮的单击情况就可以度量系统的用户满意度。更一般的情况下,我们可以用点击率、用户停留时间和转化率等指标度量用户的满意度。

社会学领域有一个著名的马太效应,即所谓强者更强,弱者更弱的效应。如果一个系统会增大热门物品和非热门物品的流行度差距,让热门的物品更加热门,不热门的物品更加不热门,那么这个系统就有马太效应。比如,首页的热门排行榜就有马太效应。进入排行榜的都是热门的物品,但它们因为被放在首页的排行榜展示有了更多的曝光机会,所以会更加热门。相反,没有进入排行榜的物品得不到展示,就会更不热门。搜索引擎的PageRank算法也具有一定的马太效应,如果一个网页的某个热门关键词排名很高,并因此被展示在搜索结果的第一条,那么它就会获得更多的关注,从而获得更多的外链,PageRank排名也越高。 那么,推荐系统是否有马太效应呢?推荐系统的初衷是希望消除马太效应,使得各种物品都能被展示给对它们感兴趣的某一类人群。但是,很多研究表明现在主流的推荐算法(比如协同过滤算法)是具有马太效应的。评测推荐系统是否具有马太效应的简单办法就是使用基尼系数。如果G 1是从初始用户行为中计算出的物品流行度的基尼系数,G 2是从推荐列表中计算出的物品流行度的基尼系数,那么如果G 2 > G 1,就说明推荐算法具有马太效应。

多样性 用户的兴趣是广泛的,在一个视频网站中,用户可能既喜欢看《猫和老鼠》一类的动画片,也喜欢看成龙的动作片。那么,为了满足用户广泛的兴趣,推荐列表需要能够覆盖用户不同的兴趣领域,即推荐结果需要具有多样性。多样性推荐列表的好处用一句俗话表述就是“不在一棵树上吊死”。尽管用户的兴趣在较长的时间跨度中是一样的,但具体到用户访问推荐系统的某一刻,其兴趣往往是单一的,那么如果推荐列表只能覆盖用户的一个兴趣点,而这个兴趣点不是用户这个时刻的兴趣点,推荐列表就不会让用户满意。反之,如果推荐列表比较多样,覆盖了用户绝大多数的兴趣点,那么就会增加用户找到感兴趣物品的概率。因此给用户的推荐列表也需要满足用户广泛的兴趣,即具有多样性。 多样性描述了推荐列表中物品两两之间的不相似性。因此,多样性和相似性是对应的。假设 定义了物品i和 j之间的相似度,那么用户u的推荐列表R( u)的多样性定义如下: 而推荐系统的整体多样性可以定义为所有用户推荐列表多样性的平均值:

实时性 在很多网站中,因为物品(新闻、微博等)具有很强的时效性,所以需要在物品还具有时效性时就将它们推荐给用户。比如,给用户推荐昨天的新闻显然不如给用户推荐今天的新闻。因此,在这些网站中,推荐系统的实时性就显得至关重要。 推荐系统的实时性包括两个方面。首先,推荐系统需要实时地更新推荐列表来满足用户新的行为变化。比如,当一个用户购买了iPhone,如果推荐系统能够立即给他推荐相关配件,那么肯定比第二天再给用户推荐相关配件更有价值。很多推荐系统都会在离线状态每天计算一次用户推荐列表,然后于在线期间将推荐列表展示给用户。这种设计

用户维度 主要包括用户的人口统计学信息、活跃度以及是不是新用户等。 物品维度 包括物品的属性信息、流行度、平均分以及是不是新加入的物品等。 时间维度 包括季节,是工作日还是周末,是白天还是晚上等。

用户行为的统一表示 user id 产生行为的用户的唯一标识 item id 产生行为的对象的唯一标识 behavior type 行为的种类(比如是购买还是浏览) context 产生行为的上下文,包括时间和地点等 behavior weight 行为的权重(如果是观看视频的行为,那么这个权重可以是观看时长;如果是打分行为, 这个权重可以是分数) behavior content 行为的内容(如果是评论行为,那么就是评论的文本;如果是打标签的行为,就是标签)

基于用户的协同过滤算法 这种算法给用户推荐和他兴趣相似的其他用户喜欢的物品。 基于物品的协同过滤算法 这种算法给用户推荐和他之前喜欢的物品相似的物品。 下面几节将首先介绍上面两种算法,然后再简单介绍隐语义模型和基于图的模型。

基于用户的协同过滤算法。 从上面的描述中可以看到,基于用户的协同过滤算法主要包括两个步骤。 找到和目标用户兴趣相似的用户集合。 找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户。

可以通过如下的Jaccard公式简单地计算u和v的兴趣相似度: 或者通过余弦相似度计算: 下面以图2-6中的用户行为记录为例,举例说明UserCF计算用户兴趣相似度的例子。在该例中,用户A对物品{a, b, d}有过行为,用户B对物品{a, c}有过行为,利用余弦相似度公式计算用户A和用户B的兴趣相似度为: 图2-6 用户行为记录举例 同理,我们可以计算出用户A和用户C、D的相似度: 以余弦相似度为例,实现该相似度可以利用如下的伪码: def UserSimilarity(train):

0
《推荐系统实践》的全部笔记 121篇
豆瓣
免费下载 iOS / Android 版客户端