基于微博用户的协同过滤系统--以python为例

上传人:马*** 文档编号:159964914 上传时间:2022-10-09 格式:DOC 页数:15 大小:341KB
收藏 版权申诉 举报 下载
基于微博用户的协同过滤系统--以python为例_第1页
第1页 / 共15页
基于微博用户的协同过滤系统--以python为例_第2页
第2页 / 共15页
基于微博用户的协同过滤系统--以python为例_第3页
第3页 / 共15页
资源描述:

《基于微博用户的协同过滤系统--以python为例》由会员分享,可在线阅读,更多相关《基于微博用户的协同过滤系统--以python为例(15页珍藏版)》请在装配图网上搜索。

1、基于微博用户的协同过滤推荐系统-以python为例袁玉芳 12214043(江苏师范大学数学与统计学院 江苏徐州 221116)摘要 微博即微型博客,是一种通过关注机制分享即时信息的社交网络平台.在经过十几年的发展,到2013年时新浪微博的注册量就已经达到了5.36亿.微博以其独特的运行方式吸引了世界各地的网民,在中国微博也获得了大量网友的青睐.本文是根据部分随机微博用户所关注的标签,通过计算各用户间的相关系数,将基于用户的协同过滤技术应用到微博信息推荐中,对目标用户推荐其潜在关注东西.关键词 微博;推荐系统;协同过滤;python0 引言从2006年twitter的建立,到2007国内第一个

2、具有微博色彩的饭否网,微博开始了轰轰烈烈的发展.越来越多的人开始使用微博.关注功能的使用带来的是一场微博人气的大战,名人开始使用微博聚揽人气,草根也怀有成为名人的梦想,网红群体的出现刺激大量籍籍无名的群众,从默默无闻到一夜成名往往就在不经意之间. 微博用户可以通过客户端发布在140字(包括标点符号)的文字信息,并实现即时分享.随着时间的发展,140字的限制也已取消.可以传播的信息量也就越大.微博的关注功能使得用户可以获得他人的微博信息,因此如何从这庞大的信息中获取用户希望看到的信息具有重要意义.近几年,研究微博推荐系统的论文有很多,比如华南理工大学林文旋的硕士论文,基于用户兴趣的微博个性化信息

3、推荐研究1,还有哈尔滨工业大学汤斌的硕士论文,基于微博的知识词条推荐算法研究2,华中科技大学硕士论文,微博协同过滤推荐系统的设计与实现3等等.推荐系统使软件的实用性大大提高,它使得用户自动获取有用的信息,极大地减少了搜索时间.在Google之前的众多浏览器之所以输给Google,正是由于Google研发了推荐系统,极大满足了用户需求.之后搜索引擎的开发大都注重了推荐系统的研发.更为突出的是,现在流行的app基本也都含有推荐这个功能,如淘宝,京东,亚马逊等等.而python软件以其简单的语法,强大的功能征服了很多人,它不仅含有很多功能的模块以供使用,更可以融合其他语言,使其他语言在平台上运行.但

4、是因为相关书籍大都是英文,中文译本较少,所以python在国内可找到的资料并不是很多,应用也并不是很广泛,但不能否认的是它的确是一款实用且强大的计算机编程软件.互联网发展至今已达到了令人惊讶的地步,它给用户带来了大量的信息,满足了用户在信息时代对信息的需求,但网络的迅速发展所带来的海量信息,使无法直接从中获得自己真正有用的那部分,所以信息的使用效率反而降低了,这就是所谓的信息超载(informationoverload)问题.而推荐算法正是在这样的情况下火起来的,因为互联网的信息爆发有了大量的数据,这使得推荐系统有了用武之地.与传统搜索引擎相比,推荐系统通过研究用户兴趣偏好,进行计算,发现用户

