当前位置:文档之家› 针对微博用户信息的数据挖掘分析

针对微博用户信息的数据挖掘分析

针对微博用户信息的数据挖掘分析数据挖掘什么是数据挖掘?百度百科上定义,数据挖掘是“一种透过数理模式来分析企业内储存的大量资料,以找出不同的客户或市场划分,分析出消费者喜好和行为的方法”。

简单来说,就是通过一定的分析,找出大量的数据中隐藏的一些特殊的相关性或者规律,并由这些规律挖掘出一些事物的特性。

数据挖掘被广泛运用于企业的运营和发展中,企业常常通过对源自客户的大量的数据的分析,以获取客户的特性,由此尽可能应和客户的需求,从而能够在市场上博取更多消费者的青睐,以更具竞争力。

分类分析、聚类分析和关联分析是数据挖掘的三大主要任务。

在本项目中,重点运用到了聚类分析,并辅以关联分析。

聚类分析主要任务是确立某一个对象属性作为标准(如空间坐标、时间等),然后根据数据对象在该属性上的相近程度或密集程度,将数据对象分成不同的簇,使得相比之下在同一个簇中的对象具有很高的相似性,并由此导出规则;而关联分析则是根据对象的属性,得出对象与其他对象之间隐含的关联,并得出规律,以便达到以下目的:给出某一个对象的某一种属性,便可知道该种情况包含了其他哪些对象的哪些属性。

聚类和关联分析在文章接下来会有更加详细的描述异常分析、特异群组分析和演变分析是数据挖掘的另外三大任务,在这里我们不作详细描述。

微博数据分析网络社交平台已经是现代人的生活中不可缺少的一部分,脸书、推特、人人、QQ、微博、微信等等类似的社交平台层出不穷,而这样的社交平台中无疑蕴含着大量的信息。

企业可以分析这些数据,大致提取出用户的特征和生活规律,了解客户的需求,以便更好的利用这个平台,扩展业务,从而获取更大的盈利。

对这些企业来说,这无疑是一个巨大的商机。

本项目的工作“基于空间轨迹和发博特点的微博用户特征数据分析”的主要任务是通过分析微博用户所发过的大量的微博中的时间及空间坐标,来得出用户的工作地/居住地、活动性、消费水平(消费偏好)、职业、亲子状况(孩子年龄)等特征及偏好,并最终提取出上述各种属性的关系,运用关联分析勾画出该用户的立体形象。

下面,本文将对用户的活动性(及工作地/居住地)这一属性的分析及其相对应的数据挖掘分析,及其后续改进工作进行重点描述,并对关联规则的初步应用简要提及。

1、用户活动性、工作地/居住地我们用活动性来衡量一个用户的活跃程度,即判断该用户是尝尝四处奔波,还是喜欢老呆在家的“宅男宅女”。

在这里我们将活动性划分为四个不同的层次:(1)活跃型;(2)较为活跃型;(3)较为安静型;(4)安静型。

开始工作,我们将用户A的原始微博数据的坐标点打在全局坐标轴上,然后运用聚类,将坐标轴上的点聚成簇,剩下未被聚成簇的点作为离群点。

簇和离群点是聚类分析中两个重要的概念。

多数聚类方法都拥有一定的标准将给定的数据集聚成簇,并给出不属于任何一个簇的点,即为离群点。

聚类方法根据四个不同的基准被划分为四大类:基于划分的聚类方法、基于密度的聚类方法、基于层次的聚类方法、基于网格的聚类方法。

而每一大类方法又有不同的具体的算法。

在研究用户A的活动性的分析中,我们使用基于密度的方法中的DBSCAN算法。

DBSCAN算法DBSCAN算法是一种基于密度的聚类方法。

算法事先规定两个参数:Eps(最大半径,该参数约定了聚类结果中的簇的半径上限)和MinPts(最小点数,该参数约定了聚类结果中的簇内含点数的下限)。

