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
なごみそ
June 26, 2019
Programming
2
500
ネットワーク分析してみた
NetworkXを使ってネットワークの分析をしてみたお話です.
(2019-06-27: おまけをつけました)
なごみそ
June 26, 2019
Tweet
Share
More Decks by なごみそ
See All by なごみそ
デレマス呼称表から見える アイドルの関係(?)
nagomiso
1
1.2k
ちょっとかしこく生きよう
nagomiso
0
610
JUMAN++で分かち書きをしたかった...
nagomiso
0
82
さよなら Storm
nagomiso
0
44
ここが変だよ Apache Storm
nagomiso
0
21
Other Decks in Programming
See All in Programming
例外処理とどう使い分ける?Result型を使ったエラー設計 #burikaigi
kajitack
16
5.4k
AI 駆動開発ライフサイクル(AI-DLC):ソフトウェアエンジニアリングの再構築 / AI-DLC Introduction
kanamasa
11
5.4k
20251212 AI 時代的 Legacy Code 營救術 2025 WebConf
mouson
0
250
クラウドに依存しないS3を使った開発術
simesaba80
0
220
AIで開発はどれくらい加速したのか?AIエージェントによるコード生成を、現場の評価と研究開発の評価の両面からdeep diveしてみる
daisuketakeda
1
730
MDN Web Docs に日本語翻訳でコントリビュート
ohmori_yusuke
0
470
AIによるイベントストーミング図からのコード生成 / AI-powered code generation from Event Storming diagrams
nrslib
2
1.4k
コマンドとリード間の連携に対する脅威分析フレームワーク
pandayumi
1
320
Implementation Patterns
denyspoltorak
0
150
フルサイクルエンジニアリングをAI Agentで全自動化したい 〜構想と現在地〜
kamina_zzz
0
360
Combinatorial Interview Problems with Backtracking Solutions - From Imperative Procedural Programming to Declarative Functional Programming - Part 2
philipschwarz
PRO
0
140
Canon EOS R50 V と R5 Mark II 購入でみえてきた最近のデジイチ VR180 事情、そして VR180 静止画に活路を見出すまで
karad
0
140
Featured
See All Featured
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
1.8k
Docker and Python
trallard
47
3.7k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Side Projects
sachag
455
43k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
50
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
170
Building AI with AI
inesmontani
PRO
1
630
The agentic SEO stack - context over prompts
schlessera
0
590
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2k
Building the Perfect Custom Keyboard
takai
2
670
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
150
Testing 201, or: Great Expectations
jmmastey
46
7.9k
Transcript
ネットワーク分析してみた 2019-06-26 なごみそ@Kawasaki.rb#73
Kawasaki.rb 6周年 おめでとうございます
自己紹介 •なごみそ(@NagominHotMotto) •仕事: お盆と年末に有明で戦うこと.
ネットワーク分析 •対象をネットワーク構造(=グラフ)として 表現してその特性を分析すること. - e.g., • PageRankによるページの重要度付け • SNSにおいて影響力があるユーザを探す など
グラフとは •頂点 (vertex, node), 辺 (edge), 点と辺の対応付け からなる構造のこと. • 数学的には以下の3つ組
(V, E, Ψ) のこと. - 点集合: V - 辺集合: E - 対応付: v u w 辺 頂点
プログラムでグラフを扱う NetworkX • Pythonでグラフを扱うライブラリ. • ほぼPure Pythonで実装されている. - Numpy, Scipyもあまり使われていない.
- 大規模グラフを扱うときはGraphXとかNeo4jとかを使ったほうがよい. • ちなみに - SciRubyにはnetworkx.rbなるライブラリがある!!! - でも眺めた感じはまだ機能が少ない.
NetworkXでのグラフ定義 とっても簡単 import networkx as nx G = nx.Graph() #
Vertexの追加. G.add_node('u') G.add_node('v') G.add_node('w') # Edgeの追加, 点と辺の対応付け. G.add_edge('u', 'v') G.add_edge('u', 'w') # 点集合. print(G.nodes) # => ['u', 'v', 'w'] # 辺集合. print(G.edges) # => [('u', 'v'), ('u', 'w')] v u w
NetworkXでできること(一部紹介) •最短経路探索 - 点uから点vに到達するまでに辿る最短経路を見つける. •グラフ同士の類似度算出 - グラフ同士がどれだけ似ているかの指標を算出する. •中心性算出 - 各点を特徴づける指標を算出する.
NetworkXでできること(一部紹介) •最短経路探索 - 点uから点vに到達するまでに辿る最短経路を見つける. •グラフ同士の類似度算出 - グラフ同士がどれだけ似ているかの指標を算出する. •中心性算出 - 各点を特徴づける指標を算出する.
中心性: 次数中心性 •頂点に接続された辺の数(次数)で決まる指標. •直接繋がりが多い頂点が中心. # 次数中心性. centrality = nx.degree_centrality(G) print(centrality['u'])
# => 2/2 = 1.0 print(centrality['v']) # => 1/2 = 0.5 print(centrality['w']) # => 1/2 = 0.5 v u w
中心性: 近接中心性 •他の頂点との距離が近いほど高くなる指標. •どの頂点からも平均的に近い頂点が中心. # 近接中心性. centrality = nx.closeness_centrality(G) print(centrality['u'])
# => 2/(1+1) = 1.0 print(centrality['v']) # => 2/(1+2) = 0.666 print(centrality['w']) # => 2/(1+2) = 0.666 v u w
中心性: 媒介中心性 •頂点を通る経路が多いほど高くなる指標. •他の頂点へ繋がる際多く経由される頂点が中心. # 媒介中心性. centrality = nx.betweenness_centrality(G) print(centrality['u'])
# => 1/1 = 1.0 print(centrality['v']) # => 0.0 print(centrality['w']) # => 0.0 v u w
実践(?) 346プロダクションの人間関係を見てみる
346プロの人間関係を見てみる 利用データ • アイドルマスターシンデレラガールズ呼称表 (参考: https://cgcall.negipo.cc/) - 346プロ所属アイドル同士の呼称が記載されている. • e.g.,
- 島村卯月 → 渋谷凛 = 凛ちゃん - 渋谷凛 → 島村卯月 = 卯月 • 呼称データが存在するアイドルは交流があると考える. - 「頂点=アイドル」, 「辺=呼称有り関係」のネットワーク.
346プロの中心人物は誰か? •ネットワークから中心性を算出. •中心性から346プロ内における交流のコア人物を 見つける. 注意 • あくまで一指標(中心性)で見るとどうかの話です. • 特定のアイドルに対する絶対的な評価とはなりません.
中心性トップ10 順位 次数中心性 近接中心性 媒介中心性 1 本田未央 1.0160 川島瑞樹 0.5593
本田未央 0.0671 2 諸星きらり 0.4894 諸星きらり 0.5576 乙倉悠貴 0.0269 3 大槻唯 0.4840 白坂小梅 0.5510 双葉杏 0.0261 4 川島瑞樹 0.4787 堀裕子 0.5461 前川みく 0.0225 5 多田李衣菜 0.4628 西園寺琴歌 0.5444 脇山珠美 0.0219 6 小早川紗枝 0.4521 島村卯月 0.5397 藤原肇 0.0214 7 堀裕子 0.4362 安部菜々 0.5397 川島瑞樹 0.0212 8 島村卯月 0.4309 大槻唯 0.5365 堀裕子 0.0202 9 渋谷凛 0.4309 小早川紗枝 0.5365 大槻唯 0.0195 10 藤原肇 0.4202 佐久間まゆ 0.5365 西園寺琴歌 0.0180 コミュ力が高そうなアイドルが上位にいる
中心性トップ10 順位 次数中心性 近接中心性 媒介中心性 1 本田未央 1.0160 川島瑞樹 0.5593
本田未央 0.0671 2 諸星きらり 0.4894 諸星きらり 0.5576 乙倉悠貴 0.0269 3 大槻唯 0.4840 白坂小梅 0.5510 双葉杏 0.0261 4 川島瑞樹 0.4787 堀裕子 0.5461 前川みく 0.0225 5 多田李衣菜 0.4628 西園寺琴歌 0.5444 脇山珠美 0.0219 6 小早川紗枝 0.4521 島村卯月 0.5397 藤原肇 0.0214 7 堀裕子 0.4362 安部菜々 0.5397 川島瑞樹 0.0212 8 島村卯月 0.4309 大槻唯 0.5365 堀裕子 0.0202 9 渋谷凛 0.4309 小早川紗枝 0.5365 大槻唯 0.0195 10 藤原肇 0.4202 佐久間まゆ 0.5365 西園寺琴歌 0.0180 その中でもちゃんみおがブッチギリ コミュ力が高そうなアイドルが上位にいる
•明らかに本田未央の中心性が高い. 中心性の分布を見てみる ちゃんみお 0.5111
•ちなみに私の推しである土屋亜子さんは…… 中心性の分布を見てみる 亜子 0.4221 0.0904 0.001230
None
その他(2019年実装の新人たち) •白雪千夜, 黒崎ちとせ, 久川颯, 夢見りあむは媒介 中心性が0.00だった. •砂塚あきらが孤立頂点になっていて中心性が算 出できなかった. •辻野あかりの媒介中心性はなんと新田美波より 高い.
- 夢見りあむとその他の346プロメンバーの橋渡しに なっている.
まとめ • NetworkXを使うと簡単にネットワーク分析ができる. - 関数一つでパッと各種計算が可能. • 中心性を計算するとコミュ力が高そうなアイドルが上 位に来ていた. • ちゃんみおが346プロにおける交流の要・中心人物?
- 色々なアイドルの橋渡し的な存在. • 土屋亜子さんは交流の中心にはなれていない模様…… • 新実装アイドルたちは今後の交流に期待.
おまけ 選挙順位と中心性の散布図を描いてみた. ランクインするほど人気があるアイドルは やはり一定以上他のアイドルと交流がある模様 なーちゃんとりあむの ランクインはやはり特殊