网络数据统计分析笔记|| 网络流数据分析

前情回顾:

Gephi网络图极简教程
Network在单细胞转录组数据分析中的应用
网络数据统计分析笔记|| 为什么研究网络
网络数据统计分析笔记|| 操作网络数据
网络数据统计分析笔记|| 网络数据可视化
网络数据统计分析笔记|| 网络数据的描述性分析
网络数据统计分析笔记||网络图的数学模型
网络数据统计分析笔记|| 网络图的统计模型
网络数据统计分析笔记|| 网络拓扑结构推断

网络流(network-flows)是一种类比水流的解决问题方法,与线性规划密切相关。网络流的理论和应用在不断发展,出现了具有增益的流、多终端流、多商品流以及网络流的分解与合成等新课题。网络流的应用已遍及通讯、运输、电力、工程规划、任务分派、设备更新以及计算机辅助设计等众多领域。

网络流(Network Flow)的相关定义:

源点:有n个点,有m条有向边,有一个点很特殊,只出不进,叫做源点。
汇点:另一个点也很特殊,只进不出,叫做汇点。
容量和流量:每条有向边上有两个量,容量和流量,从i到j的容量通常用c[i,j]表示,流量则通常是f[i,j].

通常可以把这些边想象成道路,流量就是这条道路的车流量,容量就是道路可承受的最大的车流量。很显然的,流量<=容量。而对于每个不是源点和汇点的点来说,可以类比的想象成没有存储功能的货物的中转站,所有“进入”他们的流量和等于所有从他本身“出去”的流量。
最大流:把源点比作工厂的话,问题就是求从工厂最大可以发出多少货物,是不至于超过道路的容量限制,也就是,最大流。先认识一下S(source)和T(sink)的概念。S就是常说的源点,T就是汇点(也就是起点和重点,这个跟最短路的概念是一样的)。我们有一张图,要求从源点流向汇点的最大流量(可以有很多条路到达汇点),就是我们的最大流问题(max flow)。


library(sand)
data(calldata)
names(calldata)
# ---
## [1] "Orig"    "Dest"    "DistEuc" "DistRd"  "O.GRP"
## [6] "D.GRP"   "Flow"
# ---

head(calldata)
      Orig             Dest DistEuc DistRd   O.GRP     D.GRP     Flow
1 Bruck/Le             Wien   36.14     37 7828880 285193984 57.61270
2 Bruck/Le       Mistelbach   61.46     81 7828880   7685130  1.39963
3 Bruck/Le      Wr.Neustadt   46.50     56 7828880  27369776 19.90791
4 Bruck/Le St.P<U+00BA>lten   88.60     96 7828880  24601360  3.90906
5 Bruck/Le           Zwettl  135.13    145 7828880   8143690  1.38712
6 Bruck/Le       Hollabrunn   78.75     85 7828880   6385840  1.49779
min.call <- min(calldata$Flow)
calldata$FlowCnt <- round(5 * calldata$Flow / min.call)
W <- xtabs(FlowCnt ~ Orig + Dest, calldata)
head(W)

            Dest
Orig         Amstetten BadIschl Bischofsh. Bruck/Le Bruck/Mur Feldkirch Freistadt   Graz Hartberg
  Amstetten          0     4222       6731      640      7235      6342      7160  10389     3950
  BadIschl        2514        0       3695     1184      2981      2192       990  13802     1194
  Bischofsh.      3113     3812          0     1095      5807      4926       649  17626     2259
  Bruck/Le        2812     1137       1902        0      2715      3865       261   8717     7369
  Bruck/Mur       7485     5337       7184      842         0     14447       529  38500     7360
  Feldkirch       3304      850        774     7593     71570         0       235 127013    31020
            Dest
Orig         Hollabrunn Innsbruck Judenburg Kirch/Krems Klagenfurt Landeck Leibnitz Lienz/Os Liezen
  Amstetten         522      4346      2610        4186       6767     715     1883     1452   9408
  BadIschl          620      3363      2232        3083       2640     512     1095      715   5157
  Bischofsh.       1195      6711      6011        1165      11946    1172     2378     1826  11635
  Bruck/Le         2925      2246      1486         836       4012     773     1339     1795   1006
  Bruck/Mur         494      8665      9391        2129      23218    1875     7887     1841     60
  Feldkirch        1217      7470     10397        1073       6040    1570    11627     3904  19740
            Dest
Orig           Linz Mistelbach Reutte Ried/Inn Salzburg Sp/Drau        St.P�lten        V�cklabruck
  Amstetten   92097       4455   1054     8286     6356    2365             2761              10190
  BadIschl    28618        338    196     6619    16401     653             3132              42022
  Bischofsh.  14742        844    556     7667    43725    6740             4770               7043
  Bruck/Le     7268       2734    413     1890     2363     750             7635               2559
  Bruck/Mur   18372        458   1639     2731     6052    3964             5402               4311
  Feldkirch   15229       6164   1423     4688     1110     806             9586               4748
            Dest