规定好了这两个参数之后,DBSCAN算法根据这两个参数的值,通过不断建立核心对象和抓取密度可达点将全局的数据点进行聚类1,基本原理是依据密度的疏密将密度趋于密集的点群聚成一簇,而处在较稀疏环境中的点则更趋于被视为离群点,因而DBSCAN算法属于基于密度的聚类方法。

回到我们的用户A上来,我们的聚类结果如图1所示图1这是我们用weka软件(一种数据挖掘分析工具,在这里不作详细介绍)中自带的DBSCAN 聚类方法生成的聚类结果效果图(其中簇已经在图中圈出,未圈出的点为离群点。

两个参数选取的均是weka软件提供的默认值),我们看到,该用户的所有活动点2被聚为4簇,另有少量离群点。

根据源数据3判断大约占用户A所有活动点的2.88%。

做好了聚类处理之后,我们进一步将聚类结果转化为活动性的衡量标准,即衡量用户A 是活跃型、较为活跃型、较为安静型,还是安静型。

在这里,我们定义一个公式:λX+(1-λ)Y = Z其中X代表所聚的簇的个数,Y代表离群点的比例(保留三位小数),λ是自定义的一个参数。

这个公式的思想如下:我们知道数据集中的簇,可以看做是该用户的常去的地方,1《数据挖掘概念与技术》原书第3版Jiawei Han, Micheline Kamber 著;范明,孟小峰译;机械工业出版社2012.7 版2即数据点3源数据已配套给出一般如住宅、工作单位等等;而离群点,则一般为用户在闲暇时间的一些行踪,如放假期间外出购物、踏青及访友等等。

那么这样的离群点比例越大,说明该用户越喜欢外出而不是呆在家中。

至于聚出的簇,先前说明了这一般是用户常去的地方,如住宅等等。

但如果这样的簇过多,那么则代表用户的常去地点较多,这意味着用户可能有许多住宅,或者是经常来往各亲友家。

总之这样的簇如果较多,也能说明用户的活跃程度较高。

参数λ的选取,则是通过不断的试验而调试的结果。

这里我们以0.05为间隔选取了0.1-0.5之间的所有可能的系数,然后分别将其结果近似拟合成正态分布,选取图像合理者为最终系数。

至于分别用λ和1-λ作为系数的原因,是因为实际上这里的λ属于一个权重值,作为簇的个数和离群点的比例在活动性大小基准中的一个权重系数,因为簇和其相关的离群点构成了一个完整的数据集。

而结果Z,则是一个量化的标准,用来衡量活动性的大小,我们依据合适的方法,选取三个阀值,将Z值划分为四个不同的区间,用来代表四种不同程度的活跃性。

当然,这个公式只是为了使聚类结果应用于实际的一个后续处理。

我们讨论的重点应该回归到数据挖掘算法本身。

然而,上述数据挖掘的DBSCAN算法有一个不可忽视的弱点,就是DBSCAN的两个参数Eps和MinPts均只能是先固定,然后为了不使工作量过于繁重,我们将每一个用户都使用这一事先固定的标准。

然而每个用户的数据点的数量及分布特点必会存在着或多或少的差异,所以这就造成了部分聚类结果显得不是十分合理。

形象地说,我们说数据较少的用户(即那些发微博较少的用户),他的簇的个数总是趋于少的,离群点比例也不会很多,那么这样得出来的Z值就会较少,那么一句我们之前的标准,这个用户的活动性就趋于安静。

而相对而言如果另外有一个发微博较多的用户,他的数据中聚出的簇的个数比上一个客户稍多,那么他的Z值也会趋于较大。

但是不排除这样一种情况,前一个用户发微博虽少,然而在他所发的有限的微博所形成的数据集中,点与点之间的空间分布较为稀疏(以他本人自身的数据为参照),而由于参数不变的原因,致使他的很多点被包含进一个簇,导致了他的活动性看似较低的一种假象,而另外发微博较多的用户实际上行踪更偏固定,这就造成了结果与实际情况的一种潜在的偏差。

