基于数据挖掘的校园社交网络用户行为分析毕业设计论文(28页).doc
-
资源ID:37061928
资源大小:211.50KB
全文页数:27页
- 资源格式: DOC
下载积分:15金币
快捷下载
![游客一键下载](/images/hot.gif)
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
基于数据挖掘的校园社交网络用户行为分析毕业设计论文(28页).doc
-基于数据挖掘的校园社交网络用户行为分析毕业设计论文-第 26 页1 绪论1.1 选题背景社交网络,简称SNS(social network service),在Web2.0浪潮中已发展为社会化媒体中一个主要平台。据最新的中国互联网络信息中心(CNNIC)2013年1月15 日发布的第31次中国互联网络发展状况统计报告,截至2012年12月底,我国网民规模达5.64亿,互联网普及率为42.1%,较2011年底提升3.8个百分点。同时报告显示,社交网络应用持续呈现增长趋势,截止2012年12月,国内社交网络用户总数已达2.75亿,占到了全部网民人数的48.8%,增速保持在10%以上。与此同时在2010年之后社交网络又出现两大新增长点:其一微博用户持续增长,微博用户规模在2012年达到3.09亿,较2011年底增长了5873万。虽然微博急速扩张的阶段已经结束,但年增幅仍能达到23.5%;其二用户逐渐移动化成为了社交网络用户增长的又一亮点,截至2012年12月底,我国手机网民规模为4.2亿,较上年底增加约6440万人,网民中使用手机上网的人群占比由上年底的69.3%提升至74.5%,随着手机智能化,相当一部分用户访问和发送微博的行为发生在手机终端上,为社交网站的进一步发展提供了可能。此外“社交化”已经作为一种重要的功能元素,正在全面融合到各类互联网应用中。一方面,2012年涌现出大批具备社交基因的新应用,包括图片社交、私密社交、购物分享等,尤其在移动互联网领域,由于手机天生的通讯功能,2012年许多热门移动应用都具备社交功能;另一方面,搜索、网购、媒体等互联网应用正在融合社交因素,以丰富自身的功能、提升用户体验,创新服务和盈利模式。在整个互联网都走向社交化的大趋势下,传统的实名制社交网站也不断增加平台功能,在原有网站基础上融入以上新型的社交功能组件,尤其是将业务发展重点转向移动终端,进而带动了2012年社交网站用户增长,同时也为社交网络的进一步发展提供无限可能。现行网络中较为成熟和流行的社交网站有国外的Facebook,twitter,Google+,Plurk,Flickr,Linkedin等,而国内也不乏人人网、开心网、豆瓣、新浪微博、腾讯微博等社交网络应用或网站。社交网站具有巨大的用户群和访问量,并早已成为网络上极其重要的组成部分。其中Facebook每月活跃人士已超过7.5亿,根据股价估值也已接近千亿级别,已经成为互联网新巨头之一。而在国内的SNS中,人人网注册人数也已经超过1.6亿,活跃用户也超过了一半,国内互联网巨头阿里巴巴更是出资5.86亿美元购得新浪微博18%股份,表现了其对社交网络发展的看好2。来自市场研究机构eMarketer的最新数据显示:在2012年,全球超过14亿人使用社交网络,比2011年增加了19%。图1-1 社交网站发展时间表1.2 研究意义社交网络的流行不仅带来了信息传播技术的革命性变革,并且一步步改变着人们的生活方式、思维方式等,对于社交网络的研究也不断深入。但目前对于社交网络的主体网络用户的行为研究仍然比较冷门,主要研究都偏向于网络用户行为研究,很少有专门对于社交网络用户行为的分析化。目前,社会科学对网络行为的研究,主要集中在以下议题:l 作为行为场域的网络空间的社会特性l 网络行为及其影响因素虽然以上研究都已比较深入,但大多的都从社会学角度切入研究宏观网络用户行为,内容与社交网络契合较少并偏向理论化,方法也大多采用问卷调查等主观性较强的方式,很少有通过技术手段采集客观数据并通过软件分析等方式进行研究的文献。而本文则通过网络爬虫采集相关数据,并通过数据分析软件Weka对采集数据进行数据挖掘,通过数据寻找社交网络用户行为及其影响因素,可以说是从一个比较新颖的角度分析了社交网络用户行为。如果能够有效的提取社交网络中的各种数据并对用户行为、群体特征等进行分析,掌握用户的行为模式及其影响因素,不仅能够帮助网站运营商全面掌握用户需求从而提供更好的服务和产品,还能够帮助营销商更好地了解受众群体和信息传播模式进而采取更有效的网络营销和推广手段。1.3 论文主要研究内容及组织结构1.3.1主要研究内容本论文研究内容主要包括一下三个方面:l 社交网络及社交网络用户行为 该部分主要是为最终通过分析软件对社交网络用户行为进行总结做好理论基础准备。主要对社交网络概念产生、发展过程进行阐述。并对社交网络更加具有WEB2.0时代的特点进行描述。最后对一般社交网络用户行为动机进行分析。l 数据挖掘中的聚类分析这一部分主要对数据挖掘的聚类分析的定义、分析过程以及主要分析手段进行描述,并分析各聚类方法优缺点,最后通过根据收集所得数据特征选取合适的聚类分析方法l 数据采集技术网络爬虫该部分主要确定所要爬取的网页内容,并根据网站HTTP协议与网页行为特征制定定向网页爬虫方案,然后通过python语言实行具体编码。编码过程主要分为两步,首先通过使用Wireshark抓包后使用python中的urlllib库构造目标网站可识别HTTP协议,然后通过设计正则表达式进行数据提取。1.3.2论文组织结构论文第二章主要讨论了社交网络定义与特点,并对一般社交网络用户行为动机进行分析。同时对数据挖掘中的聚类分析定义、过程以及主要方法进行描述,阐明了本文所涉及的理论基础。论文第三章对于如何通过网络爬虫技术进行数据采集进行了说明。首先介绍了网络爬虫技术的原理与URL存在形态,然后分析了如何制定定向网络爬虫,最后说明了本次网络爬虫程序编码所解决的难题与部分具体代码。论文第四章对所收集数据进行预处理,并通过Weka数据挖掘软件对数据进行聚类分析,并对所获结果做出解释。论文最后对整个研究过程进行总结并分析了所存在的不足之处以及对未来进一步研究的展望。2 关键技术和理论基础综述2.1 社交网络2.1.1 社交网络的概念社交网络一词最早是1954年由J. A. Barnes 首先使用。一个社交网络的大小最大约为150人左右 (Dunbar's number)3,平均大小约为124人左右 (Hill and Dunbar, 2002),它是指社会行动者及其间关系的集合,在上世纪90年代之前这一词语主要在管理学、社会学等领域应用。但是随着互联网的发展以及六度空间理论和邓巴数字等理论的兴起4,社交网络逐渐被赋予了新的定义,首先出现的是网络社交。网络社交是伴随着电子邮件的出现产生的,它解决了信息点对点的传送。而BBS则把网络社交又向前推进了一步:从单纯的点对点交流的成本降低,推进到了点对面交流成本的降低。随后产生的即时通信(IM)和博客(Blog)更像是前面两个社交工具的升级版本,前者提高了即时效果(传输速度)和同时交流能力(并行处理);后者则开始体现社会学和心理学的理论信息发布节点开始体现越来越强的个体意识,因为在时间维度上的分散信息开始可以被聚合,进而成为信息发布节点的“形象”和“性格”,随着网络社交的悄悄演进,一个人在网络上的形象更加趋于完整,这时候符合我们现在定义的社交网络出现了。现在社交网络也被称作社交网络服务(Social Network Service),简称SNS,也就是社交+网络+应用服务的意思5。它通过网络这一载体把人们连接起来,从而形成具有某一特点的团体。社交网络含义包括硬件、软件、服务及应用,狭义上讲它是指建立在真实人际关系基础上的网络平台,是作为现实中的社会团体在互联网上交流的辅助工具而存在,是现实活动的在线拓展,与传统的虚拟网络有很大的不同。从这个定义上讲,符合“真实人际关系及其衍生”的SNS主要有Facebook,LinkedInGoogle+以及国内的人人网、开心网等。广义上,一般会把微博、空间、社交网站等都称为“社交网络”,如图21所示这其中包括了一些完全虚拟网络,如微博、Flicker等它们脱离社会现实,结构相对无序、混乱。而狭义上的社交网络,如Facebook,是现实人际网络的子集及其衍生,具有现实生活中人际网络特征,同时国内大多数媒体所指的SNS也一般即为社交网站(Social Network Sites),而并非社会性网络服务(Social Networking Services)。基于如此本文对社交网络的研究是基于狭义上的社交网络将选取国内的社交网络服务网站人人网为数据来源。图2-1 基于人际关系的社交网站分类2.1.2 社交网络特点与传统网络类型相比,在WEB2.0时代发展起来的社交网络主要呈现出以下特点:l 人际传播回归和社交网络关系化正如“电话代替不了握手”一样,网络上具有时并不能带来人们内心的亲切感和信任感。为避免网络这种上具性特征带来的弊端,社交网络正在向人际传播回归,它以现实社会关系为基础,模拟或重建现实社会的人际关系网络。来提高社会交往的质量和效度。l 以用户为中心这也是web2.0的特征,那些过去被轻视、被忽略的“微内容”、“微价值”由于新的聚合力量而显得格外强大。社交网络的UGC(用户生成内容)力量是惊人的,它使得每个人都有一种参与感,让每个人都可以创造自己的媒体。l 虚拟社交与真实社交的融合 社交网络已经弱化了早期网络社区那种娱乐和游戏功能,每个用户都只有一个身份识别,只有紧贴这个身份才能使用和拓展其他功能,它鼓励用户以真实身份、形象加入网络群体,保持线上线下身份一致性,以此来构建社会化的关系服务网络l 私人空间与公共空间的有机结合如果说传统的BBS是一个公共场所,而博客又是一个相对单纯的私人空间, 社交网络则是两者的有机结合,让用户对社区有归属感、认同感的同时又能够置身于社会公共网络中。2.1.3 社交网络用户行为动机l 维持人际关系和传统网络媒体不同的是用户使用社交网络最主要的原因是为了维持人际关系。而在2000年Papacharissl和Rubin做出的关于网络总体使用动机的调查中6,维持人际关系是最次要的动机。之所以会出现如此大的反差,这也是由于SNS的真实性造成的。这也意味着更多的人们开始习惯于使用网络来维持和加强现实生活中的一部分人际关系,表明了SNS在现实生活中的重要性。l 参与互动,信息分享网络互动包括了和朋友或者和陌生网友之间的一切互动行为。用户对别人发的帖子,上传的照片或者别的动态发表评论和意见,或者接受别人对自己发表内容的反馈。除此以外,信息分享成为社交网站用户的主要动机也反映了科技给媒体行为带来的变化。以人和的关系为基础而建立的社交网站,使信息的分享变得更加容易和自然,从而便利了用户之间的分享和交流。l 娱乐消遣娱乐消遣一直以来都是用户使用媒体的主要动机,而对于社交网站用户来说,也是仅此于人际关系维持的第二大动机。玩SNS网站上的网页游戏也是不少人每天登陆社交网站的动力。在这一分类中,娱乐消遣既是行为,也是动机。2.1.4 社交网络主要研究方向目前社交网络主要有四个研究方向,本文主要关心社交网络挖掘技术的发展l 基础结构研究社交网络不同于普通的基础网络,是建立在真实人际关系基础上的,因此对网络的结构特点进行研究对于进一步推动网络的发展具有非常重要的意义。结构研究既包括简单的基础构造研究,例也包括异常复杂的特殊结构研究,主要包括度数中心性(Degree Centrality),亲近中心性(Closeness Centrality)和中介中心性(Betweenness Centrality)等等7。l 多层次关系的社区挖掘研究表明,在多层次社交网络的社区中。对于一种特定的需求下,不同的关系所产生的影响因子往往是不同的。所以应该根据特定的需求,对不同的关系进行线形组合,然后在此基础上计算影响因子并进行社区挖掘。这个研究方向的重要意义在于传统的、单一的网络并不能反映现实中真实的人际关系,而采用多层,立体的网络结构建模使得数学模型更精确,更贴近真实人际网络,能得到更为客观有效的社区挖掘结果8。l 大规模网络的社区识别随着社交网络的发展,网络节点数已达到千万甚至上亿级别,传统CNM算法的局限性就越发明显。所以最近几年,有不少学者关注于大规模网络的社区挖掘技术,具有代表性算法如日本学者Ken Wakita和Toshiyuki Tsurumi所提出的KT识别技术9。l 网络挖掘技术在社交网络的理论研究中,另外一个重要的课题是挖掘技术的研究,挖掘技术的研究在语义网的研究中扮演了越来越重要的角色。例如知识管理、 信息抽取、普氏计算等等。这个领域的研究大部分是利用搜索引擎来挖掘人际网络关系,最新的代表性技术是一种叫做POLYPHONET的社交网络抽取分析算法,该算法引入了一序列关于人际关系的识别,社区的挖掘,以及个人关键词挖掘等先进技术。目前,该领域的研究者主要关注如下两方面的问题,一是如何简化现有信息相关度的算法以使得整个衡量系统更易于整合,二是如何改进节点间的关系衡量算法,来加强对一些特定关系的衡量,例如个人和关键词相关度的计算,不同人际关系的分类等等10。2.2 网络用户行为2.2.1网络用户行为研究现状目前对于网络用户行为的研究主要集中于两方面:一是对网民的网络使用行为,包括网络使用方式、时间、频率、地点等进行实证调查与定量研究。对此国内外都已进行了不少大规模调查,这类调查一般都将重点倾向于网民的网络使用习惯、倾向、网龄、上网频率、上网时间、上网动机等问题上。美国加州大学洛杉矶分校就于2000起启动了世界互联网项目(World Internet Project),通过对不同国家和地区网民的网络使用状况进行调查,从而对各国互联网的社会影响进行评估,其中子项目“中国互联网项目”由中国社科院进行调查,并连续多年发布相关报告。在国内,中国互联网信息中心自97年起针对我国互联网的宏观状况、网民行为意识等每年发布两次统计报告。二是对网民的行为模式、行为类型与行为逻辑进行实证调查与理论分析。目前研究还是比较偏向于理论上的梳理与分析。在研究视角上基本延续了社会学的两种传统视角,或者将解释的焦点放在个人行为对社会结构的构建上,或者将解释的焦点放在社会结构对个人行为的制约上,主要分析的还是网络用户行为与人们在日常社会生活中的行为之间的区别,然后从这种区别中入手分析网络行为的实质与特征12。2.2.2本文对社交网络用户行为的定义本文对于社交网络用户行为的定义主要是指用户对于社交网站基本功能与用户生成内容(User Generated Content,简称UGC)的使用方式。主要包括网站访问、用户间互动交流、信息发布与分享、以及APP娱乐应用等,如图2-2所示:图2-2 社交网络主要用户行为2.3 聚类分析2.3.1聚类定义特征聚类分析研究有很长的历史,其重要性及与其他研究方向的交叉特性多年来一直受到得到人们的肯定。聚类是数据挖掘、模式识别等研究方向的重要研究内容之一,在识别数据的内在结构方面具有极其重要的作用。聚类主要应用于模式识别中的语音识别、字符识别等,机器学习中的聚类算法应用于图像分割和机器视觉,图像处理中聚类用于数据压缩和信息检索。聚类的另一个主要应用是数据挖掘(多关系数据挖掘)、时空数据库应用(GIS等)、序列和异类数据分析等。此外,聚类还应用于统计科学。值得一提的是,聚类分析对生物学、心理学、考古学、地质学、地理学以及市场营销等研究也都有重要作用13。从宏观上讲聚类是将物理或抽象对象的集合分成由类似的对象组成的多个类的过程。由聚类所生成的簇是一组数据对象的集合,这些对象与同一个簇中的对象彼此相似,与其他簇中的对象相异。但目前对于聚类并无一个学术上的统一定义,这里使用出Everitt在1974年关于聚类所下的定义:一个类簇内的实体是相似的,不同类簇的实体是不相似的;一个类簇是测试空间中点的会聚,同一类簇的任意两个点间的距离小于不同类簇的任意两个点间的距离;类簇可以描述为一个包含密度相对较高的点集的多维空间中的连通区域,它们借助包含密度相对较低的点集的区域与其他区域(类簇)相分离14。2.3.2聚类分析过程l 数据准备:包括特征标准化和降维l 特征选择:从最初的特征中选择最有效的特征,并将其存储于向量中。l 特征提取:通过对所选择的特征进行转换形成新的突出特征l 聚类:首先选择合适特征类型的某种距离函数(或构造新的距离函数)进行接近程度的度量而后执行聚类l 聚类结果评估:是指对聚类结果进行评估。评估主要分为外部有效。l 性评估、内部有效性评估和相关性测试评估2.3.3主要聚类分析方法由于多维数据集的复杂性,要求有不同的聚类方法对各种复杂数据类型进行分析。目前主要的聚类分析方法有以下几种:l 划分式聚类(partitioning methods)划分式聚类需要预先指定聚类数目或聚类中心,通过反复迭代运算,逐步降低目标函数的误差值,当目标函数值收敛时,得到最终聚类结果。使用这个基本思想的算法有:K-MEANS算法、K-MEDOIDS算法、模糊聚类算法以及图论算法15l 层次方法(hierarchical methods)这种方法对给定的数据集进行层次似的分解,直到某种条件满足为止。具体又可分为“自底向上”和“自顶向下”两种方案。例如在“自底向上”方案中,初始时每 一个数据纪录都组成一个单独的组,在接下来的迭代中,它把那些相互邻近的组合并成一个组,直到所有的记录组成一个分组或者某个条件满足为止。代表算法 有:BIRCH算法、CURE算法、CHAMELEON算法等16l 基于密度的方法(density-based methods)基于密度的方法与其它方法的一个根本区别是:它不是基于各种各样的距离的,而是基于密度的。这样就能克服基于距离的算法只能发现“类圆形”的聚类的缺点。这个方法的指导思想就是,只要一个区域中的点的密度大过某个阀值,就把它加到与之相近的聚类中去。代表算法有:DBSCAN算法、OPTICS算法、DENCLUE算法等l 基于网格的方法(grid-based methods)这种方法首先将数据空间划分成为有限个单元(cell)的网格结构,所有的处理都是以单个的单元为对象的。这么处理的一个突出的优点就是处理速度很快,通常这是与目标数据库中记录的个数无关的,它只与把数据空间分为多少个单元有关。代表算法有:STING算法、CLIQUE算法、WAVE-CLUSTER算法l 基于模型的方法(model-based methods)基于模型的方法给每一个聚类假定一个模型,然后去寻找能够很好的满足这个模型的数据集。这样一个模型可能是数据点在空间中的密度分布函数或者其它。它的一个潜在的假定就是:目标数据集是由一系列的概率分布所决定的。通常有两种尝试方向:统计的方案和神经网络的方案17。2.4 技术方法框架本文以数据挖掘的交叉产业标准过程(CRISP.DM)作为参考18,结合具体的社交网站数据挖掘需求,构建如下图技术方法框架:图2-3 社交网络用户行为数据挖掘过程3 基于网络爬虫技术的数据采集3.1 网络爬虫工作原理3.1.1 网络爬虫基本工作原理网络爬虫,即Spider , 通常是指遵循HTTP协议、根据其中的超链接以及WEB页面文档之间的索引关系来遍历万维网信息空间的软件程序。网络爬虫是一个功能强大的自动提取网页的程序,负责收集页面来源。网络爬虫通过访问某一URL页面,来获得此页面内其他URL,并且根据这些URL来遍历这个站点或者跳转到其他站点,从而实现遍历整个互联网空间,进而获得需要的URL集合。其主要工作原理如下图所示19:图3-1 网络爬虫基本原理如上所述,常见的搜索引擎类网络爬虫负责收集互联网世界的所有页面并且存储下来。除了以上通用爬虫之外,还有一些定向爬虫负责在一些细分领域收集特定信息。3.1.2 URL存在形态分析从联系的角度来看,互联网上的URL可分为有联系的和孤立的2类,如下图所示:图3-2 互联网URL分类大部分的URL都是相互关联的,比如从url-a出发,通过url-b、url-d可到达 url-f,所有关联的URL最后组成了一个复杂的网络结构。但是也存在一些URL,比如url-1、url-2等是相对孤立的,试图从url-a系列以及url-1等页面直接来获得另外url-2、url-3是不可能的。从URL的出现位置来可看, 我们可将URL的出现位置分为如下几类:l HTML静态标签HTML静态页面中存在大量URL入口,比如某页面存在A标签: <a href="">小白无双</a> , 通过解析A标签的结构,我们知道这里存在一个新的url链接类似的标签还有:<img src=”><form action="/form_action.php" method="POST"><frame src="frame_a.htm" /><script src="script.js" />因为这些链接是静止在页面内,属于比较容易发现的链接类型。在页面下载回来后,我们甚至可简单地通过正则表达式查找出这些链接。l 动态生成的链接这里说的动态生成的链接是指通过javasript/vbscript生成的链接,它们需要通过script脚本解释引擎来组装生成,如下伪代码:图3-3 script脚本动态生成链接代码从这段伪代码中,我们无法直接看出来存在什么链接,分析代码可知,变量URL由3个部分组成,path、page还有用户输入的id值。明显地,要知道最后的URL,需要在输入框里输入数据并且触发这个函数执行。l 用户交互中产生的新链接HTTP协议是请求-响应式的交互型模型,在WEB 2.0时代又在这一模型上深入发展,请求响应的形式更加多样化。云计算所使用的技术也大量使用了WEB 2.0技术,ajax数据请求方式被广泛使用,json、xml等格式的数据传递给爬虫的URL发现带来了困难。比如:在json的任意一个位置,都可能是一个URL,也可能看着像是URL,实际上只是一个不存在的URL字符串。为了确认其是否为URL,需要观察其行为表现,这些数据从服务端返回后,客户端实际去访问的URL字符串才是爬虫真正需要寻找的目标。l 存在于第三方组件里的URL在flash、silverlight等其他第三方组件里也存在URL链接,这些链接的生成需要对应的组件来解释。在flash应用中,我们点击某些按钮时,会触发一些新的网络请求,这些请求是通过内嵌的ActionScript来驱动的。silverlight以及一些其他第三方组件也是类似。3.2 定向爬虫定制本文以人人网数据为具体案例进行分析,因而需要对人人网特定数据进行抓取。通过定制人人网定向型爬虫,抓取指定网站上的数据。3.2.1通过wireshark抓包法分析HTTP协议Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。本文通过Wireshark抓取人人网HTTP协议。先启动wireshark程序,在capture>options 在弹出界面里选中你的网卡,双击,会弹出如下图所示的设置规则处。简单地,可使用规则Host加上人人站点域名。确定之后开始等操作下来就可开始抓包。图3-4 Wireshark规则设置图3-5 利用Wireshark抓包过程3.2.2分析网站行为本文通过火狐浏览器+firebug来分析网站行为:Firebug是火狐浏览器下的一款开发类插件,它可以对HTML、javascript和CSS等进行查看和编辑。本文主要通过它对网页页面代码进行分析,如下图所示:图3-6 通过firebug对网页代码进行查阅在观察到网页代码后,可制定对应的定向爬虫实现方案,例如从哪个页面开始,需要从这个页面中获得什么关键信息,哪些信息会在下一个页面中作为输入等,将整个流程进行整理,并判断什么情况下应当结束爬虫,最后再通过正则表达式来提取数据并实行定制爬虫。3.2.3正则表达式设计正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。在抓取网页的过程中,人人网页面有许多不相关内容在其中,因此需要通过正则表达式进行数据提取。由于采用Python语言进行编译,而正则表达式不属于Python的一部分,这里要通过re模块来提供对正则表达式的支持。使用re模块的一般步骤如下:l 先将正则表达式的字符串形式编译为Pattern实例,l 然后使用Pattern实例处理文本并获得匹配结果。本爬虫的具体正则表达式设计见详细下一节代码设计3.3代码设计本爬虫主要通过python语言实现。Python是一种面向对象、直译式计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。Python语法简捷而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够很轻松的把用其他语言制作的各种模块(尤其是C/C+)轻松地联结在一起。常见的一种应用情形是,使用python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,速度要求非常高,就可以用C+重写20。本爬虫主要通过python模块urllib2获取URL,并通过该模块来处理基本的认证以及cookies等。此外还要通过python的re模块来编译正则表达式抓取有效数据,程序使用模块如下图所示:本次定向爬虫的基本原理则是首先根据学校名字以及入学年份搜索到uid,然后通过uid获取此用户的日志数状态数等信息,最后将结果通过CSV格式输出。图3-7 主要使用模块3.3.1 UID获取l 首先根据学校名字以及入学年份搜索到uid,如下图所示图3-8 输入学校名称并简单判断图3-9 获取UID代码图3-10 获取UID部分代码图3-11 最终获取UIDl 通过UID获取用户其他信息图3-12 通过UID获取信息3.3.2以CSV格式对数据进行输出由于Weka软件可以对csv格式数据进行识别,则只需在抓取的每个属性之间加半角逗号(即,)作为分隔符即可:图3-12 数据输出格式设置3.3.3 爬虫设计过程中克服的技术难点在登陆人人网后,默认情况下遇到的第一个界面是用户登陆界面,正常情况下会通过登录网站然后收集数据。但分析发现,在多次登陆后会出现验证码,这对自动化的爬虫来是不合适的,同时登陆后频繁请求页面,可能会被监测到,进而干涉程序的运行。再分析就发现,其搜索入口页面可以在不登陆下的情况也能使用,并且在搜索页面可获取我们需要的部分数据。并且,在此情况下,在浏览器里点击时,有时会出现一个页面会提示这个用户的相关信息,比如日志数等。而如果我们直接指定用户ID就能固定出现此用户的相关信息,沿着这个思路就找到了不需要登陆下的数据采集方案,其实现代码如下:图3-13 不登录网站获取信息但是,目标是收集1万条以上的记录,分析发现在同一个搜索条件下,最多能看到500多条记录,显然根据一个搜索条件是不够的,这就需要构造多个搜索条件来进行大量数据查询。图3-14 设置多重搜索条件在解决以上问题之后,顺利设计出了人人网的爬虫程序。其运行结果如图3-16和图3-15所示。图3-15 输入学校名称及确定输出数据表格名称图3-16 数据爬取界面4 人人网用户行为数据聚类分析通过在人人网运行本文所设计的网络爬虫程序,最终采集到13000条关于北京交通大学同学在人人网的数据,每个单项数据具有9条属性:X(UID,入学年份,朋友数,访问数,名字,性别,日志数,相册数, 状态数,)对属性名称进行英文化处理后,所得到的人人网用户行为属性包括:X(UID,Year,Friends,Visitor,SEX,Log,Picture,States)。图4-1显示了所获取的数据集片段:图4-1 人人网用户行为属性数据集片段示例(CSV格式)以此为基础,本文将分别采用WEKA与SPSS软件对采集资料进行数据挖掘与分析。Weka的全名是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis),是一款免费的,非商业化(的,基于JAVA环境下开源的机器学习(machine learning)以及数据挖掘(data minining)软件。WEKA软件的标准应用格式是ARFF,但它也对DATA和CSV等几个常用格式进行支持,如下图所示。WEKA包含有一些常用的数据挖掘算法,并且可以自主添加新的算法,同时该软件也可以让数据属性以及最终结果可视化,所以得到了广泛应用。图4-2 通过ARFF-Viewer查看数据SPSS(Statistical Product and Service Solutions),中文译作“统计产品与服务解决方案”软件。SPSS主要包含有完整的数据输入、编辑、统计分析、报表、图形制作等功能。其中自带11种类型136个函数。SPSS提供了从简单的统计描述到复杂的多因素统计分析方法,比如数据的探索性分析、统计描述、列联表分析、二维相关、秩相关、偏相关、方差分析、非参数检验、多元回归、生存分析、协方差分析、判别分析、因子分析、聚类分析、非线性回归、Logistic回归等。是一款应用十分广泛的统计分析软件。4.1 数据预处理4.1.1数据格式标准化处理本小节阐述在进行聚类分析以前的数据预处理工作,主要是将数据格式标准化以符合weka标准数据格式:l 由于weka软件不能有效识别中文,因此首先将所有ID转换为英文l 由于CSV文件缺少属性名。而WEKA必须从CSV文件的第一行读取属性名,否则就会把第一行的各属性值读成变量名,因此在数据表头加入属性标示l 逐一删除Weka软件不能识别的缺少属性的无效单个数据(数据足够多无需做缺失值处理)l 删除对最终结果不产生影响的属性UIDl 将SEX属性数值化,将男性设为数值1,女性设为数值2l 经过上述操作后,通过Weka对属性进行可视化操作,可判断哪些数据仍然不符合数据挖掘处理的要求,如图4-2所示:图4-3 属性图形化处理通过上图可以很明显的看出ID与LOG属性需要进行进一步处理,考虑到用户ID不会对结果造成影响,属于用户行为的无关属性,所以直接将其忽略。图4-4 忽略ID属性l 对LOG属性的处理:对CSV格式的LOG属性进行排序,发现LOG属性最大值与最小值之间数值相差过大,在删除孤立的最大值10417之后发现LOG属性已能够被使用,如图4-3所示。图4-5 LOG属性恢复正常4.1.2通过SPSS描述数据特征在数据挖掘之前最好能够对所获数据的各项属性特征有所了解,则通过SPSS对数据集进行特征描述,如下图所示:图4-6 数据集特征4.1.3通过SPSS离散化数据离散化指把连续型数据切分为若干“段”,也称bin,是数据分析中常用的手段。切分的原则有等距,等频,优化,或根据数据特点而定。离散化数据主要有以下好处22:l 某些算法(例如决策树,NaiveBayes等)本身不能直接使用连续型变量,连续型数据只有经离散处理后才能进入算法引擎。因此将数据离散化之后可以使用更多算法。l 离散化可以有效地克服数据中隐藏的缺陷:使模型结果更加稳定。例如,通过离散化消除数据中的极端值与异常值等影响。l 有利于对非线性关系进行诊断和描述:对连续型数据进行离散处理后,自变量和目标变量之间的关系变得清晰化。如果两者之间是非线性关系,可以重新定义离散后变量每段的取值,从而大大提高模型的灵活度。SPSS软件可以对数据进行可视的离散化处理,并有等宽离散以及根据属性的平均或选定标准差离散等选择,如下图所示:图4-7 离散分割标准选择图4-8 YEAR属性离散化处理图4-9 Friend属性离散化处理图4-10 Picture属性离散化处理4.2聚类分析4.2.1聚类算法选取为了判断哪种聚类算法是最优选择,本文选取少量数据,通过Weka软件进行了试运算。其中Optics、Cobweb、Dbscan算法不能产生聚类簇,而SimpleKMeans、XMeans、FarthestFirst和MakeDensityBasedClusterer则会被Sex或是Years属性所误导,产生没有意义的聚类簇。图4-4显示了采用SimpleKMeans算法所得到的聚类结果。图4-7 K-Means聚类算法结果通过对不同算法的分析比较,本文发现,采用EM算法的聚类结果较为满意。分析原因,有可能是由对于抓取的数据处理不够精细,导致数据可能还存在有噪声等问题。而EM算法(Expectation-maximization algorithm,又译期望最大化算法),则是 Dempster,Laind,Rubin 于1977年提出的求参数极大似然估计的一种方法,它可以从非完整数据集中对参数进行MLE (Memory Limit Exceeded)估计,是一种非常简单实用的学习算法。这种方法可以广泛地应用于处理缺损数据,截尾数据,带有噪声等所谓的不完全数据(incomplete data)。这可能是该算法表现较好的原因。因此本文最终选取EM算法对数据进行挖掘21。EM(最大期望算法)主要经过两个步骤交替进行计算:l 第一步是计算期望(E),利用对隐藏变量的现有估计值,计算其最大似然估计值;l 第二步是最大化(M),最大化在 E 步上求得的最大似然值来计算参数的值。第二步上找到的参数估计值被用于下一个期望计算步骤中,这个过程不断交替进行,形成一个迭代过程。总体来说,EM的算法流程如下:l 初始化分布参数l 重复直到收敛:l E步骤:估计未知参数的期望值,给出当前的参数估计。l M步骤:重新估计分布参数,以使得数据的似然性最大,给出未知变量的期望估计。4.2.2 EM算法参数设置本文选取了EM算法的缺省参数,如下所示:l MaxIterations(最大迭代次数)=100l MinstdDev(最小权重)= 1.0E-6l NumClusters(集群数)=-1l Seed(种子数)=100其中,最大迭代次数表示重复执行E和M步骤,若结果不收敛,则反复迭代到100次结束。算法运行参数界面如图4-8所示。图4-8 EM算法运行参数设置界面如图4-8所示,数据集包括了12298条用户行为属性数据记录,采用了年份、好友数、访问数、性别、日志数、相册数和用户状态数作为用户行为聚类属性信息,而用户ID属性被忽略。4.3 聚类结果分析4.3.1EM算法结果图4-7显示了采用EM算法所得到的聚类结果。图4-9 EM算法的用户行为数据聚类结果由图4-9可以看出,EM算法将数据分为三部分聚类簇:入学年份 好友数 访客数 性