韦灵,黎伟强
(广西科技大学鹿山学院 电气与计算机工程系,广西 柳州 545616)
摘要:为使互联网用户快捷地查找所需信息,个性化推荐系统的优势得到了体现和运用。该系统设计的目的是为广大网民在浏览新闻时提供一个个性化的新闻推荐系统,实现对新闻数据的协同过滤推荐处理。系统利用 Hadoop的MapReduce模型实现并行快速地聚类海量新闻数据,大大提高了数据处理的速度,聚类使得新闻之间的相似度得以体现,再利用不同的协同过滤算法实现个性化的新闻推荐。
关键词:Hadoop;MapReduce;聚类;个性化;Mahout
中图分类号:TP301.6文献标识码:ADOI: 10.19358/j.issn.16747720.2016.23.006
引用格式:韦灵,黎伟强. 基于Hadoop平台的个性化新闻推荐系统的设计[J].微型机与应用,2016,35(23):21-23,27.
0引言
随着互联网的发展,大量新闻快速涌现,信息严重过载,令用户无从选择。新闻推荐系统被广泛应用于解决信息过载问题[1],解决不同人之间关注新闻热点不一致的问题。新闻是人们生活中必不可少的一部分,如何使人们快速地在每天众多新闻中找出自己感兴趣、想要了解并查看的新闻成为了各大新闻门户网站的一大难题。快速准确的新闻推荐能节省用户大量查找自己感兴趣的新闻的时间,这能让用户得到一个非常好的用户体验。大数据的出现标志着人们生活品质的进步,这是社会进化的副产品,它能利用许多常规机器进行海量数据处理。将一个海量数据任务分成需要的小任务,分别发给许多常规机器进行并行处理,然后得出结果,这个过程就像许多常规机器汇聚成为一个超级机器,整个处理过程就像一个机器在处理一样,这大大降低了数据挖掘的成本,并且在数据量很大时大大减少了计算的时间。在当今时代,无论是新闻门户网站还是购物网站,无论是医疗方面的还是金融方面的,大数据平台下的数据挖掘都是现在主流的发展方向。从另一个角度看,大数据的出现不仅帮助人们筛选出了有用的信息,同时还帮人们过滤掉了无用的信息。混合方法弥补了基于内容推荐在多样性上的不足,但却带来了冷启动问题,在推荐热点新闻或用户具有潜在兴趣的新闻时,没有得到足够点击的新闻依然无法推荐给目标用户[2]。目前,国内外学者在新闻推荐领域已展开了一系列研究。参考文献[3-6]使用了协同过滤的新闻推荐方法,本文提出了基于用户和物品的协同过滤算法来实现面向不同用户的个性化新闻内容推荐。
1协同过滤算法介绍
个性化推荐主要分为协同过滤推荐、基于内容推荐、混合推荐。个性化推荐本质上是把用户与物品进行联系,使得用户能够发现自己所喜爱的物品,使得物品能够被所喜欢的用户所了解[7]。关于协同过滤的一个最典型的例子就是看电影,有时候不知道哪一部电影是我们喜欢的或者评分比较高的,那么通常的做法就是问问周围的朋友,看看最近有什么好的电影推荐。在询问时,都习惯于问与自己爱好相似的朋友,这就是协同过滤的核心思想。协同过滤推荐与传统的基于内容过滤推荐不同,协同过滤分析用户兴趣,在用户群中找到指定用户的相似(兴趣)用户,综合这些相似用户对某一信息的评价,形成对该指定用户对此信息的喜好程度预测。协同过滤主要分为基于用户的协同过滤和基于物品的协同过滤。
1.1基于用户的协同过滤算法
俗话说“物以类聚、人以群分”,拿看电影这个例子来说,如果你喜欢《蝙蝠侠》、《碟中谍》、《星际穿越》、《源代码》等电影,另外有个人也喜欢这类电影,而且他还喜欢《钢铁侠》,则很有可能你也喜欢《钢铁侠》这部电影。所以说,当一个用户 A 需要个性化推荐时,可以先找到与他兴趣相似的用户群体 G,然后把 G 喜欢的、并且 A 没有听说过的物品推荐给 A,这就是基于用户的协同过滤算法。
1.2基于物品的协同过滤算法
基于物品的协同过滤算法(ItemCF)是业界应用最多的算法,主要思想是利用用户之前有过的行为,给用户推荐和之前物品类似的物品。依然以电影为例,如果喜欢《蝙蝠侠》的用户有A、B、C和D,喜欢《碟中谍》的用户有A、C、D。那么可以认为《蝙蝠侠》和《碟中谍》拥有相似的用户群体,则很可能B用户也会喜欢《碟中谍》这部电影,于是推荐《碟中谍》给B用户。这就是基于物品的协同过滤算法。
2协同过滤算法用户的模型构建
协同过滤算法所需要的数据结构是用户id+新闻id+评分,为了将数据库中的数据形成这样的数据结构,通过查询新闻表的用户表来确定所查询的用户是否在其中,然后得到该用户浏览过的所有新闻id,最后对该新闻的喜爱程度进行预测。根据式(1)计算出Preference喜好值,其中Preference为预测的结果,ct为新闻聚类结果簇的个数,cn为当前新闻所在簇的新闻个数,unt为当前用户浏览过的新闻总数,nct为该新闻的浏览数。
基于用户的协同过滤推荐流程图如图1所示。当启动基于用户的协同过滤算法引擎后,指定一个用户为其推荐,系统将查询数据库中该用户浏览过的所有新闻,根据新闻中用户表查询浏览过的该新闻的相关用户,然后构建协同过滤算法用户的模型。整个过程封装在MyRecommender类的UserRecommender方法中,而在UserRecommender中封装了数据库的一系列查询方法与协同过滤算法的调用,通过基于用户的协同过滤算法计算出应该为其推荐的新闻。
3协同过滤算法物品的模型构建
首先,以具有相同标题的新闻作为查询语句的分组条件,查询出每一个新闻标题下都有哪些用户访问过,根据查询到的结果形成该新闻未访问过的推荐用户列表。另外系统将会查询出浏览过该新闻的用户并构建浏览用户列表,并直观显示在分析后的推荐列表中,同时根据用户浏览的新闻分类的不同比重,推荐结果显示时,根据比重做相关的排序,把用户最关注的那类新闻排在最前面,以此来做推荐排序。基于物品的协同过滤利用式(2)计算:
其算法流程图如图2所示。
基于物品的协同过滤推荐,当启动基于物品的协同过滤算法引擎后,指定一个用户为其推荐,系统将查询数据库中该用户浏览过的所有新闻,根据新闻中用户表查询浏览过该新闻的相关用户,然后构建协同过滤算法用户的模型。整个过程封装在MyRecommender类的ItemRecommender方法中,而在ItemRecommender中封装了数据库的一些查询方法和协同过滤算法的调用,通过基于物品的协同过滤算法计算出应该推荐的新闻。
4个性化新闻推荐系统实现
基于Hadoop平台聚类算法的个性化新闻推荐系统,其目的是为让广大网民在浏览新闻时,为其提供一个个性化的新闻推荐系统。大量的信息使得用户找到自己需要的信息变得很困难。为了使互联网用户快捷地查找所需信息,个性化推荐系统的优势得到了体现,本文利用 Hadoop的MapReduce模型实现并行快速地聚类海量新闻数据,大大提高了数据处理的速度,聚类使得新闻之间的相似度得以体现,再利用不同的协同过滤算法实现个性化的新闻推荐。系统使用了JSP、Servlet技术及Mahout开源项目编写程序,首先利用Java将新闻数据按约定格式处理并将其传到Hadoop的HDFS上,在安装好Hadoop的Linux端定时调用shell脚本聚类处理新闻,然后使用MySQL数据库存储数据,实现对新闻数据的协同过滤推荐处理。新闻推荐系统主要功能包括前台与后台的设计,图3所示为系统整体功能结构图,前台主要负责展示推荐的新闻信息结果和供用户浏览新闻;后台处理新闻数据,并将处理好的数据插入数据库供前台使用。
图4为新闻推荐流程图。选择基于用户的协同过滤推荐,系统将自动启动基于用户的协同过滤算法引擎进行数据的计算并将数据推送到页面中。同理基于物品的协同过滤算法相同。这个过程中查询所有人的浏览记录是通过多次的数据库查询得到的。
新闻普遍存在的问题就是冷启动问题,当用户第一次使用时该如何进行推荐,用户新加入时没有任何的历史行为及其兴趣,因此无法对其进行推荐。本文使用热门推荐来解决这种极端的情况。当刚打开该系统时,为模拟处理冷启动问题,系统将查询出浏览数前十的新闻进行推荐。
(1)当用户进行基于用户的协同过滤推荐算法操作时,将触发baseOnUserSer这个Servlet基类,该Servlet基类将查询出系统中的所有用户,并对所有的用户进行基于用户的协同过滤算法推荐。首先,提交所有用户的相关数据(格式为:用户id,新闻id,评分),格式表示某用户id浏览过某条新闻id,并且把喜欢程度表示为评分,利用每个用户的新闻评分,根据皮尔逊相关系数公式计算出需要推荐的用户与其他用户之间的皮尔逊相似度,最后利用式(2)计算出需要推荐的用户与用户之间的皮尔逊相似度per。假设某用户浏览过的某条新闻的评分为p,那么通过公式可以计算出该条新闻的推荐分值point=per×p,如果该条新闻被多个用户阅读过则需求出Σpoint=per1×p1+per2×p2…+pern×pn。得到所有新闻的推荐分后,选取被推荐用户没有浏览过的新闻中最高分的新闻作为推荐。
基于用户的协同过滤推荐系统效果如图5所示。
(2)当用户进行基于物品的协同过滤推荐操作时,将触发baseOnItemSert类,该类将查询出系统中的所有用户,并过滤掉admin这个测试用户,将所有的用户进行基于物品的协同过滤算法推荐,所有推荐结果存储在一个专门设计的newsModeBean类中 ,其他的操作基本与基于用户的协同过滤推荐一样。基于物品的协同过滤算法,提交数据的格式与基于用户的协同过滤算法一样。首先提取出所有的新闻,计算并建立新闻的共轭矩阵。然后使用用户向量点乘共轭矩阵可以得到推荐分数。
基于物品的协同过滤推荐系统如图6所示。
5结论
随着互联网的迅速发展,用户面对海量互联网信息的时候,有时觉得很迷茫,不知道从何阅读,甚至有时面对无关的广告产生烦躁的心情。为了提高有效阅读率,本文提出了利用基于用户或者物品的协同过滤算法来实现新闻的个性化推荐,从测试的效果看,基本上达到用户信息个性化新闻推荐的各项功能要求,表明该算法是有效的。因为测试数据较少,在Hadoop平台上运行,没有体现出并行计算的效果,下一步将利用更多的用户数据来验证系统。同时,算法目前的实现主要依靠相似性来做推荐,后续将引进其他算法来改进个性化推荐的新闻内容和分类,从而提高推荐的准确性。
参考文献
[1] JIANG S,HONG W X.A vertical news recommendation system:CCNS—an example from Chinese campus news reading system[C].ICCSE 2014: Proceedings of the 2014 9th International Conference on Computer Science & Education.Piscataway,NJ: IEEE,2014: 1105-1114.
[2] 杨武,唐瑞,卢玲.基于内容的推荐与协同过滤融合的新闻推荐方法[J].计算机应用, 2016, 36(2):414-418.
[3] 刘金亮.基于主题模型的个性化新闻推荐系统的研究与实现[D].北京: 北京邮电大学,2013.
[4] 彭菲菲,钱旭.基于用户关注度的个性化新闻推荐系统[J].计算机应用研究,2012,29(3) : 1005-1007.
[5] 文鹏,蔡瑞,吴黎兵.一种基于潜在类别模型的新闻推荐方法[J].情报杂志,2014,33(1):161-166.
[6] 项亮.推荐系统实践[M].北京: 人民邮电出版社,2012.
[7] 曹一鸣. 基于协同过滤的个性化新闻推荐系统的研究与实现[D]. 北京:北京邮电大学, 2013.