5、的潜在兴趣,从而使用户获得期望信息.就比如假如我们直接搜索,我们可以通过搜索引擎获得精准的信息,可当我们不知道自己想要找什么的时候,推荐系统的优势就显现出来了.随着 web2.0 技术的日益成熟,为了给用户提供更好的体验进而达到一些商业目的,越来越多的系统提供个性化推荐服务,比如Netflix, Google.推荐算法也得到了越来越多的学者的关注和研究.推荐系统使用户不需要主动查找自己感兴趣的信息,也不用填写意向表格,系统将直接根据用户的历史行为信息为用户进行新信息的推荐.推荐系统的目的是为每个用户推荐“个性化”的项目.(推荐系统旨在给不同的用户推荐符合其个性化要求的项目)1995年3月(20

6、世纪末),卡耐基.梅隆大学的RobertArmstrong等人在美国人工智能协会上提出了个性化导航系统Web Watcher;斯坦福大学的MarkoBalabanovic等人在同一会议上推出了个性化推荐系统LIRA.经过不间断的发展,(在美国人工智能协会上来自卡耐基梅隆大学的罗伯特.阿姆斯特朗和斯坦福大学的马克。巴拉巴诺维奇俩人分别推出了个性化导航系统Web Watch与个性化推荐系统LIRA,随着信息化、大数据时代的全面到来)推荐系统现在正在我们生活中发挥重要作用。它将用户的信息与推荐对象的信息相匹配,然后利用推荐算法进行计算,找到相似的物品推荐给用户。Python是一种面向对象,解释型计算

7、机程序设计语言,由Guido van Rossum于1989年底发明.其语法简介明了,具有丰富和强大的类库,它能够将其他语言制作的各种模块如C,C+轻松的链接在一起.Python代表着简单主义,因为其简单的语法,它很容易上手.作为一款计算机程序设计语言,python几乎可以被应用于任何地方.从软件质量上看,python的代码设计致力于可读性,这使得python具备了优秀的可重用性和可维护性.即使代码非本人所写,python代码的一致性也保证了其代码容易理解.Python的开发效率相对于其他语言来说更高,它的代码大小往往只有C+或Java的1/5-1/3,因此无论是录入还是调试,维护都仅需要少量

8、代码.且python程序可立即运行,无需编译.Python内置了众多预编译并可移植的功能模块,这些模块即标准库.标准库支持一系列应用级的编程任务,涵盖了从字符模式到网络脚本编程的匹配等方面,此外还通过自行开发的库或者众多第三方应用支持软件进行扩展. Python相较于其他语言来说属于高级语言,在编写方面以简答著称,但这并不意味着python编写复杂程序上面会非常吃力.反而Python可以做很多事情,很多著名的网站包括YouTube就是Python写的;也可以做网络游戏的后台,很多在线游戏的后台都是Python开发的,比如EVE Online这款大型多人网络游戏.NASA,Los Alamos也

9、使用python实现科学计算任务,等等.在本篇文章中选择以python来进行设计正是因为python的简单容易上手,且功能强大,它可以用其简单的语言实现复杂的功能. 本文所研究的就是以微博用户关注的信息为内容,使用python软件,利用协同过滤的方法想用户推荐其未关注的内容.1协同过滤推荐系统协同过滤推荐(Collaborative Filtering Recommendation)技术是推荐系统中应用最早和最为成功的技术之一.协作型过滤算法通常选择对一大群人搜集其偏好,从中找到与目标用户品味相近的一小群人.算法会对这一小群人的关注信息进行考察,并组合在一起构造出一个推荐列表,这个推荐列表的信

