EthanLab 软件开发 · 产品管理 · 科技评测
返回研究笔记

推荐算法介绍

更新于

随着互联网日益普及,数字内容呈现指数成长趋势,使人们淹没在信息洪流之中,例如:Netflix上有数万部电影,Amazon上有数百万本书籍,Del.icio.us上有超过十亿的网页收藏,这么多的消息,我们无法一一浏览,而传统的搜索引擎只能呈现给用户一样的排序清单,无法根据不同用户偏好提供个性化服务,而个性化搜索与推荐系统正是解决当前信息超载的有效方法之一。

其中推荐系统是信息过滤系统的子集,它试图预测用户将赋予他们还没有考虑的项目(例如:书籍、音乐或电影)或社交元素(例如:个人或团体)评分或偏好。

在一个真实的推荐系统中需要考虑的项目可能会有成千上万,甚至超过百万,例如:Amazon、eBay和YouTube等,用户数量也会非常庞大,因此我们需要准确且有效率的推荐系统。在激烈的竞争环境之下,现有推荐系统已经在电子商务领域取得卓越成果,但在不同领域之下,还需要各方先进和专家努力发展。

一个完整的推荐系统由三个部分组成,收集用户信息的行为纪录模块,分析用户偏好的模型分析模块与推荐算法模块;行为纪录模块负责记录用户行为,例如评分、购买或浏览等;模型分析模块负责分析用户行为,以创建合适的模型来描述用户偏好;推荐算法模块负责即时从项目集合中筛选出用户偏好项目进行推荐,此为推荐系统中最为内核的部分。

主要的推荐算法可以分为协同过滤(Collaborative Filtering)、基于内容(Content-based)与混合法(Hybrid Approaches),接下来我将一一介绍,并进一步说明如何在协同过滤法中结合情境感知 ( Context-aware ) 。

协同过滤法(Collaborative Filtering Approaches)

协同过滤法是目前最成功的推荐算法之一,通常的做法是搜索一大群人,从中找到与我们品味相近的一小群人。算法会针对这些人偏好的其他内容进行计算,产生一个有序的推荐清单。

Goldberg设计Tapestry是最早应用协同过滤法的系统,该系统允许人们根据自己对文档感兴趣的程度添加标记,并利用此信息为他人过滤文档。Konstan等人设计的GroupLens则是应用在新闻筛选上,帮助读者过滤其偏好的新闻内容,用户看过内容后给一个评分,系统会将分数记录下来供日后参考,不同于Tapestry仅在同一个系统中过滤,GroupLens是跨系统的新闻过滤机制;除此之外,Tapestry不会将同项目的评分总合起来,GroupLens则会对同项目从不同用户得到的评分加总。

协同过滤法可以分为两类:基于记忆(Memory-based)和基于模型(Model-based)的算法;基于记忆的算法根据系统中所有被评分的项目进行预测;基于模型的算法根据收集评分数据进行机器学习,得到用户行为模型进行预测。

协同过滤法需要计算两个用户相似度, 常用的相似度测量法有Distance-based、Correlation-based、Cosine-based。

总结来说,协同过滤法有以下优点:具有推荐新信息的能力,可以发现用户潜在偏好;能够推荐音乐、餐厅和电影等难以进行内容分析的项目。

虽然协同过滤法应用广泛,但是也有许多问题,例如:如何对新用户进行推荐或如何推荐新项目给用户之冷启动问题(Cold Start);在任何推荐系统中,已评分项目通常比需要推荐项目数量少很多,而导致精确度低落之稀疏性问题(Sparsity),面对日益增多的用户,数据量急剧增加之可扩展性问题(Scalability)等。因此有的推荐系统采用基于项目相似度的协同过滤法,在项目数量相对稳定的系统,这种方法是很有效的。

基于内容法(Content-based Approaches)

最初基于内容法是协同过滤法的延续与发展,他不需要依赖用户对项目的评价,而是依据用户已经选择的项目内容计算用户之间的相似度,借此推荐合适的项目;基于内容的推荐系统依赖信息检索与过滤,经由分析已经购买或浏览的内容,对用户和项目创建配置文档(Profile),系统可以比较用户和项目配置文档的相似度,直接向用户推荐最相似的项目。

总结来说,基于内容法有以下优点:可以处理新用户与新项目的冷启动问题;不会受到评分稀疏性的限制;能够推荐新项目和非流行项目,能够发现隐藏的项目;可以通过配置文档列出推荐项目的特征,深入了解为什么推荐这些项目。

基于内容法也面临常见的信息检索问题,例如:多媒体数据(图片、音乐与视频)难以进行文本结构化,而受到了很大的限制。

混合法(Hybrid Approaches)

每一种算法都存在着一些缺点,为了择优汰劣,有些推荐系统结合了不同的方法,我们称之为混合法。而目前最常见的混合推荐系统即是基于内容与协同过滤法的搭配,主要又可分为独立系统相互结合、协同过滤系统加入基于内容法。

独立系统相互结合是分别利用两种以上的算法产生推荐结果,然后将这些结果集成起来,利用预测评分的线性组合进行推荐。

而在协同过滤系统中加入基于内容法的Fab,即是用户配置文档使用协同过滤法产生,用户相似度则使用基于内容法,而非参考共同评分项目,这样可以让系统不仅能推荐拥有共同评分的用户项目,也可以推荐与用户配置文档相似的项目。

结合情境之协同过滤法

传统协同过滤法可以被视为二维问题,其中一维是用户,另外一维是项目,每个用户与项目的交互是用户对项目的评分,当我们加入情境到推荐问题上,它就变成了多维度问题。

传统推荐算法无法直接处理这类问题,然而许多研究人员试图修改原有方法来支持情境感知;Adomavicius提出了一个相当著名的方法,其主要精神是在推荐时固定维度,也就是只考虑该情境下所有的评分,如此一来多维问题就变成了二维问题;然而这种方法会使得冷启动问题变得更加棘手,因此Adomavicius等人还提出了一个扩展有等级属性之情境的方法,为了增加准确度,他们还设计一种算法将情境分段。

另外一个方法是测量不同情境的相似度去加权评分;由于用户偏好项目会随着情境改变,若在某些情境下用户一致偏好此项目,Chen推论这个些情境即非常适合该项目。因此他使用Correlation-base相似度测量法去计算项目i在两个情境x和y下的相似度权重。

Chen还假设每个维度都是线性独立的,如此一来两个情境的相似度可以在每个维度中分别计算。