如今已经进入了一个数据爆炸的时代,随着 Web 2.0 的发展, Web 已经变成数据分享的平台,那么,如何让人们在海量的数据中想要找到他们需要的信息将变得越来越难。
在这样的情形下,搜索引擎(Google,Bing,百度等等)成为大家快速找到目标信息的最好途径。在用户对自己需求相对明确的时候,用搜索引擎很方便的通过关键字搜索很快的找到自己需要的信息。但搜索引擎并不能完全满足用户对信息发现的需求,那是因为在很多情况下,用户其实并不明确自己的需要,或者他们的需求很难用简单的关键字来表述。又或者他们需要更加符合他们个人口味和喜好的结果,因此出现了推荐系统,与搜索引擎对应,大家也习惯称它为推荐引擎。
来看下推荐引擎的工作原理:
如上图,一个完整的推荐系统由4个部分组成:
1、推荐对象(物品信息)模块
推荐系统应用于不同的领域,它推荐的对象也就各不相同,如何对推荐对象进行描述对推荐系统也有很重要的影响,推荐对象的描述文件与用户的描述文件密切相关,通常的做法是同样的方法来表达用户的兴趣偏好和推荐对象。
2、 收集用户信息的行为记录模块
负责记录用户的喜好行为,例如问答、评分、购买、下载、浏览等;具体有:
• 用户属性:基本信息,包括社会属性和自然属性,比如用户的姓名、年龄、职业、收入、学历,用用户注册时的自然属性和社会属性进行初始建模。
• 用户手工输入的信息:用户主动提供给提供给系统的信息,包括用户在搜索引擎中输入的关键词,用户输入的感兴趣的主题、频道。
• 用户的浏览行为和浏览内容:浏览次数、频率、停留时间,浏览页面时的操作(收藏、保存、复制等)、浏览时用户表情的变化
• 推荐对象的属性特征:不同的推荐对象,用户建模的输入数据也不同。网页等推荐对象通常考虑对象的内容和用户之间的相似性,而产品等推荐对象通常考虑用户对产品的评价。
3、 分析用户喜好的模型分析模块
通过以上用户行为记录分析用的潜在喜好产品和喜好程度。模型分析模块的功能能够对用户的行为记录进行分析,建立合适的模型来描述用户的喜好信息。
4、推荐算法模块
利用后台的推荐算法,实时地从产品集合中筛选出用户感兴趣的产品进行推荐,其中,推荐算法模块是推荐系统中最为核心的部分。
1)协同过滤系统
1.1基于用户的协同过滤推荐
基本思想:用户选中某个推荐对象是基于朋友的推荐。也就是说如果一些用户对某些对象的评分比较相似,则说明这些用户的偏好相似,那么他们对其他推荐对象的评分应该也是相似的。所以协同过滤推荐首先找到和目标用户兴趣偏好相似的最近邻居,然后根据邻居们对推荐对象的评分来预测目标用户对未评分的推荐对象的评分,选择预测评分最高的若干个推荐对象作为推荐结果反馈给用户
1.2基于项目的协同过滤推荐
基于项目的协同过滤推荐的基本原理也是类似的,只是说它使用所有用户对物品或者信息的偏好,发现物品和物品之间的相似度,然后根据用户的历史偏好信息,将类似的物品推荐给用户
1.3基于模型的协同过滤推荐
利用用户c对众多对象的评分来得到一个用户c的模型,进而对某对象预测打分。和上述两种协同推荐的不同在于对已有数据应用统计和机器学习的方法得到模型进行预测的。
协同过滤系统有以下优点:
具有推荐新信息的能力,可以发现用户潜在的但自己尚未察觉的兴趣偏好;能够推荐艺术品、音乐、电影等难以进行内容分析的产品。
问题:
冷启动问题(缺少历史数据时,如何对新用户进行推荐?如何推荐新产品?)、打分稀疏性问题(实际系统中用户对产品的打分信息非常少)、算法可扩展性问题、基于用户的协同过滤,会随着用户数不断增加之后,计算量加大,算法的性能会下降;亚马逊采用基于产品的协同推荐,能够有效规避这个问题,但如果产品数不断增加的系统,这种方法同样是不适用的。在web应用中,相应速度也是十分影响用户体验的,因为这点比较大的限制了基于用户的协同过滤在实际系统中的使用。
2)基于内容的推荐系统
基于内容的推荐,它是建立在项目的内容信息上作出推荐的,而不需要依据用户对项目的评价意见,更多地需要用机器学习的方法从关于内容的特征描述的事例中得到用户的兴趣资料,再考察用户资料与待预测项目的相匹配程度。
例如,电影推荐中,基于内容的系统首先分析用户已经看过的打分比较高的电影的共性(演员、导演、风格等),再推荐与这些用户感兴趣的电影内容相似度高的其他电影,基于内容的推荐算法的根本在于信息获取和信息过滤。因为在文本信息获取与过滤方面的研究较为成熟,现在很多基于内容的推荐系统都是通过分析产品的文本信息进行推荐。
基于内容推荐方法的优点是:不需要其它用户的数据,没有冷开始问题和打分稀疏问题。能为具有特殊兴趣爱好的用户进行推荐。能推荐新的或不是很流行的项目,没有新项目问题。通过列出推荐项目的内容特征,可以解释为什么推荐那些项目。已有比较好的技术,如关于分类学习方面的技术已相当成熟。
缺点是要求内容能容易抽取成有意义的特征,要求特征内容有良好的结构性,并且用户的口味必须能够用内容特征形式来表达,例如自动提取多媒体数据(图形、视频流、声音流等)的内容特征具有技术上的困难,这方面的相关应用受到了很大限制。
3)混合推荐算法
在现行的推荐往往都不是单纯只采用了某一种推荐的机制和策略,他们往往是将多个方法混合在一起,从而达到更好的推荐效果。如:
• 加权的混合(Weighted Hybridization): 用线性公式将几种不同的推荐按照一定权重组合起来,具体权重的值需要在测试数据集上反复实验,从而达到最好的推荐效果。
• 切换的混合(Switching Hybridization):其实对于不同的情况(数据量,系统运行状况,用户和物品的数目等),推荐策略可能有很大的不同,那么切换的混合方式,就是允许在不同的情况下,选择最为合适的推荐机制计算推荐。
• 分区的混合(Mixed Hybridization):采用多种推荐机制,并将不同的推荐结果分不同的区显示给用户。其实,Amazon,当当网等很多电子商务网站都是采用这样的方式,用户可以得到很全面的推荐,也更容易找到他们想要的东西。
• 分层的混合(Meta-Level Hybridization): 采用多种推荐机制,并将一个推荐机制的结果作为另一个的输入,从而综合各个推荐机制的优缺点,得到更加准确的推荐。一些混合推荐系统都是基于内容的协同过滤算法。即利用用户的配置文件进行传统的协同过滤计算.用户的相似度通过基于内容的配置文件计算而得,而非共同打过分的产品的信息。这样可以克服协同过滤系统中的打分稀疏性问题。这个方法的另一个好处就是不仅仅当产品被配置文件相似的用户打了分才能被推荐,如果产品与用户的配置文件很相似也会被直接推荐。网易云音乐就有用到这个算法去解决冷启动问题,当新用户用新浪微博登录网易云音乐时,会根据微博的信息去做个性化推荐,即使这个时候你什么都没有听过也能推荐音乐给你。
大纲如下:
第二部分:协同过滤推荐之基于用户的协同过滤推荐(以麦包包为例);