10、息是经过排名的,我们可以通过排名看出用户可能感兴趣的信息的可能性大小.协同过滤是基于这样的假设:如果一个用户想要找到他真正感兴趣的内容,可以有这样的方法:首先找到与此用户有相似偏好的用户,然后将这些用户感兴趣的内容推荐给此用户.这个基本思想非常易于理解,比如我们在日常生活中,想要了解一件商品,或者电影,歌曲等,我们一般会选择向朋友进行询问,然而在这些朋友中有些人的品味比较高,有的人不太好,我们就会选择与我们品味相似的朋友,让他们进行推荐.协同过滤推荐系统正是把这一思想运用到电子商务中来,以给使用者带来更好的使用体验.基于协同过滤的推荐系统是用户的角度来进行推荐的,自动获取推荐结果,即用户获得的

11、推荐是系统是从用户的搜索,浏览历史中得来的,不需要用户使用搜索引擎一直搜素直到找到适合自己兴趣的信息,也不用填写调查表格之类的东西.协同过滤方法一般分为两类:基于内存的(也叫基于近邻的)方法和基于模型的方法.其中基于近邻的协同过滤又可以分为基于项目的协同过滤(item-based collaborative filtering , IBCF)和基于用户的协同过滤(user-based collaborative filtering , UBCF).1.1收集用户偏好协同过滤推荐系统需要使用用户的历史行为数据与偏好数据,推荐算法基于此工作的,那么偏好信息的采集就成为了推荐系统设计的第一步.对于用

12、户来说,很多方式都可以向系统提供自己的偏好信息,例如收藏信息,搜索信息,购买信息,还有一些问卷调查方式等等,且不同的数据获得的结果也不尽相同.收集完用户偏好信息之后,我们需要对数据进行一定的预处理.在对数据进行处理的过程中,最核心的部分就是:减噪和归一化.(1)减噪:用户的偏好信息是用户在使用应用过程中产生的,这些数据不可避免存在大量的无用信息还有用户的误操作.通过经典的数据挖掘算法我们可以过滤掉初始数据中的噪音,在进行分析时就会更加准确.(用户在使用应用过程会产生大量有价值的偏好信息,但随之而来的是这些数据中也有许多无用的信息和误操作导致的干扰信息。我们要想得到更为准确的分析结果,就要利用经

13、典数据挖掘算法来过滤掉无效数据,这种做法被形象的称为“降噪”。)(2)归一化:在初始的用户偏好信息中,我们发现不同行为的数据取值相差会很大.比如,用户的浏览过的数据肯定比购买数据大的多.这对于计算来说会造成很大的误差,那么为了将各种数据统一在一个取值范围中,从而加权求和得到的总体结果更加准确,就需要对数据进行归一化处理.最简单一种归一化处理方式,就是将每类数据分别除以此类中的最大值,使处理过的数据取值在 0,1 范围中.对数据进行完基本处理后,根据不同分析方法,可以进行分组或加权.然后我们就可以得到一个用户偏好的矩阵,行是用户列表,列是物品列表,值是用户对物品的偏好评分.1.2找到相似的用户或

14、物品在搜集完人们的偏好数据后,需要确定人们在兴趣方面的相似程度.我们将每个人的数据分别与其他人进行比较,计算他们的相似度评价值.目前有多种方法来计算,这里选两种进行介绍. 欧几里德距离: (1)其中 是x用户对其用户列表中第i个物品的评分,是y用户对其用户列表中第j个物品的评分.皮尔逊相关度: (2)该相关系数是基于用户的协同过滤推荐系统的皮尔逊相关系数,它是判断两组数据和某一直线的拟合程度.它表示用户a与b的皮尔逊相关系数,U表示用户a与b都评分过的项目集合, 与 表示a用户与B用户分别对i物品的评分,而 与 表示a用户与b用户对所有物品的评分.它在数据并不是很规范的情况下,会倾向给出更好的

