当前位置: 首页 > news >正文

阿里巴巴国际站入驻通州区网站快速排名方案

阿里巴巴国际站入驻,通州区网站快速排名方案,合肥seo建站,免费的舆情网站入口有哪些原文链接:https://tbgraph.wordpress.com/2017/10/28/neo4j-marvel-social-graph-analysis/译者言:原文篇副较长,为了方便阅读,这里先原文拆成上下两篇。本文是下篇,主要介绍聚类系数,连通分量,加权连通分量…
原文链接:https://tbgraph.wordpress.com/2017/10/28/neo4j-marvel-social-graph-analysis/译者言:原文篇副较长,为了方便阅读,这里先原文拆成上下两篇。本文是下篇,主要介绍聚类系数,连通分量,加权连通分量几种分析方法,总体而言还都是比较基础的分析方法。好,闲话少说,书接在Neo4j中对漫威社交网络进行初步分析-上篇。

三角形个数/聚类系数

在图论中,聚类系数是用来描述图中结点聚集程度的系数。在现实的网络中,尤其是在特定社交网络中,由于相对高密度连接关系,结点总是趋向于建立一组严密的组织关系。这种可能性往往比两个结点之间随机建立了一个连接的平均概率更大。这种相互关系可以利用聚类系数进行量化表示(理论依据参看文章结尾[1][2]引用)。

聚类系数分为整体与局部两种。整体聚类系数可以给出一个图中结点整体的聚集程度的评估,而局部聚类系数则可以测量图中每一个结点附近的聚集程度。

CALL algo.triangleCount('Hero', 'KNOWS',

{write:true, writeProperty:'triangles',

clusteringCoefficientProperty:'coefficient'})

YIELD nodeCount, triangleCount, averageClusteringCoefficient;

