背景介绍
随着网络技术和信息科技的迅速发展,人们数据量的产出呈现出指数型增长,人类在近几年产生的数据量就已经相当于之前产生的所有数据量总和了,这意味着我们已经进入了一个数据大爆炸的时代。
Web 2.0的出现和发展使得人们将大量的数据分享在互联网中,而要想在这海量的数据中快速找到自己真正所需的信息,我们需要借助搜索引擎的力量,如常用的谷歌,百度和必应等。但是,搜索引擎也有它的局限性,搜索引擎要求用户输入一定的关键词,才能搜索出相对应的信息。但往往在现实中,用户并不很清楚自己的具体需求,从而无法用简单的关键词进行描述。在面对海量信息时,用户可能无法准确定位出对自己真正有用的信息。虽然信息量增加了,但是用户对信息的使用效率反而下降了,即出现信息超载的问题。针对这种情况,推荐系统应运而生。
那么,推荐系统到底是什么呢?维基百科这样解释道:推荐系统是一种信息过滤系统,用于预测用户对物品的“评分”或“偏好”。也就是说,推荐系统能够将用户可能感兴趣或者潜在的有用信息推荐给用户,最常用于电子商务网站(如淘宝,京东和当当网等)和个性化应用(如音乐,电影和图书推荐等)中。
推荐系统的工作原理图如下:
为了简单起见,我们先把推荐系统当作是一个黑盒,这个黑盒的输入包括物品的信息,用户的信息以及用户对物品的偏好等等。根据这些输入信息,系统会将物品推荐给对应的用户。推荐系统的主要推荐方法有以下几种:基于内容推荐、协同过滤推荐、基于关联规则推荐、基于效用推荐、基于知识推荐以及组合推荐。其中, 协同过滤是推荐系统算法中很重要的一环,这篇文章将主要向大家介绍该方法。
协同过滤的定义
协同过滤,英文名称为:Collaborative Filtering。根据维基百科上的定义:“协同过滤是利用某兴趣相投、拥有共同经验之群体的喜好来推荐用户感兴趣的信息,个人通过合作的机制给予信息相当程度的回应(如评分)并记录下来以达到过滤的目的,进而帮助别人筛选信息,其中回应不一定局限于特别感兴趣的,特别不感兴趣信息的纪录也相当重要。”维基百科的定义可能有点生硬晦涩,我们来假设一个场景,如果你很喜欢刷剧,经常会碰到剧荒的情况,虽然新出的美剧,韩剧有很多,但是你不确定哪部剧比较适合你的口味,而你又不想花大量时间在选剧上,这时你可能会选择询问和自己有着相同口味的朋友,哪部剧值得推荐,从而达到以最小的开销来找到自己喜欢的电视剧的目的,这就是协同过滤的主要思想。
协同过滤与传统的基于内容过滤不同,基于内容过滤是先根据内容的属性,得出内容之间的相关性,然后通过用户的喜好记录将相关性大的内容推荐给用户。而协同过滤是直接分析用户的喜好记录,在用户群体中寻找与之有着相似兴趣喜好的其他用户,然后综合分析这些用户对某一特定内容的评价,最后得出推荐系统为指定用户对某一特定内容喜好程度的预测。
在大数据时代的背景下,我们拥有着海量的用户群体,而协同过滤可以利用这大量的用户数据来发掘那些和你有着类似口味的用户,这些用户被称为你的邻居,然后推荐系统根据你邻居的喜好组成一个排序的目录列表作为推荐提供给你。