为了改善这种偏差,我们在因特网上搜寻前人的各种可能的解决算法,我们发现了曾经有人将DBSCAN算法改进为VDBSCAN算法4,这个算法定义了一个参量K,然后将各点到距该点第K近的点的距离收集起来,画出坐标图,如图2所示。

在这里他选区的K为4图2接下来,作者选取图中B(A曲线为参照),依据纵坐标的导数结果再作出下图,即图3所示4《VDBSCAN:变密度聚类算法》周董,刘鹏;上海财经大学,信息管理与工程学院,上海,20433;2009年图3从图中我们可以看出图2纵坐标的导数值存在几个峰值,而图2的纵坐标则表示的是每个点到其第K近的点的距离,那么它的导数值无疑就反映了各距离的差值,也就是说出现峰值的时候,峰值所在的点所处的区域的疏密程度与前一个点有着较大的差异。

依据这一关键,我们就可以选取图3的一个最显著的峰值,并找到其在图2中所对应的距离,来作为最终的最大半径值,即Eps,并将最小点数MinPt设为该峰值在图2中所对应的横坐标,并将其代入DBSCAN算法进行聚类。

但这样的话依旧有一个问题没有解决,就是如何确定这个K值。

在这里,我们对其进行了进一步的研究,并发表论文《Improve VDBSCAN with Global Optimum K》5,当然,里面肯定会存在一些值得商榷的问题,欢迎各位读者批评指正。

说完了活动性,下面再谈一下用户的工作地/居住地。

实际上,运用与用户工作地/居住地的数据挖掘聚类算法与分析用户活动性的聚类算法是一样的,都是以DBSCAN聚类算法为基础,将单个用户的数据集聚类完毕后,在对聚类结果进行一些细节上的不同的处理。

我们还是以前面提及的用户A为例。

如上文图1所示,用户A的活动点被聚成了4个簇。

在这里我们需要结合时间,对每一个簇内所含点进行时间的归类,按照一定的标准得到白天点和晚上点。

并统计一个簇内白天点和晚上点分别占的比例,选取合适的标准,将簇分为白天簇和晚上簇,然后将点数最多的白天簇视为工作地,点数最多的晚上簇视为居住地。

DBSCAN算法在我们的微博数据挖掘项目中还用在了上述分析之外的许多其他方面,如城市商圈的划分等。

城市商圈的划分对于评价用户的消费水平具有重要意义,但其基本原理也是基于DBSCAN算法,并结合一定的经济学原理,将城市中位置相近的一处消费区按照一定规律聚为一个商圈,并将结果作为基础进行用户的消费水平的一种研究手段。

当然,商圈的研究我们还在进行中。

2、关联规则的初步应用因为需要对用户的大致生活规律及个性特点有一个较为立体化的描述,所以我们需要将现在分析好的用户属性做一个有机的结合。

每一个用户都有活动性、工作地/居住地、消费水平、职业及亲子状况等属性,而这些属性大多是连续属性,即都具有不同的程度作为衡量5已配套给出的标准。

而数据挖掘教材6上讲的关联属性大多是针对不连续数据的操作,最典型的便属Apriori算法。

而我们为了满足解决连续属性的关联分析的要求,在Apriori算法的基础上作了改进,并为此发表了论文《Improve Apriori for Continuous Attributes》7。

算法验证1、活动性算法验证我们使用DBSCAN算法作为主要算法研究用户的活动性,并用公式定量衡量活动性的大小。

当然,在衡量活动性大小这一环节,我们同时运用另外一种聚类算法做为验证:基于划分的K均值算法8。

我们根据由DBSCAN算法给出的每个用户所聚的簇的个数以及离群点比例的结果,一句K均值算法进行聚类,并作出分别以离群点比例和簇的个数作为横纵坐标的图像,来形容一个用户的活动性大小。

具体图像已经在相关压缩包里给出。

此外,我们还在研究一种聚类结果合理度的一种验证算法。

相关主题