Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
データマイニング - ノードの中心性
Search
Y. Yamamoto
PRO
June 27, 2025
Science
0
63
データマイニング - ノードの中心性
1. 近接中心性
2. 次数中心性
3. 固有ベクトル中心性
4. 媒介中心性
Y. Yamamoto
PRO
June 27, 2025
Tweet
Share
More Decks by Y. Yamamoto
See All by Y. Yamamoto
データベース10: 拡張実体関連モデル
trycycle
PRO
0
680
データマイニング - グラフ構造の諸指標
trycycle
PRO
0
76
データベース09: 実体関連モデル上の一貫性制約
trycycle
PRO
0
680
データマイニング - グラフデータと経路
trycycle
PRO
1
130
2021年度-基盤研究B-研究計画調書
trycycle
PRO
0
34
機械学習 - ニューラルネットワーク入門
trycycle
PRO
0
780
データベース08: 実体関連モデルとは?
trycycle
PRO
0
660
機械学習 - SVM
trycycle
PRO
1
820
機械学習 - K近傍法 & 機械学習のお作法
trycycle
PRO
0
1.1k
Other Decks in Science
See All in Science
トラブルがあったコンペに学ぶデータ分析
tereka114
2
1.6k
Ignite の1年間の軌跡
ktombow
0
130
局所保存性・相似変換対称性を満たす機械学習モデルによる数値流体力学
yellowshippo
1
270
Collective Predictive Coding Hypothesis and Beyond (@Japanese Association for Philosophy of Science, 26th October 2024)
tanichu
0
130
生成AIと学ぶPythonデータ分析再入門-Pythonによるクラスタリング・可視化をサクサク実施-
datascientistsociety
PRO
4
1.6k
マウス肝炎ウイルス感染の遺伝子発現へのテンソル分解の適用によるSARS-CoV-2感染関連重要ヒト遺伝子と有効な薬剤の同定
tagtag
0
120
ウェブ・ソーシャルメディア論文読み会 第25回: Differences in misinformation sharing can lead to politically asymmetric sanctions (Nature, 2024)
hkefka385
0
110
Healthcare Innovation through Business Entrepreneurship
clintwinters
0
230
CV_5_3dVision
hachama
0
140
IWASAKI Hideo
genomethica
0
110
統計学入門講座 第4回スライド
techmathproject
0
140
baseballrによるMLBデータの抽出と階層ベイズモデルによる打率の推定 / TokyoR118
dropout009
1
400
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
124
52k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
137
34k
Side Projects
sachag
455
42k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
43
2.4k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.3k
Producing Creativity
orderedlist
PRO
346
40k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Done Done
chrislema
184
16k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
46
9.6k
Agile that works and the tools we love
rasmusluckow
329
21k
Transcript
ノードの中心性 ⼭本 祐輔 名古屋市⽴⼤学 データサイエンス研究科
[email protected]
第11回 データマイニング (グラフ分析入門) ⼭本祐輔
クリエイティブコモンズライセンス (CC BY-NC-SA 4.0)
グラフを「把握したい」ケース グラフを把握したい ノード 単体 グラフの 部分構造 グラフ 全体 局所的特徴 ⼤局的特徴
グラフを「把握したい」ケース グラフを把握したい グラフ 全体 局所的特徴 ⼤局的特徴 ノードの重要性評価はグラフ分析の典型的タスク グラフの 部分構造 ノード
単体
ノードの中⼼性 § グラフにおける各ノードの重要度を⽰す指数 § 重要ノードの発⾒やノードの順序づけなどに利⽤ § 中⼼性の⼤きさはグラフ構造に基づき計算される どのくらい重要? どちらが重要?
さまざまな中⼼性(⼀部) 近接中心性 他のノードに最も近いノードは? 次数中心性 多くのノードと接続しているノードは? 固有ベクトル中心性 重要なノードと多く接続しているノードは? 媒介中心性 他のノードへの橋渡し役として重要なノードは? グラフの何に注⽬したいかによって⽤いる中⼼性は変わる
さまざまな中⼼性(⼀部) 近接中心性 他のノードに最も近いノードは? 次数中心性 多くのノードと接続しているノードは? 固有ベクトル中心性 重要なノードと多く接続しているノードは? 媒介中心性 他のノードへの橋渡し役として重要なノードは? グラフの何に注⽬したいかによって⽤いる中⼼性は変わる
近接中⼼性 (closeness centrality) (1/5) 注目ノードとグラフ中の他のノードとの 距離が平均的にどの程度近いかを示す指標 0 2 1 3
4 5 1 2 2 1 1 𝐶! 𝑣" = 1 𝑣" からの平均距離 = |𝑉| − 1 ∑#! 𝑑𝑖𝑠𝑡(𝑣" , 𝑣$ )
近接中⼼性 (closeness centrality) (2/5) 注目ノードとグラフ中の他のノードとの 距離が平均的にどの程度近いかを示す指標 逆数をとって 距離が近いと 値が⼤きくなるように 0
2 1 3 4 5 1 2 2 1 1 𝐶! 𝑣" = 1 𝑣" からの平均距離 = |𝑉| − 1 ∑#! 𝑑𝑖𝑠𝑡(𝑣" , 𝑣$ )
近接中⼼性 (closeness centrality) (3/5) 注目ノードとグラフ中の他のノードとの 距離が平均的にどの程度近いかを示す指標 ⾃分を除いたノードの数 0 2 1
3 4 5 1 2 2 1 1 近接中⼼性は連結グラフにしか定義ができないことに注意 𝐶! 𝑣" = 1 𝑣" からの平均距離 = |𝑉| − 1 ∑#! 𝑑𝑖𝑠𝑡(𝑣" , 𝑣$ )
近接中⼼性 (closeness centrality) (4/5) 注目ノードとグラフ中の他のノードとの 距離が平均的にどの程度近いかを示す指標 0 2 1 3
4 5 1 2 2 1 1 0 2 1 3 4 5 1 2 3 4 3 𝐶! 𝑣% = 5 7 𝐶! 𝑣& = 5 13
近接中⼼性 (closeness centrality) (5/5) 注目ノードとグラフ中の他のノードとの 距離が平均的にどの程度近いかを示す指標 0 2 1 3
4 5 1 2 2 1 1 𝐶! 𝑣% = 5 7 # 近接中⼼性 cc = nx.closeness_centrality(G) # ノード2の値 print(cc[2])
さまざまな中⼼性(⼀部) 近接中心性 他のノードに最も近いノードは? 次数中心性 多くのノードと接続しているノードは? 固有ベクトル中心性 重要なノードと多く接続しているノードは? 媒介中心性 他のノードへの橋渡し役として重要なノードは?
次数中⼼性 (degree centrality) (1/4) 注目ノードがいくつのノードと接しているか (どの程度エッジを持つか)を示す指標 0 2 1 3
4 5 𝐶' 𝑣" = deg(𝑣" ) 𝐶' 𝑣" = deg(𝑣" ) 𝑉 − 1 or ノードvi につながる エッジの数 𝐶' 𝑣% = 3
次数中⼼性 (degree centrality) (2/4) 注目ノードがいくつのノードと接しているか (どの程度エッジを持つか)を示す指標 0 2 1 3
4 5 𝐶' 𝑣" = deg(𝑣" ) 𝐶' 𝑣" = deg(𝑣" ) 𝑉 − 1 or グラフに属するノードの数で 正規化することもある 𝐶' 𝑣% = 3
次数中⼼性 (degree centrality) (3/4) 注目ノードがいくつのノードと接しているか (どの程度エッジを持つか)を示す指標 0 2 1 3
4 5 𝐶' 𝑣% = 3 # 次数中⼼性(正規化済み) nx.degree_centrality(G) # 次数中⼼性(正規化なし: 単なる次数) G.degree
次数中⼼性 (degree centrality) (4/4) 有向グラフの場合、次数中心性を 入次数と出次数に分けて考えることもある ⼊次数 = 3 0
2 1 3 4 5 0 2 1 3 4 5 出次数 = 0 ⼊次数 = 1 出次数 = 2
エッジの本数が多い = 重要なノード? 次数 = 3 次数 = 3 エッジの意味が友好関係としたとき、
影響力が強そうなはどちらのノードか? ノードの数も重要だが,どんなノードとつながっているかも重要?
さまざまな中⼼性(⼀部) 近接中心性 他のノードに最も近いノードは? 次数中心性 多くのノードと接続しているノードは? 固有ベクトル中心性 重要なノードと多く接続しているノードは? 媒介中心性 他のノードへの橋渡し役として重要なノードは?
固有ベクトル中⼼性 (eigenvector centrality) (1/14) 堂々巡りの定義になっているけど,どうするの…? 重要なノードに多く接しているノードほど 重要であるとする指標 0 3 1
2 重要度 = 1 重要度 = 1 重要度 = 1 重要度 = 1
固有ベクトル中⼼性 (eigenvector centrality) (2/14) 重要なノードに多く接しているノードほど 重要であるとする指標 0 3 1 2
重要度 = 1 重要度 = 1 重要度 = 1 重要度 = 1 とりあえず全てのノードの重要性を1として定義通り計算してみる…
固有ベクトル中⼼性 (eigenvector centrality) (3/14) 重要なノードに多く接しているノードほど 重要であるとする指標 0 3 1 2
重要度 = 1 重要度 = 1 重要度 = 1 𝑐( 𝑣) = 𝑐( 𝑣* + 𝑐( 𝑣% + 𝑐( 𝑣+ = 1 + 1 + 1 = 3 重要度 = 3 他のノードにも同じことをしてみる
0 固有ベクトル中⼼性 (eigenvector centrality) (4/14) 重要なノードに多く接しているノードほど 重要であるとする指標 3 1 2
重要度 = 2 重要度 = 1 重要度 = 1 重要度 = 1 𝑐( 𝑣+ = 𝑐( 𝑣) + 𝑐( (𝑣% ) = 1 + 1 = 2
固有ベクトル中⼼性 (eigenvector centrality) (5/14) 重要なノードに多く接しているノードほど 重要であるとする指標 0 3 1 2
重要度 = 1→2 同じことを再度繰り返してみる 重要度 = 1→1 重要度 = 1→2 重要度 = 1→3
固有ベクトル中⼼性 (eigenvector centrality) (6/14) 重要なノードに多く接しているノードほど 重要であるとする指標 0 3 1 2
同じことを再度繰り返してみる そのまま繰り返すと重要度が無限に 増えていくので、各ノードの重要度の 二乗和が1になるよう制約を加える 重要度 = 1→2 重要度 = 1→1 重要度 = 1→2 重要度 = 1→3 𝟏𝟖 𝟏𝟖 𝟏𝟖 𝟏𝟖
0 固有ベクトル中⼼性 (eigenvector centrality) (7/14) 重要なノードに多く接しているノードほど 重要であるとする指標 3 1 2
重要度 = 重要度 = 重要度 = 𝑐( 𝑣) = 𝑐( 𝑣* + 𝑐( 𝑣% + 𝑐( 𝑣+ = 2 18 + 2 18 + 1 18 = 5 18 重要度 = 2 18 2 18 1 18 5 18
0 固有ベクトル中⼼性 (eigenvector centrality) (8/14) 重要なノードに多く接しているノードほど 重要であるとする指標 3 1 2
重要度 = 重要度 = 重要度 = 2 18 1 18 3 18 𝑐( 𝑣+ = 𝑐( 𝑣) + 𝑐( (𝑣% ) = 3 18 + 2 18 = 5 18 重要度 = 5 18
0 固有ベクトル中⼼性 (eigenvector centrality) (9/14) 重要なノードに多く接しているノードほど 重要であるとする指標 3 1 2
重要度 = 重要度 = 重要度 = 2 18 → 5 18 2 18 → 5 18 1 18 → 3 18 重要度 = 3 18 → 5 18 同じことを延々と繰り返す
0 固有ベクトル中⼼性 (eigenvector centrality) (10/14) 重要なノードに多く接しているノードほど 重要であるとする指標 3 1 2
重要度 = 重要度 = 重要度 = 𝑐( 23* 𝑣) = 𝑐( 2 𝑣* + 𝑐( 2 𝑣% + 𝑐( 2 𝑣+ 重要度 = 𝑐! " 𝑣# 𝑐! " 𝑣$ 𝑐! " 𝑣% 𝑐! "&% 𝑣' 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 隣接⾏列A 𝑐! "(𝑣' ) 𝑐! "(𝑣% ) 𝑐! "(𝑣$ ) 𝑐! "(𝑣# ) 重要度ベクトル cn E ⾏列Aとベクトルcn E の 積の⼀部になっている
0 固有ベクトル中⼼性 (eigenvector centrality) (11/14) 重要なノードに多く接しているノードほど 重要であるとする指標 3 1 2
重要度 = 重要度 = 重要度 = 𝑐! "#$ = 𝐴𝑐! " 重要度 = 𝐶! " 𝑣# 𝐶! " 𝑣$ 𝐶! " 𝑣% 𝐶! "&% 𝑣' 繰り返しの計算は隣接行列ですっきり表現できる n回⽬の計算で得た 重要度のベクトル n+1回⽬の計算で得た 重要度のベクトル 隣接⾏列
0 固有ベクトル中⼼性 (eigenvector centrality) (12/14) 重要なノードに多く接しているノードほど 重要であるとする指標 3 1 2
𝑐! " = 𝐴𝑐! # 𝑐! $ = 𝐴𝑐! " 𝑐! %&# = 𝐴𝑐! % … 無限に繰り返すと収束 𝑐! = 𝐴𝑐! 𝑐! ' = 𝐴𝑐! ' (つまり )
0 固有ベクトル中⼼性 (eigenvector centrality) (13/14) 重要なノードに多く接しているノードほど 重要であるとする指標 3 1 2
𝜆𝑐! = 𝐴𝑐! 実は上記中⼼性の定義に基づく 重要度の計算は、隣接⾏列Aの 固有ベクトルを求めることに相当 (最⼤固有値に対応する) 固有ベクトル中心性は隣接行列の固有ベクトルの要素値 𝜆𝑥 = 𝐴𝑥
0 固有ベクトル中⼼性 (eigenvector centrality) (14/14) 重要なノードに多く接しているノードほど 重要であるとする指標 3 1 2
# 固有ベクトル中⼼性 nx.eigenvector_centrality(G) # 上の結果は以下の計算で得られる # 第1番⽬の固有ベクトルと⼀致する import numpy as np A = nx.adjacency_matrix(G).toarray() np.linalg.eg(A).eigenvectors[:, 0]
固有ベクトル中⼼性の⽐較 0 1 2 3 0 1 2 3 6
7 4 5 8 9 ノード0 = 0.612 ノード1 = 0.282 ノード2 = 0.523 ノード3 = 0.523 ノード0 = 0.416 ノード1 = 0.225 ノード2,3 = 0.491 ノード4,5 = 0.119 ノード6,7,8,9 = 0.258 中心性の値は相対的なものであること注意
固有ベクトル中⼼性の限界 for 有向グラフ 1 0 4 2 3 5 1
0 4 2 3 5 強連結グラフ 計算可能 強連結グラフでない 計算不可能 ノード1 = 0 ノード4 = 0? 現実的には強連結でないグラフは多い…
さまざまな中⼼性(⼀部) 近接中心性 他のノードに最も近いノードは? 次数中心性 多くのノードと接続しているノードは? 固有ベクトル中心性 重要なノードと多く接続しているノードは? 媒介中心性 他のノードへの橋渡し役として重要なノードは?
媒介中⼼性 (betweenness centrality) (1/3) 3 6 5 4 1 2
0 注目ノードがそれ以外のノード間の経路に 含まれる割合を示す指標 → ノードがどの程度「経路上の要所」になっているか? ココを通らなくても 他のノードに⾏ける グラフの左から右に ⾏くにはココを絶対 通る必要がある (例: コミュニティをつなぐ橋渡し役、交通の要衝etc..)
媒介中⼼性 (betweenness centrality) (2/3) 3 6 5 4 1 2
0 注目ノードがそれ以外のノード間の経路に 含まれる割合を示す指標 → ノードがどの程度「経路上の要所」になっているか? 媒介中⼼性= 9 15 媒介中⼼性= 0 15 媒介中⼼性= 8 15
媒介中⼼性 (betweenness centrality) (3/3) 3 6 5 4 1 2
0 注目ノードがそれ以外のノード間の経路に 含まれる割合を示す指標 → ノードがどの程度「経路上の要所」になっているか? 媒介中⼼性= 9 15 媒介中⼼性= 0 15 # 媒介中⼼性 cb = nx.betweenness_centrality(G) # ノード3の値 print(cb[3])
Hands-on タイム 以下のURLにアクセスして, 第11回のクイズを解いてみよう https://graphnote.hontolab.org/ 39
回 実施日 トピック 9 06/13 グラフデータ 10 06/20 グラフ構造の諸指標 11
06/27 ノードの中心性 12 07/04 コミュニティ発見 13 07/11 ウェブグラフ 14 07/18 グラフ埋め込み 15 07/25 総合演習 – 社会ネットワーク分析 授業計画 40