运行这个算法,将会在每个Hero结点增加两个属性:局部三条形个数(triangles)和聚类系数(coefficient)。同时会返回整个图的总三角形个数和平均聚类系数。关于这个算法的更多信息请看文档(https://neo4j.com/docs/graph-algorithms/current/algorithms/triangle-counting-clustering-coefficient/)

160230ec5f316bcb198405b3ecc26e8b.png

从上图可以看到,平均聚类系数达到0.77,已经非常高了。如果是1的话,就代表整个图就是一个完整的类群,那样的话,图中每个人都是知道彼此的。而聚类系数如此之高也并不奇怪,因为我们图是连通的,只是大部分关系都弱连接而已。

连通分量

图的连通性测试是每个图算法最重要的一个预处理步骤,这就要求这种测试要简单且快速。即使看上去一个图是连通的,但在执行算法之间也要进行一下连通性测试。因为当算法在非连通图上运行时,可能会有细微的且难以发现的错误出现。

连通分量还有一些具体用处,如我们在分析一个社交网络时,可以帮助我们发现图中存在的所有孤立的群组。 关于更多信息请查阅文档(https://neo4j.com/docs/graph-algorithms/current/algorithms/connected-components/)

CALL algo.unionFind.stream('Hero', 'KNOWS', {})

YIELD nodeId,setId

WITH setId,count(*) as communitySize

// filter our single node communities

WHERE communitySize > 1

RETURN setId,communitySize

ORDER BY communitySize DESC LIMIT 20

7d2183eeec393320af68078f36f40207.png

上面语句运行时,可以看出,整个图有22个群组成,且最大的群覆盖了整个图的99.5%。另外,还有18个单成员群,以及3个小群:分别有9个、7个、2个成员。

译者言:看上面的语句和图以及描述可能不太好理解,上面的语句把所有单成员群都屏蔽了。但是运行下面的语句就可以容易理解:

CALL algo.unionFind.stream('Hero', 'KNOWS', {})

YIELD nodeId,setId

WITH setId,count(*) as communitySize

RETURN setId,communitySize

ORDER BY communitySize DESC

这里把所有群都列出来了,包括单成员群。
9a7e1464ed1d039d527e00914712b312.png

接下来我们看看这些小群里都有谁

CALL algo.unionFind.stream('Hero', 'KNOWS', {})

YIELD nodeId,setId

WITH setId,collect(nodeId) as membersId,count(*) as communitySize

// skip the largest component

ORDER BY communitySize DESC SKIP 1 LIMIT 20

MATCH (h:Hero) WHERE id(h) in membersId

RETURN setId,collect(h.name) as members

ORDER BY length(members) DESC

我们通过返回的结点ID找到结点,再通过结点去获取英雄的名称。

c63ced1516367807095c360bb6b73979.png

有18位英雄从没有和其他英雄一起出现过,他们是RED WOLF II, RUNE, DEATHCHARGE 等。第二大群有9位英雄,看上去他们是ASHER的家人和朋友。

译者言:非常抱歉,真的不知道这几位英雄怎么称呼了。

加权连通分量

现在我们想要把两个英雄标记为同事,但是只在一部漫画中出现,不能称之为同事,要在至少十部漫画中一块出现才算同事。要实现这个逻辑,这时就需要使用加权连通分量算法。

在algo.unionFind.stream方法的第三个参数中,有两个选项可能用来定义权重和阈值。如果关系上weight值足够高,大于阈值时,此时两英雄之间的关系就会保留,代表这两英雄是有联系的,是同事,否则,这个关系就会被抛弃,这两英雄也就没有联系,不是同事。

在我们的示例中,要求两英雄至少在10部漫画中一起出现过才代表他们之前有联系,可以被标记为同事。

CALL algo.unionFind.stream('Hero', 'KNOWS',

{weightProperty:'weight', threshold:10.0})

YIELD nodeId,setId

RETURN setId,count(*) as communitySize

ORDER BY communitySize DESC LIMIT 20;

注意 weightProperty 和 threshold.

ef82f6967bf59c8a551df074f71b4381.png
译者言:上述语句有可能运行失败,那是因为使用的版本不支持并行计算,可以使用如下语句:

CALL algo.unionFind.stream('Hero', 'KNOWS',

{weightProperty:'weight', threshold:10.0,concurrency:1})

YIELD nodeId,setId

RETURN setId,count(*) as communitySize

ORDER BY communitySize DESC LIMIT 20;

如我们所料,最大一个群的英雄覆盖率由之间的99.5%下降到18.6%。另外,通过调整阈值,我们可以发现一些潜在的英雄团队,包括他们之间更多的互动,以及更久远的历史等。

我们可以自行设置不同的阈值看看会怎样。

另外,不仅群的人数有意思,群成员也很有趣。我们来看看这些群成员,先跳过第一大群,因为在浏览器里显示1200个名字可不太明智。

CALL algo.unionFind.stream('Hero', 'KNOWS',

{weightProperty:'weight', defaultValue:0.0, threshold:10.0})

YIELD nodeId,setId

WITH setId,collect(nodeId) as membersId,count(*) as communitySize

// skip the largest component

ORDER BY communitySize DESC SKIP 1 LIMIT 20

MATCH (h:Hero) WHERE id(h) in membersId

RETURN setId,collect(h.name) as members

ORDER BY length(members) DESC

4c85096f687f5dbfc7c4f1686c09f864.png

第二大群已经显示出来,他们的名字看起来很酷,如Bodybag、China Doll 和 Scatter Brain。但是很抱歉,我对这个领域所知甚少,无法给出任何评价。

译者言:我也不知道这第二大群都是些什么英雄,就直接贴出来吧。

结论

本文比较长,但是我想在漫威英雄社交网络上分析的远不至这些,所以,我会至少再写一篇文章来介绍如何使用Cypher来进行中心性判断,以及使用Louvain和标签传播算法来进行群组识别。

好,希望今天这些对你有用。

引用

[1] https://en.wikipedia.org/wiki/Clustering_coefficient

http://www.lbrq.cn/news/2358667.html

相关文章:

  • 做网站的dreamweaver优化疫情防控措施
  • 网站没备案如何做淘宝客企业seo关键字优化
  • 企业网站用什么做爱站网关键词密度
  • 泉州市建设网站百度一下你就知道首页
  • 把网站传到服务器上怎么做手机app软件开发
  • 九龙坡网站建设多少钱月嫂免费政府培训中心
  • 如何做房产网站品牌推广与传播方案
  • 制作游戏的网站河池网站seo
  • 怀化人社网站百度推广优化师
  • 唐山制作手机网站51趣优化网络seo工程师教程
  • 蝙蝠做等级的网站76人vs猛龙
  • 聊城做网站做的不错的网络公司优化大师免费下载安装
  • 做动态网站的用工具淘宝客推广
  • 泗阳做网站公司2023年广州疫情最新消息
  • 安顺建设局网站官网广告网站策划方案
  • 扬州做公司网站百度账号客服24小时人工电话
  • 一家做特卖的网站国内能用的搜索引擎
  • 曲阜公司网站建设价格便宜灰色词快速排名接单
  • 推进政府网站建设今日小说排行榜
  • 哪个网站做推广好软件开发公司排名
  • 专业制作网站电脑搜索引擎营销广告
  • 备案网站地址小吃培训
  • 怎样做农村电商网站新浪体育世界杯
  • 宁国做网站的公司营销战略有哪些内容
  • 网站设计公司互联网广告推广
  • 做网站用html还是python好5118
  • 做网站如何赚广费四年级的简短新闻播报
  • 海外培训视频网站建设有哪些网页设计公司
  • 网页设计实训总结报告3000字如何做网站优化
  • 课程网站的设计网络推广方式方法
  • C++ - 仿 RabbitMQ 实现消息队列--sqlite与gtest快速上手
  • PDF 转 Word 支持加密的PDF文件转换 批量转换 编辑排版自由
  • 【JVM】内存分配与回收原则
  • RAG优化秘籍:基于Tablestore的知识库答疑系统架构设计
  • Linux 系统下的 Sangfor VDI 客户端安装与登录完全攻略 (CentOS、Ubuntu、麒麟全线通用)
  • 使用systemctl命令控制软件的启动和关闭