r语言基于聚类的微博用户画像研究 附代码数据

更新时间:2023-12-08 09:27:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Taobao 大数据部落

基于聚类的微博用户画像研究

聚类分析(Clustering Analysis):根据在数据中发现的描述对象及其关系的信息,将数据对象分组。其目标是,组内的对象互相之间是相似的(相关的),不同组中的对象是不同的(不相关的)。组内的相似性越大,组间差别越大,聚类就越好。就理解数据而言,簇是潜在的类,而聚类分析就是研究自动发现这些类的技术。

这类算法首先要确定聚类数目和聚类中心,通过反复迭代的方法得到最终的聚类结果。典型的基于划分的聚类方法有:K-means 算法、K-modes 算法、FCMC算法和K-medoids算法等。这些算法对在小规模的数据集中发现球状类别很有效。 K-means算法

K均值算法(K-means)是一种迭代算法,初始的k个簇被随机的定义之后,这些簇将被不断地更新,并在更新中被优化,当无法再进一步优化(或者达到一定的迭代次数)时算法才停止,然后生成模型。

在K-means算法中,每个簇有一个中心,称为“质心”,k个簇就相应地有k个质心。一个样本究竟被划分到哪个簇,就看它和哪个质心的“相异度”最小。在K-means算法中,衡量相异度的指标是“距离”(distance)。

所以也可以这么说,一个样本究竟被划分到哪个簇,就看它和哪个质心的“距离”最小。这里的距离,则是由样本的每一个属性的取值来共同参与决定的。

虽然K-means算法产生的结果通常是不错的,但是在时间上并非是高效的,并且不具有很好的可伸缩性,因此,很多学者对K-means算法进行了诸多改进,例如一些K-means算法的改进研究是提高找到全局最优解可能性的途径,通常采用谨慎地选择初始簇和均值这样的策略,另一个变种是允许簇的分裂与合并,通过检查簇的方差,若过大则将簇分裂。类似地,若两个簇质心之间的距离小于一个预先定义的阐值,则合并它们。

DBSCAN:基于密度的聚类

简单的说就是根据一个根据对象的密度不断扩展的过程的算法。一个对象O的密度可以用靠近O的对象数来判断。学习DBSCAN算法,需要弄清楚几个概念: 一:基本概念

Taobao 大数据部落

1.??领域:对象O的??领域是与O为中心,与?为半径的空间。参数??0,是用户指定每个对象的领域半径值。

2.MinPts(领域密度阀值):对象的??领域的对象数量。

3.核心对象:如果对象O的??领域对象数量至少包含MinPts个对象,则该对象是核心对象。

4.直接密度可达:如果对象p在核心对象q的??领域内,则p是从q直接密度可达的。

5.密度可达:在DBSCAN中,p是从q(核心对象)密度可达的,如果存在对象链p,p,p...,p123n,使得

ip?q,p1n?p,

p1i?1是从p关于?和MinPts直接密度可

i达的,即

pi?1在

p的??领域内,则p到pn密度可达。 26.密度相连:如果存在对象q?D,使得对象度可达的,则称

p和P1都是从q关于?和MinPts密

p,P12是关于?和MinPts密度相连的。

二:密度可达和密度相连 这里半径为?,MinPts?3

图1基于密度的聚类中的密度可达和密度相连性

Taobao 大数据部落

由上图可看出m,p,o.r 都是核心对象,因为他们的??领域内都只是包含3个对象。

1.对象q是从m直接密度可达的。对象m从p直接密度可达的。

2.对象q是从p(间接)密度可达的,因为q从m直接密度可达,m从p直接密度可达。

3.r和s是从o密度可达的,而o是从r密度可达的,所有o,r和s都是密度相连的。

DBSCAN聚类过程

1.DBSCAN发现簇的过程

初始,给定数据集D中所有对象都被标记为“unvisited”DBSCAN随机选择一个未访问的对象p,标记p为“visited”,并坚持p的??领域是否至少包含MinPts个对象。如果不是,则p被标记为噪声点。否则为p创建一个新的簇C,并且把p的??领域中所有对象都放在候选集合N中。DBSCAN迭代地把N中不属于其他簇的对象添加到C中。在此过程中,对应N中标记为“unvisited”的对象P',DBSCAN把它标记为“visited”,并且检查它的??领域。如果P'的??领域中的对象都被添加到NZ中。DBSCAN继续添加对象到C,知道C不能扩展,即知道N为空。此时簇C完成生成,输出。

为了找到下一个簇,DBSCAN从剩下的对象中随机选择一个未访问过的对象。聚类过程继续,直到所有对象都被访问。

2.DBSCAN聚类算法流程

Taobao 大数据部落

轮廓系数

轮廓系数(Silhouette Coefficient)结合了聚类的凝聚度(Cohesion)和分

'11. If p的??领域至少有MinPts个对象,把这些对象添加到N; ''算法:DBSCAN,一种基于密度的聚类算法 输入: D:一个包含n个对象的数据集 ?:半径参数 MinPts:领域密度阀值 输出:基于密度的簇的集合 方法: 1.标记所有对象为unvisited; 2.Do 3.随机选择一个unvisited对象p; 4.标记p为visited; 5.If p的??领域至少有MinPts个对象 6. 创建一个新簇C,并把p添加到C; 7. 令N为p的??领域中的对象集合 8. For N中每个点p 9. If p是unvisited; 10. 标记p为visited; '''12. 如果p还不是任何簇的成员,把p添加到C; 13. End for; 14. 输出C; 15.Else标记p为噪声; 16.Until没有标记为unvisited的对象; Taobao 大数据部落

离度(Separation),用于评估聚类的效果。该值处于-1~1之间,值越大,表示聚类效果越好。具体计算方法如下: 1.

对于第i个元素x_i,计算x_i与其同一个簇内的所有其他元素距离的平均值,记作a_i,用于量化簇内的凝聚度。 2.

选取x_i外的一个簇b,计算x_i与b中所有点的平均距离,遍历所有其他簇,找到最近的这个平均距离,记作b_i,用于量化簇之间分离度。 3. 4.

对于元素x_i,轮廓系数s_i = (b_i – a_i)/max(a_i,b_i) 计算所有x的轮廓系数,求出平均值即为当前聚类的整体轮廓系数从上面的公式,不难发现若s_i小于0,说明x_i与其簇内元素的平均距离小于最近的其他簇,表示聚类效果不好。如果a_i趋于0,或者b_i足够大,那么s_i趋近与1,说明聚类效果比较好。

基础属性维度挖掘

包括身份信息,粉丝数,关注数,微博属性(是否是会员认证),地域信息,年龄,性别等一些静态属性,通过用户关注数,粉丝数,微博数,收藏数指标进行聚类分析,聚类方法采用k-means和DBScan这个方法,进行对比试验,k取值从3到7,最终的聚类效果采用轮廓系数进行检测(最终希望后面的聚类效果比k-means要好),然后再把聚出来的类别与前面的性别,地域等信息进行相关分析

本文来源:https://www.bwwdw.com/article/fd3t.html

Top