Orig           Wien Wolfsberg        W�rgl Wr.Neustadt ZellamSee Zwettl
  Amstetten   24920       692         2937        6439      3218   2393
  BadIschl    43925       264         1681        2968      1771    666
  Bischofsh.  12277      1915         5585        4153       811   1647
  Bruck/Le   112525       453         3502       38883       795   2709
  Bruck/Mur    9941      4789         6385        6326      3855    992
  Feldkirch  169658       348         3360       10088      6953   1498


g.cd <- graph_from_adjacency_matrix(W, weighted=TRUE)
in.flow <- strength(g.cd, mode="in")
out.flow <- strength(g.cd, mode="out")
vsize <- sqrt(in.flow + out.flow) / 100
pie.vals <- lapply((1:vcount(g.cd)),
   function(i) c(in.flow[i], out.flow[i]))
ewidth <- E(g.cd)$weight / 10^5
set.seed(42)
plot(g.cd, vertex.size=vsize, vertex.shape="pie",
   vertex.pie=pie.vals, edge.width=ewidth,
   edge.arrow.size=0.1)
calldata$lFlowCnt <- log(calldata$FlowCnt, 10)
calldata$lO.GRP <- log(calldata$O.GRP, 10)
calldata$lD.GRP <- log(calldata$D.GRP, 10)
calldata$lDistRd <- log(calldata$DistRd, 10)

library(car)
scatterplotMatrix( ~ lFlowCnt + lO.GRP + lD.GRP + 
   lDistRd, data=calldata, regLine=list(col="red"),
   smooth=list(spread=FALSE,col.smooth="goldenrod"),
   col="powderblue")

以上可以看成是特征选择

formula.s <- FlowCnt ~ lO.GRP + lD.GRP + lDistRd


formula.g <- FlowCnt ~ Orig + Dest + lDistRd


gm.s <- glm(formula.s, family="poisson", data=calldata)
gm.g <- glm(formula.g, family="poisson", data=calldata)


summary(gm.s)

Call:
glm(formula = formula.s, family = "poisson", data = calldata)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-475.06   -54.16   -29.20    -2.09  1149.93  

Coefficients:
              Estimate Std. Error z value Pr(>|z|)    
(Intercept) -1.149e+01  5.394e-03   -2131   <2e-16 ***
lO.GRP       1.885e+00  4.306e-04    4376   <2e-16 ***
lD.GRP       1.670e+00  4.401e-04    3794   <2e-16 ***
lDistRd     -2.191e+00  7.909e-04   -2770   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for poisson family taken to be 1)

    Null deviance: 45490237  on 991  degrees of freedom
Residual deviance: 10260808  on 988  degrees of freedom
AIC: 10270760

Number of Fisher Scoring iterations: 5

gm.g$aic
# ---
## [1] 5466814
# ---
gm.s$aic
# ---
## [1] 10270760
# ---

# CHUNK 11
plot(calldata$lFlowCnt,log(gm.g$fitted.values,10),
   cex.lab=1.5,
   xlab=expression(Log[10](paste("Flow Volume"))),
   col="green", cex.axis=1.5, ylab="", ylim=c(2, 5.75))
mtext(expression(Log[10](paste("Fitted Value"))), 2,
   outer=T, cex=1.5, padj=1)
clip(0.5,5.75,2,5.75)
abline(0, 1, lwd=2, col="darkgoldenrod1")

res <- residuals.glm(gm.g, type="response")
relres <- res/calldata$FlowCnt
lrelres <- log(abs(relres),10)
res.sgn <- (relres>=0)

plot(calldata$lFlowCnt[res.sgn], lrelres[res.sgn],
   xlim=c(0.5,5.75), ylim=c(-3.5,3.5),
   xlab=expression(Log[10](paste("Flow Volume"))),
   cex.lab=1.5, cex.axis=1.5, ylab="", col="lightgreen")
mtext(expression(Log[10](paste("Relative Error"))), 2,
   outer=T, cex=1.5, padj=1)
par(new=T)
plot(calldata$lFlowCnt[!res.sgn], lrelres[!res.sgn],
   xlim=c(0.5,5.75), ylim=c(-3.5, 3.5),
   xlab=expression(Log[10](paste("Flow Volume"))),
   cex.lab=1.5, cex.axis=1.5, ylab="", col="darkgreen")
mtext(expression(Log[10](paste("Relative Error"))), 2,
   outer=T, cex=1.5, padj=1)
clip(0.5,5.75,-3.5,3.5)
abline(h=0, lwd=2, col="darkgoldenrod2")
网络流的预测:流量矩阵估计

有了网络链路上的流量测量,再加上力量在起讫点间链路上分布方式的知识,对于我们准确预测起讫点间的流量就足够了。这被称为流量矩阵预测(traffic matrix estimation )。

