如何控制网络布局算法的异常节点?

     2023-05-08     161

关键词:

【中文标题】如何控制网络布局算法的异常节点?【英文标题】:How to control outlier nodes for network layout algorithms? 【发布时间】:2019-07-18 09:23:39 【问题描述】:

使用带有 Fruchterman-Reingold 布局算法的 igraph 包呈现大图(> 10000 个节点;> 10000 条边)。一些异常节点会使可视化变得困难,99% 的节点挤在一起,而 1% 的异常节点位于很远的地方。例如,99.9% 的节点位于 0 到 10 之间,但 0.1% 的节点位于 10000 之外。问题是如何控制这些异常节点以呈现所有节点。

这是一个示例,其中 0.2% 的异常值节点使完整呈现变得困难。

> library(igraph)
> ig <- erdos.renyi.game(12000,1/10000,directed=TRUE,loops=FALSE)
> set.seed(12)
> ig.layout <- layout_with_fr(ig)
> apply(ig.layout,2,quantile,c(0,0.001,0.01,0.1,0.9,0.99,0.999,1))
               [,1]         [,2]
0%      -54.7584289   -58.192821
0.1%    -49.8806632   -51.090376
1%      -29.7822097   -33.073435
10%      -0.2196407    -1.170996
90%      10.1564691    10.513665
99%    2026.5245335   737.739440
99.9% 16433.7302032 13168.400710
100%  22614.7986797 22284.309659

【问题讨论】:

【参考方案1】:

“控制”异常值的一种方法是消除它们。这将减少您最初的问题,但您仍然会遇到难以可视化的大图表。但是,让我们一次处理一件事。首先,异常值。

不幸的是,您在生成图表之后设置了种子。我将首先移动set.seed 语句,以便结果可重现。

library(igraph)
set.seed(12)
ig <- erdos.renyi.game(12000,1/10000,directed=TRUE,loops=FALSE)
ig.layout <- layout_with_fr(ig)
apply(ig.layout,2,quantile,c(0,0.001,0.01,0.1,0.9,0.99,0.999,1))
               [,1]          [,2]
0%    -5.359639e+01 -9.898871e+01
0.1%  -4.996891e+01 -5.046219e+01
1%    -3.040131e+01 -2.934615e+01
10%   -1.221806e-02  1.513951e-02
90%    1.207328e+01  1.130579e+01
99%    1.111746e+03  6.994646e+02
99.9%  1.418739e+04  1.182382e+04
100%   1.968552e+04  2.025938e+04

我得到的结果与你的相当。更重要的是,该图被异常值严重扭曲。

plot(ig, layout=ig.layout, vertex.size=4, vertex.label=NA,
    edge.arrow.size=0.4)

但是这些异常值是什么?

igComp = components(ig)
table(igComp$csize)
    1     2     3     4     5     6     7 10489 
 1041   137    42     8     5     1     1     1 

您的图表有一个非常大的组件和相当多的小组件。 “异常值”是小的、不连贯的组件中的节点。我的建议是,如果您想看图表,请消除这些小组件。只看大组件。

C1 = induced_subgraph(ig, which(igComp$membership ==1))

set.seed(12)
C1.layout <- layout_with_fr(C1)
apply(C1.layout,2,quantile,c(0,0.001,0.01,0.1,0.9,0.99,0.999,1))
            [,1]        [,2]
0%    -18.111038 -30.5068075
0.1%  -11.257167 -14.4507491
1%     -4.570292  -3.2830470
10%     0.124789   0.1836629
90%     7.182714   7.1506193
99%    12.291679  13.1523646
99.9%  26.812703  23.6325447
100%   35.186445  26.8564644

现在布局更合理了。

plot(C1, layout=C1.layout, vertex.size=4, vertex.label=NA,
    edge.arrow.size=0.4)

现在“异常值”消失了,我们看到了图表的核心。你现在有一个不同的问题。看 10500 个节点很难理解它,但至少你可以看到这个核心。祝您进一步探索顺利。

【讨论】:

如何在没有节点边缘重叠的情况下进行力导向布局

】如何在没有节点边缘重叠的情况下进行力导向布局【英文标题】:Howtomakeaforcedirectedlayoutwithnonode-edgeoverlapping【发布时间】:2019-04-2404:55:24【问题描述】:我正在努力改进强制定向布局算法(用于有向图)基本算法有效,即满... 查看详情

动态节能控制基于站点休眠的cdma的中继网络动态节能控制的matlab仿真

...了降低整个小区的功耗,基于节点休眠算法的调度和拓扑控制具有十分显著的效果,节点休眠算法的主要含义为当中继节点关闭以后,可以大大降低能耗,此时的中继节点失去了发送的能力,被称为休眠节点。而在一个大型的蜂... 查看详情

径向树布局算法

...这篇文章:http://gbook.org/projects/RadialTreeGraph.pdfCut我不知道如何通过第一级,即这是我到目前为止所写的:for 查看详情