15、结果.选择与目标用户最相似的K个用户,组成目标用户的一个集合,利用邻居用户评分的值来预测当前用户对物品的评分.1.3获得推荐基于协同过滤的推荐算法有两类,分别为基于用户和基于物品的推荐算法.1.3.1基于用户的协同过滤基于用户的协同过滤算法是在用户的历史偏好的数据上计算用户的相似度,它的基本假设是,喜欢类似物品的用户可能有相同或者相似的偏好.图1.3.1基于用户的协同过滤推荐系统原理图上图示意出基于用户的协同过滤推荐机制的基本原理,假设用户 A 喜欢(倾向于购买商品)物品 A和 C,用户 B 喜欢物品 B,用户 C 喜欢物品 A , C 和D.从这些用户的历史喜好信息中,我们可以发现用户 A

16、和用户 C 的口味和偏好是比较类似的,同时用户 C 还喜欢物品 D,那么我们可以推断用户 A 可能也喜欢物品 D,因此可以将物品 D 推荐给用户 A.1.3.2 基于项目的协同过滤基于项目的协同过滤推荐也有建立在一个假设的基础上,即一个人会喜欢和他曾经喜欢过的项目相类似的项目.它推荐的基本原理如下图所示,与基于用户的协同过滤原理比较类似,数据源都是所有用户对项目的评级,但是目的是计算项目和项目之间的相似程度,将与历史喜好的项目相似的项目推荐给目标用户.图1.3.2基于项目的协同过滤推荐系统原理图如上图所示,用户 A 同时喜欢项目 A 和 C,用户 B 同时喜欢项目 A、B 和 C,从这些数据中

17、可以推断出项目 A 和 C 是相似的.由于用户 C 曾经喜欢项目 A,那么就把与项目 A 相似的项目 C 推荐给用户 C.基于项目的协同过滤是通过项目的相似性来为用户推荐的,因此会偏向于推荐用户的主要兴趣领域的项目,而非主要兴趣领域的推荐结果不充分,因此推荐的多样性不足,也缺乏热点信息.这种推荐方式适用于项目数较少、用户数较多的场景.(从上图中我们可以得知,用户A喜欢三个物品中的俩个,用户B则对三个物品都有好感)中间这句话我没看懂是什么意思,逻辑有点乱(项目中的协同过滤是以项目的相似性为基础为使用者推荐其最有可能感兴趣的项目,这难免会有所遗漏,忽视使用者的一些需求。由于这个原因会导致推荐的内容

18、难以和热点信息想结合,且推荐结果较为单一,所以给予项目的协同过滤推荐法一般在用户基数大,项目选择少的情形中。)2 实例分析2.1数据介绍本文所用数据均来源于八爪鱼软件中所收集完成的微博数据.数据共有3900个,每个数据具体包括用户名,用户年龄,用户地址,用户教育程度,用户关注信息等基本信息.通过对数据的简单处理,仅保留用户名,用户性别,用户标签三个属性.具体数据如下表所示:用户性别标签A男杨洋时尚历史控听歌智慧城市动漫宅B男娱乐体育文艺美女游戏动漫爱睡觉C女井柏然张子健张国荣不二周助海贼王动漫D女音乐篮球睡觉动漫工藤新一双子座E男90后小说看书唱歌运动水瓶座F女熬夜党微博90后动漫柯南控负责G

19、男足球迷微博控冷笑话幽默音乐控动漫控H男电影听歌音乐旅游学生摄影I男户外自行车旅游动漫迷爱旅行摄影J男东方红魔馆二次元生物非基佬动漫K男成都生活美女穿衣美容搞笑幽默动漫迷青春L男银魂阳光吃货一枚动漫表2.1.1 用户基本数据列表通过对数据的基本分析我们可以看出女性用户多关注动漫,音乐,旅游等,而男性用户多关注游戏,运动,动漫等.不同年龄段的用户关注的也有所不同,特别是90后的用户大都关注动漫,游戏,星座等标签.但正是由于每个用户不同,用户所关注的内容也不同.以动漫为例,在数据中,将动漫作为第一标签的人中,男女比例的差距就很悬殊,如下图所示,将动漫作为第一标签的女性占了57%,而男性占43%.而

