uni farm

networkxで2部グラフ解析 - 可視化 -

networkxを使って、2部グラフのネットワーク解析をしてみたい

手軽に読み込めるデータセットがあったので、まずは可視化からやってみる

環境

  • python: 3.6.8
  • networkx: 2.4

やってること

関数を使えばたいていの解析はできるが、何をしているかわからないと解釈できないので、簡単ではあるが用語の説明も入れていく

2部グラフとその射影

2部グラフはノードU, VエッジEとするとG(U,V;E)G(U,V;E)のように表記する。すなわち、ノードが2種類あるグラフ構造のことを指す

例えばUを論文、Vを著者とすると共著関係を表すネットワークになる

どちらかのノードについて注目する時、射影(projection)というものを取って解析していく

Uの射影グラフを考えてみる。ノードはUのみになる。エッジは、あるVのノードvを介してつながるUのノードu1,u2の間にリンクを生成する。要はVを介してつながるUをつなげたものになる。Uの射影をG(U,E)G’(U,E’)などと表記する

実装

使っているデータセットはDavis Southern Club Women というデータセット、networkxに組み込んであるので、何か準備する必要はない

非公式な社交行事(informal social events)に出席した女性を紐づけている。各女性同士のつながりがどこで生じたかを通じて、社会運動がどう生じていったかを調べるためのデータらしい

ネットワーク構造自体は各ノードが女性、イベント名を表す2部グラフ

18人の女性(ノード数18)と14のイベント(ノード数14)からなる

ここでは女性に関する射影グラフを見ていくことにする

次数なんか見ると、割と高い(最低11)ので密なネットワークを形成している

#Friends(degree), Member
17 Evelyn Jefferson
15 Laura Mandeville
17 Theresa Anderson
15 Brenda Rogers
11 Charlotte McDowd
15 Frances Anderson
15 Eleanor Nye
16 Pearl Oglethorpe
17 Ruth DeSand
17 Verne Sanderson
16 Myra Liddel
16 Katherina Rogers
17 Sylvia Avondale
17 Nora Fayette
17 Helen Lloyd
16 Dorothy Murchison
12 Olivia Carleton
12 Flora Price

ネットワーク図を描いてみると、実際そんな感じになっている

エッジの太さは、イベントで会った回数(エッジの共起回数)を用いている。太いほど、一緒のイベントに出ている

bipartite-network

赤いノードに対してつながっているノードのみ抽出したネットワーク。一番次数が少ないノードに対して描画しているが、結構密につながっていることがわかる

ego-network

実装はgistにしてある

Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

参考

  • Pythonで学ぶネットワーク分析: ColaboratoryとNetworkXを使った実践入門

「二部グラフからの射影により得られた ネットワークの次数分布について」 pdfファイル

2022, Built with Gatsby. This site uses Google Analytics.