流量矩阵是一个二维矩阵与其邻接矩阵元素,tij决定的流量采购从节点我和退出节点j。tij价值也被称为交通需求和每个需求代表的数量每一对网络节点之间的数据传输。在由4个节点组成的网络中,每个节点是一个流量源或一个流量汇聚,流量矩阵包含12个需求(图5a)。当节点1、2代表流量源,节点3、4代表流量目的地时,只有4个需求(图5b)。

library(networkTomography)
data(bell.labs)


g.bl <- graph_from_literal(fddi:switch:local:corp 
                            ++ Router)
plot(g.bl)
B <- bell.labs$A
Z <- bell.labs$X
x <- bell.labs$Y

# CHUNK 16
library(lattice)
traffic.in <- c("dst fddi","dst switch",
   "dst local","dst corp")
traffic.out <- c("src fddi","src switch",
   "src local","src corp")
my.df <- bell.labs$df
my.df$t <- unlist(lapply(my.df$time, function(x) {
     hrs <- as.numeric(substring(x, 11, 12))
     mins <- as.numeric(substring(x, 14, 15))
     t <- hrs + mins/60
     return(t)}))

# Separate according to whether data
# are incoming or outgoing.
my.df.in <- subset(my.df, nme %in% traffic.in)
my.df.out <- subset(my.df, nme %in% traffic.out)


# Set up trellis plots for each case.
p.in <- xyplot(value / 2^10 ~ t | nme, data=my.df.in,
   type="l", col.line="goldenrod",
   lwd=2, layout=c(1,4),
   xlab="Hour of Day", ylab="Kbytes/sec")
p.out <- xyplot(value / 2^10 ~ t | nme, data=my.df.out,
   type="l", col.line="red",
   lwd=2, layout=c(1,4),
   xlab="Hour of Day", ylab="Kbytes/sec")
 
# Generate trellis plots.
print(p.in, position=c(0,0.5,1,1), more=TRUE)
print(p.out, position=c(0,0,1,0.5))

B.full <- rbind(B, 2 - colSums(B))
write.table(format(B.full),
   row.names=F, col.names=F, quote=F)
# ---
## 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
## 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0
## 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0
## 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1
## 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0
## 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0
## 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0
## 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1
# ---

层析引力方法(tomogravity algorithm )

计算机通信网络的建模和分析产生了各种有趣的统计问题。本文讨论了网络的tomog- raphy问题,tomog- raphy用于描述两类大容量逆问题。第一个处理被动层析成像,即在单个路由器/节点级别收集聚集数据,其目标是恢复p级信息。这里的主要问题是估计出发地-目的地转换矩阵。第二种方法是主动层析成像,它利用重构链路级信息fr的方法进行数据分析

x.full <- Z %*% t(B.full)
tomo.fit <- tomogravity(x.full, B.full, 0.01)
zhat <- tomo.fit$Xhat

# CHUNK 19
nt <- nrow(Z); nf <- ncol(Z)
t.dat <- data.frame(z = as.vector(c(Z) / 2^10),
   zhat = as.vector(c(zhat) / 2^10),
   t <- c(rep(as.vector(bell.labs$tvec), nf)))

od.names <- c(rep("fddi->fddi", nt),
   rep("fddi->local", nt),
   rep("fddi->switch", nt), rep("fddi->corp",nt),
   rep("local->fddi", nt), rep("local->local",nt),
   rep("local->switch", nt), rep("local->corp",nt),
   rep("switch->fddi", nt), rep("switch->local",nt),
   rep("switch->switch", nt), rep("switch->corp",nt),
   rep("corp->fddi", nt), rep("corp->local",nt),
   rep("corp->switch", nt), rep("corp->corp",nt))

t.dat <- transform(t.dat, OD = od.names)

xyplot(z~t | OD, data=t.dat,
   panel=function(x, y, subscripts){
     panel.xyplot(x, y, type="l", col.line="blue")
     panel.xyplot(t.dat$t[subscripts], 
                  t.dat$zhat[subscripts], 
                  type="l", col.line="green")
   }, as.table=T, subscripts=T, xlim=c(0,24),
   xlab="Hour of Day", ylab="Kbytes/sec",
   layout=c(4,4))



https://blog.csdn.net/BigFatSheep/article/details/78771897
https://blog.csdn.net/dengtiaolu0407/article/details/102199361?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param
https://www.cnblogs.com/FibonacciHeap/articles/9691400.html
基于引力模型的区域物流需求预测研究
https://sites.cs.ucsb.edu/~suri/cs231/Flows.pdf
http://www.cs.cmu.edu/~ckingsf/bioinfo-lectures/y2h.pdf
https://www.noction.com/knowledge-base/network-capacity-planning
Traffic matrix estimation: A neural network approach with extended input and expectation maximization iteration

https://rdrr.io/cran/networkTomography/
https://arxiv.org/pdf/0708.0945.pdf

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 222,000评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,745评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,561评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,782评论 1 298
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,798评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,394评论 1 310
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,952评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,852评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,409评论 1 318
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,483评论 3 341
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,615评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,303评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,979评论 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,470评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,571评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,041评论 3 377
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,630评论 2 359