20、年龄差异所造成的信息选择不同就更加明显,这里就不一一举出.图2.1.1标签第一位为动漫的用户男女比例图2.2 具体分析由于数据量比较多,在测试时选取部分数据作为测试集.在测试集中样本量为19.由于样本量较少,所以选取的19个用户在用户标签上都比较多.在测试集中有19个用户,每个用户关注了不少于1个的标签,我们可以按照用户关注标签的顺序进行打分.规定每个用户最对关注五个标签,进行打分.第一个标签打5分,依次向下,第五个标签1分.如果有用户关注标签少于五个,我们依然按照规则进行打分,第一个打5分,依次递减.通过对数据的简单处理,我们获得了如下的数据:用户用户关注标签A娱乐体育文艺美女游戏动漫543

21、21B音乐篮球睡觉动漫工藤新一54321C电影听歌音乐旅游动漫54321D娱乐军事体育时尚游戏动漫54321E体育美食赚钱排球游戏动漫54321F电影旅游小发明家微博控天蝎座54321G吃货音乐迷旅游美食玩游戏动漫54321H美食旅游游戏动漫星座命理娱乐54321I游戏动漫美食星座命理健康娱乐54321J电影听歌游戏IT互联网读书54321K美食IT数码美女新闻资讯游戏动漫54321L动漫摄影时尚体育打球54321M宅女动漫听歌音乐吃货54321N美食旅游游戏动漫健康IT数码54321O音乐电影旅游搞笑动漫54321P美食旅游游戏动漫文艺5432Q游戏动漫5R听歌游戏动漫ACG睡觉A型血543

22、21S文艺美食旅游游戏动漫5432表2.2.1 用户评分列表用户评分矩阵为:娱乐体育文艺美女游戏动漫音乐篮球睡觉动漫A54321B5432C31D531E51FG14H13I15J3K31L215M24N3O51P23Q5R42S52表2.2.2用户评分矩阵对测试集中的任意两个人lily(I)与bob(N)求皮尔逊相关系数,发现在他们共同关注标签有美食,健康,游戏动漫,如下结果所示,在结果中,有美食,游戏动漫与健康三个标签,这是用户I与用户N都进行过评分的标签.皮尔逊相关系数为0.5,这说明计算后,用户I与用户N的相关系数为0.5,属于中等相关,在推荐时可以考虑将一个用户没有的标签推荐给另一用

23、户,图2.2.1用户相关系数结果然后选取了测试集中的lussi(P)作为推荐用户.Lussi(P)作为目标用户本关注了四个标签美食,旅游,游戏动漫与文艺,我们将后两个标签去掉,作为测试预结果.如下图结果所示,通过运算我们可得与lussi相近的三个邻居为lusa(H),danna(S),bob(N)三个用户,明显的是他们都关注了美食与旅游这两个标签,且评分都很高.图2.2.2用户邻居评分结果然后对目标用户lussi(P)进行推荐,经过软件运行,我们可以得到以下结果:图2.2.3用户推荐结果列表即应对目标用户推荐文艺与游戏动漫,星座,健康,娱乐,it数码这几个标签信息,其中游戏动漫评分最高,文艺紧

24、随其后,依次评分递减.查看预结果,我们发现目标用户原有的四个标签为美食,旅游,游戏动漫,文艺.而计算结果的前两项正是目标用户应该关注的,这说明基于用户的协同过滤方法是可行的,且有良好的结果.而其余几个推荐标签即为目标用户可能感兴趣的.3推荐系统构架该推荐系统是为了满足用户对期望信息的获取,系统通过过滤相似用户,搜集目标用户可能关注的东西,再将这些目标用户没有关注过的标签推荐给目标用户,即用户的推荐结果是由协同过滤推荐系统得出.3.1系统构架本系统共有三部分,第一部分是数据来源层,系统所需数据都从这里获得.第二部分是是整个系统的核心部分,即协同过滤算法的实现,并存储数据.最顶层即推荐结果,显示推

