Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
データマイニング - ノードの中心性
Search
Y. Yamamoto
PRO
June 27, 2025
Science
0
310
データマイニング - ノードの中心性
1. 近接中心性
2. 次数中心性
3. 固有ベクトル中心性
4. 媒介中心性
Y. Yamamoto
PRO
June 27, 2025
Tweet
Share
More Decks by Y. Yamamoto
See All by Y. Yamamoto
生成的情報検索時代におけるAI利用と認知バイアス
trycycle
PRO
0
52
データベース15: ビッグデータ時代のデータベース
trycycle
PRO
0
400
データベース14: B+木 & ハッシュ索引
trycycle
PRO
0
550
データマイニング - グラフ埋め込み入門
trycycle
PRO
1
120
データマイニング - ウェブとグラフ
trycycle
PRO
0
210
データベース12: 正規化(2/2) - データ従属性に基づく正規化
trycycle
PRO
0
1k
データマイニング - コミュニティ発見
trycycle
PRO
0
180
データベース11: 正規化(1/2) - 望ましくない関係スキーマ
trycycle
PRO
0
1k
データベース10: 拡張実体関連モデル
trycycle
PRO
0
1k
Other Decks in Science
See All in Science
NDCG is NOT All I Need
statditto
2
2.5k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
160
mOrganic™ Holdings, LLC.
hyperlocalnetwork
0
200
academist Prize 4期生 研究トーク延長戦!「美は世界を救う」っていうけど、どうやって?
jimpe_hitsuwari
0
450
MCMCのR-hatは分散分析である
moricup
0
520
なぜ21は素因数分解されないのか? - Shorのアルゴリズムの現在と壁
daimurat
0
200
Accelerated Computing for Climate forecast
inureyes
PRO
0
140
知能とはなにかーヒトとAIのあいだー
tagtag
0
120
防災デジタル分野での官民共創の取り組み (1)防災DX官民共創をどう進めるか
ditccsugii
0
420
デジタルアーカイブの教育利用促進を目指したメタデータLOD基盤に関する研究 / Research on a Metadata LOD Platform for Promoting Educational Uses of Digital Archives
masao
0
120
Vibecoding for Product Managers
ibknadedeji
0
110
People who frequently use ChatGPT for writing tasks are accurate and robust detectors of AI-generated text
rudorudo11
0
160
Featured
See All Featured
YesSQL, Process and Tooling at Scale
rocio
174
15k
How to Ace a Technical Interview
jacobian
280
24k
The Cult of Friendly URLs
andyhume
79
6.7k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.4k
Rails Girls Zürich Keynote
gr2m
95
14k
How STYLIGHT went responsive
nonsquared
100
5.9k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
700
Building Adaptive Systems
keathley
44
2.9k
We Have a Design System, Now What?
morganepeng
54
7.9k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
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