如何理解神经网络里面的反向传播算法?

转载作者:知乎用户链接:https://www.zhihu.com/question/24827633/answer/91489990来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。一般都是用链式法则解释比如如下的神经网络前向传播对于节点来说... 查看详情

树图布局算法

】树图布局算法【英文标题】:TreeGraphLayoutAlgorithm【发布时间】:2013-04-2106:00:42【问题描述】:我有一个无环图-一棵树。图表的每个节点都有一些我需要在字形中显示的属性。假设每个字形的大小为100x100像素。我正在寻找一种... 查看详情

Spring Graph 算法 w 节点大小

...节点都有一个宽度和高度(是一个实体图)。谁能解释我如何将其纳入方程式?【问题讨论】:【参考方案1】:查看您创建的第一个链接,第240行:varrepuls 查看详情

fr算法(fruchterman-reingold)

网络图布局算法在写课设的时候为了实现前趋图的自动布局,参看了有名的网络图软件gephi,决定使用FR算法对节点进行自动布局。算法基本思想FR算法将所有的结点看做是电子,每个结点收到两个力的作用:1.其他结点的库伦力... 查看详情

如何获取图形工具中特定布局算法绘制的图形的坐标?

】如何获取图形工具中特定布局算法绘制的图形的坐标?【英文标题】:Howtogetthecoordinatesofagraphdrawnbyspecificlayoutalgorithmingraph-tool?【发布时间】:2012-12-1618:49:37【问题描述】:我想做here所示的示例。它在我的机器上运行良好。问... 查看详情

布局算法之树布局

...晰、一目了然。笔者在工程实践时,遇到这样一个问题:如何使得具有多个关系联系的点边图按照树形布局?在查阅了大量国内外资料的基础上,笔者找到了BillMill的一篇英文论文:drawingpresentabletrees。在这里先简单地描述一下... 查看详情

网络爬虫简介

...对就业来说非常有利 3.网络爬虫的组成(1)网络爬虫由控制节点、爬虫节点、资源库组成(2)控制节点,也就是爬虫节点的中央控制器,负责调用爬虫节点进行爬取(3)爬虫节点会按照相关的算法,对网页进行具体的爬取,爬取后... 查看详情

读懂反向传播算法(bp算法)

...理想。所以,现在的任务是,已知一个网络的loss之后,如何根据loss来更新参数呢?具体点即如何更新网络节点中的权重w和偏差b的值呢?这里我们采用的是全连接神经网络进行说明。要想把这个过程说清楚,首先需要将神经网... 查看详情

读懂反向传播算法(bp算法)

...理想。所以,现在的任务是,已知一个网络的loss之后,如何根据loss来更新参数呢?具体点即如何更新网络节点中的权重w和偏差b的值呢?定义元素这里我们采用的是全连接神经网络进行说明。要想把这个过程说清楚,首先需要... 查看详情

图形自动布局算法

】图形自动布局算法【英文标题】:Graphauto-layoutalgorithm【发布时间】:2011-06-2901:03:36【问题描述】:为了简化问题,我有一个图,其中包含位于2D平面上的节点和边。我想要做的是单击一个按钮,它会使图形自动布局看起来干净... 查看详情

graphanomalydetectionwithdeeplearning——节点检测

...ainGraphs平面图上的节点异常检测传统的异常检测方法基于网络表示的异常检测方法ANOSNDonAttributedGraphs属性图上的节点异常检测ANOSNDOnDynamicGraphs动态图上的节点异常检测传统非深度检测方法基于网络表示的检测方法基于GAN的检测方... 查看详情

graphanomalydetectionwithdeeplearning——节点检测

...ainGraphs平面图上的节点异常检测传统的异常检测方法基于网络表示的异常检测方法ANOSNDonAttributedGraphs属性图上的节点异常检测ANOSNDOnDynamicGraphs动态图上的节点异常检测传统非深度检测方法基于网络表示的检测方法基于GAN的检测方... 查看详情

quorum(nrw)算法机制简介

...由多个节点(指代一台服务器、存储设备等)构成,由于网络异常、宕机等节点并不能保证正常工作,特别是在节点数量很大的时候,出现异常状况的节点几乎是肯定的。为了保证系统的正常运行,能够提供可靠的服务,分布式... 查看详情

通过分区控制 Impala 中的数据局部性

...作很有帮助,在这种操作中,一个分区中的所有记录无论如何都需要在同一个位置(节点)(例如百分位数)。是否可以告诉Impal 查看详情

D3.js 网络图使用力导向布局和矩形节点

】D3.js网络图使用力导向布局和矩形节点【英文标题】:D3.jsnetworkgraphusingforce-directedlayoutandrectanglesfornodes【发布时间】:2015-08-1214:46:52【问题描述】:我正在尝试修改Mike的Force-DirectedGraph示例以使用矩形而不是圆形作为节点。另... 查看详情