推荐系统概述

推荐系统是联系用户和物品的媒介
                                                ——项亮《推荐系统实践》
 
是什么&为什么

当我最开始用豆瓣FM的时候,很快我就喜欢上了这个产品。用它听歌的逻辑很简单,他给你放什么你就听什么,没得选,但是你可以做的是告诉它你喜不喜欢这首歌,喜欢的话就点亮页面上的红星,不喜欢的话就扔进垃圾桶。少数几次的交互之后我就发现它就可以推荐一些非常符合我口味的歌有的我之前就确定我喜欢,有的之前根本没听过,但是恰好非常喜欢,有时候甚至是惊艳。所以在准确地知道“推荐系统”这个东西之前我就已经累计了好几千的听歌量。
 
这是一个信息过载的时代。有时候我们明确的知道想要什么,有时候不知道,有时候就算知道也不知道怎么描述、怎么选择,有时候自己不知道却反而会被呈现出来的东西惊艳到……推荐系统已经在我们的互联网生活发挥了很多的功能,不管我们有没有注意到它的存在。当我们购物、观影、听歌、浏览信息,只要有和互联网发生了交互,就可能会“被推荐”,当然,这些推荐你可能喜欢,也可能不喜欢。
图一  推荐系统和其他系统的集成
 
当我粗浅的看待推荐系统的时候,我觉得这就是一种单纯的营销手段,为了经济利益而强行插入的东西,和现实生活中的牛皮癣没什么区别、不过当我进一步了解这个东西之后我改变了我的想法。
 
推荐系统是为了解决信息过载而存在的。海量的数据中搭载了巨大的信息,怎么才能让需要知道的人获得他们?作为用户,面对这无边无际的比特海,该怎么选择和取舍信息的接收?又要用怎样的平台把信息和用户连接起来?这三个问题就是推荐系统试图解决的问题。同时这三个问题也揭示了一个完整的推荐系统一般存在的三个参与方:用户、信息提供者、和提供推荐系统的平台。一个好的推荐系统是在致力于解决上述三个问题的同时为三个参与方带来利益最大化的存在,在这个信息爆炸的时代显得尤为必要。
 
 

 

图二 推荐系统的参与者
 
长尾问题

刚才说到信息过载,过载之后就自然会出现长尾的问题。长尾问题通俗来讲就是大多数的商品都处于流行度很低的水平,只有少数的物品的流行度很高。这种现象可以用社会学中的马太效应来类比,就是强者越强、弱者越弱。如果继续用“热门物品”这种非个性化的推荐方式将会使这种“贫富差距”越来越大。所以个性化推荐系统就是为了致力于挖掘长尾中的物品,消除这种马太效应:如果所有的物品都出现在推荐列表中而且出现的次数差不多,那么这个推荐系统发掘长尾的能力就很好。在推荐系统评测指标中有覆盖率(coverage)来量化这种能力。下图表现了流行度越高的物品数量越少:物品数量和流行度的常数次幂成反比。

 
图三 物品流行度的长尾分布
 
怎么样

既然推荐系统是这么重要的存在,那么它的后面一定有一些可以总结成一般规律或者规则的东西在支撑着,数学作为规律的表现形式之一,难免少不了到处抛头露面。下面我要介绍一些常用的推荐系统的算法和概念,没有公式。
 
推荐系统的构造是需要采集用户数据进行分析之后,根据数据建立相应的模型进行推荐。这些采集到的数据我们通常叫做用户行为数据。

基于用户行为的推荐算法,又叫协同过滤。所谓协同过滤,就是用户齐心协力,通过和系统不断地交互,过滤掉自己不喜欢的东西,使推荐列表越来越满足自己的需求。协同过滤在学术界又有几种类别,比如基于领域的(neighbor based)、隐语义模型(latent factor model,LFM)以及基于图的随机游走算法。最著名的,应用最广泛的还是基于领域的方法,那就是大名鼎鼎的UserCF和ItemCFA。基于模型的算法。在推荐系统领域,提得最多的就是潜语义模型(Latent Factor Model,LFM)和矩阵分解模型(Matrix Factorization),这两种模型是相似的,都是通过降维的方式补全用户和物品的关系矩阵(user-item matrix,如果是评分预测模型那么就是评分矩阵)。
 
用户和系统产生的数据是多种多样的,除了上面提到的,还有很多的利用不同数据的模型和算法。比用户的人口统计学数据,用户标签数据,社交网络数据,和时间或位置有关的上下文信心……都可以为推荐系统所利用。而且各个模型之间也不是独立的,如果说一种特征或者模型构建一个推荐引擎的话,推荐系统往往都是由多个推荐引擎组成的,集成可以为我们带来更好的效果。
 
 显式和隐式反馈
个性化推荐系统中用户的行为分为两种,一种是显性反馈(explicit feedback),另一种是隐性反馈(implicit feedback)。
显示反馈能够明显表示出用户的喜恶,比如打分制,比如点赞和反对,这种反馈便于使用评分预测的推荐模型。显示反馈数据又能携带更多的信息,也更加难以获取。隐式反馈一般是普通的用户行为,比如网页的点击、浏览、观看等,不能明显的反应用户的喜好,这种数据数据量巨大,大多数的数据都是这样的数据。虽然看上去是显示数据具有更大的价值,但是在这篇文章中指出,在推荐系统中,隐式数据其实是更有用的。文章作者举了YouTube把五分制的打分系统改成喜欢和不喜欢两种情况这个例子。再举个简单的例子,对于电影推荐来说,我们关注的是推荐之后用户会不会去观看这部电影,而不是用户看完电影之后会会给电影打多少分。
 
总结

推荐系统已经集成到各种互联网应用中,正在用数学和模型的方法发现和解释用户和产品的某种联系。推荐系统联系用户和物品的方式分为以下三种。
图四  联系用户和物品额推荐系统
如果抽象一点看的话,可以把用户喜欢的物品看做一种特征,和用户相似的用户也看做一种特征,那么其实用户和物品就是通过物品联系在一起的。推荐系统的核心任务就可以被分为两部分,一是如何给用户找到特征,二是如何通过特征找到对应的物品生成推荐列表。
 
最后,多种模型的集成往往是有效的。

 
 
posted @ 2017-03-13 15:51  木白的菜园  阅读(911)  评论(0编辑  收藏  举报