25、荐结果并删除非标签型数据,将结果推荐给用户.推荐列表显示初始推荐结果推荐排名过滤获得推荐物品属性推荐算法计算皮尔逊系数计算k个邻居对指定用户推荐Python算法实践用户数据用户1娱乐体育.用户2动漫文艺.用户3星座娱乐.用户4摄影小说.图3.1.1推荐系统构架图第一层:数据源新浪微博作为中国注册人数最多的微博系统,每天有很多人在使用,大量的用户也产生了大量的数据,本系统的目的就是从这些海量信息中找到用户所期望看到的信息.在本系统中,用户标签是主要过滤内容.第二层:系统核心层该层是系统的核心部分,在这层中,计算系数,获得相似用户,并对指定用户进行推荐.在这一层中,产生的数据都将保存在这里.第三层

26、:推荐显示层对目标用户推荐完成后,要将结果显示出来,该层就是为了将推荐标签显示给用户而设计的.在这一层中我们可以看到目标用户所被推荐的标签,并对这些标签进行分类,从而推荐给用户.3.2系统展望上述推荐系统以微博为例,使用python软件实现了基本的标签推荐,但是存在很多不足.在数据来源方面,使用的数据是已采集好的数据,不具有同步性.且标签分类不规范,采集到的数据标签有很多包含关系,比如关注的标签属于动漫人物,属于动漫整个大类,但在处理数据的时候不可能一个一个将这些动漫人物的标签改为动漫,这对于推荐结果还是有些影响.从系统主体部分来看,仅采用了基于用户的协同过滤方法,不免有些单调,也可以结合其他

27、推荐方法进行推荐,以达到更好的效果.4总结通过对实例的分析,可以看出基于用户的协同过滤方法还是很有效的.它以目标用户关注的标签为基础,计算与其他用户的相似度,选取与其最相近的K个用户,从这K个用户所关注的标签内向目标用户推荐其未关注的标签,并一一评分,则评分最高的则为向目标用户推荐的标签.在测试集中选取的目标用户删去了原有的标签,在运行完程序后我们看到推荐标签的前两个即为目标用户的原有标签.以上粘贴了部分代码.从算法上来看,python在对数据进行分析时,语言明了,仅使用了少量代码,但是所得结果符合预期.在进行大量数据分析时,我们也可以导入图表,使python可以处理大量的数据.这是推荐系统中

28、的主要部分.图4.1.1 部分代码示意图参考文献1 莫映,王开福译集体智慧编程M北京:电子工业出版社,2009,7-28.2 林文旋. 基于用户兴趣的微博个性化信息推荐研究华南理工大学硕士论文,2014,1-18.3 汤斌. 基于微博的知识词条推荐算法研究哈尔滨工业大学硕士论文,2014,1-32.4 岳亚杰. 微博协同过滤推荐系统的设计与实现华中科技大学硕士论文,2012,1-14.5 高鹏协同过滤推荐方法在新媒体领域中的应用广播与电视技术J,2015,11:7-28.6 杨艳霞, 于海平, 陈燕. 基于Web挖掘的个性化推荐算法研究计算机与数字工程J,2014,4:674-677.User

29、s-based Collaborative Filtering Recommendation system of Micro-blog-Case in PythonYuan Yufang 12214043(School of Mathematics and Statistics, Jiangsu Normal University, Xuzhou 221116)Abstract: Micro-blog, a social networking platform to share instant messages through regard mechanism. After ten years

30、 of development, 536 million people have register Micro-blog until 2013. Micro-blog has become one of the major activities in China. This article is based on a random part of Micro-blog users interest tags. To calculate the correlation coefficient between users tags and recommend potential target to target by user-based collaborative filtering technology.Keywords: Micro-blog; Recommendation system; User-based collaborative filtering; Python15

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!