24
オープンソースで学ぶ 社会ネットワーク分析 2章グラフ理論スピード入門 社会ネットワーク分析勉強会 @teruu (てる) 2012/07/05

2章グラフ理論スピード入門

Embed Size (px)

DESCRIPTION

社会ネットワーク分析勉強会 その2『オープンソースで学ぶ社会ネットワーク分析―ソーシャルWebの「つながり」を見つけ出す―』2012/07/05開催

Citation preview

Page 1: 2章グラフ理論スピード入門

オープンソースで学ぶ社会ネットワーク分析

2章グラフ理論スピード入門

社会ネットワーク分析勉強会

@teruu (てる)

2012/07/05

Page 2: 2章グラフ理論スピード入門

目次

• 1章 イントロダクション

• 2章 グラフ理論スピード入門

• 3章 中心性、権力、ボトルネック

• 4章 クリーク、クラスタ、コンポーネント

• 5章 2モードネットワーク

• 6章 バイラルへ!―情報の拡散

• 7章 現実のグラフデータ

Page 3: 2章グラフ理論スピード入門

グラフ理論スピード入門

• グラフとは何か• グラフのトラバーサルと距離• グラフの距離• なぜこれが重要なのか• 6次の隔たりは神話に過ぎない• スモールワールドネットワーク

グラフ理論とPythonの話題が混在→ 初心者には難しい

Page 4: 2章グラフ理論スピード入門

自己紹介

• お仕事– 元DBエンジニア

– 現在、データマイニング専業のベンチャー所属

– 派遣先で、ソーシャルネットワークの分析に携わる

• 大学院で修士課程を修了(2011年3月卒)– 修論テーマ:小売業の購買履歴分析

– (グラフ理論の視点からとらえ直すと)二部グラフのクラスタリング問題

Page 5: 2章グラフ理論スピード入門

グラフ理論スピード入門

• グラフとは何か

• グラフのトラバーサルと距離

• グラフの距離

• なぜこれが重要なのか

• 6次の隔たりは神話に過ぎない

• スモールワールドネットワーク

Page 6: 2章グラフ理論スピード入門

ダイアド(2者関係、diad)ノード(頂点、node)エッジ(辺、関係、edge)

6

グラフとは何か

N1 N2

アリス(名詞)

ボブ(名詞)

好き(動詞)

E1

Page 7: 2章グラフ理論スピード入門

グラフの種類

– 向き:無向⇔有向

– 重み:重みなし⇔重みつき

– モード:1モードグラフ(一部グラフ、unipartite)

2モードグラフ(二部グラフ、bipartite) →5章

マルチモードグラフ(?部グラフ、multipartite) →6章

7

グラフとは何か

Page 8: 2章グラフ理論スピード入門

グラフの向き:無向⇔有向

(A)無向・重みなし・一部グラフ (B)有向・重みなし・一部グラフ

Page 9: 2章グラフ理論スピード入門

グラフの重み:重みなし⇔重みつき

(A)有向・重みなし・一部グラフ (B)有向・重みつき・一部グラフ

Page 10: 2章グラフ理論スピード入門

グラフのモード:一部グラフ⇔二部グラフ

(A)無向・重みなし・一部グラフ (B)無向・重みなし・二部グラフ

Page 11: 2章グラフ理論スピード入門

隣接行列、エッジリスト、隣接リスト

11

隣接行列

グラフ

グラフ1:有向、重み付き、(一部)グラフグラフ2:無向、重み無し、二部グラフ

(unipartite)(bipartite)

Page 12: 2章グラフ理論スピード入門

隣接行列、エッジリスト、隣接リスト

(A)隣接行列

デメリット:メモリの無駄

(B)エッジリスト

メリット:メモリ効率的デメリット:高速サーチ不可

A B C D E A 0 2 0 5 5 B 2 0 0 1 0 C 0 0 0 3 4 D 5 1 3 0 0E 5 0 4 0 0

from to value A B 2 A D 5 A E 5 B A 2 B D 1 C D 3 C E 4 D A 5 D B 1 D C 3 E A 5 E C 4

from edgesA (B 2),(D 5),(E 5)B (A 2),(D 1)C (D 3),(E 4)D (A 5),(B 1),(C 3)E (A 5),(C 4)

(C)隣接リスト

メリット:メモリ効率的高速サーチ可能

デメリット:パース処理面倒

Page 13: 2章グラフ理論スピード入門

グラフとは何か

• 隣接行列

• エッジリストと隣接リスト

• ケーニヒスベルクの7つの橋

Page 14: 2章グラフ理論スピード入門

グラフのトラバーサルと距離

• 深さ優先探索

– 実装

– NetworkXによるDFS

• 幅優先探索

– アルゴリズム

– NetworkXによるBFS

• 単純路と通路

• ダイクストラのアルゴリズム

Page 15: 2章グラフ理論スピード入門

グラフのトラバーサルと距離

• 深さ優先探索(DFS)0→1→3→2→5→6→4→7→8→9

(1)何らかのノードnからスタートする。(2)nに訪問済みのマークを付ける。(3)nに隣接する未訪問の個々のniについて、以下の処理を繰り返す。

(4)再帰的にノードniにDFSを適用する。

Page 16: 2章グラフ理論スピード入門

• 幅優先探索(BFS)0→1→2→3→5→4→6→7→8→9

(1)ノードnからスタートする。(2)待ち行列Qを作る。(3)nに訪問済みのマークを付ける。(4)nをQにエンキューする。(5)Qが空でない間、以下の処理を繰り返す。

(6-1)Qからnをデキューする。(6-2)nに隣接する未訪問の個々のniについて、以下の処理を繰り返す。

(7-1)niに訪問済みのマークを付ける。(7-2)niをQにエンキューする。

Page 17: 2章グラフ理論スピード入門

単純路と通路

• 単純路:各ノードを1度だけ通るパス(通路)– 開いた/閉じた

– 閉路(閉じた単純路)

• ダイクストラのアルゴリズム(1959年)– もっともコストの低い単純路を見つける

• Networkx:2つの最短単純路アルゴリズム– dijkstra_path– shortest_path

Page 18: 2章グラフ理論スピード入門

グラフの距離

• 指標が複数ある

– 最短単純路

• ノードAからBまでのエッジの数

– コストに基づく最短単純路

• 重みつきグラフ

– ユークリッド距離

• 隣接行列から計算

Page 19: 2章グラフ理論スピード入門

グラフの直径

• あるノードから別のノードへ移動

– 通過するノード数の最大値

Page 20: 2章グラフ理論スピード入門

なぜこれが重要なのか

• グラフの距離

– グラフを量的に分析する手段

– ネットワーク参加者の影響力を評価

Page 21: 2章グラフ理論スピード入門

6次の隔たりは神話に過ぎない

• ミルグラムのスモールワールド実験(1969年)

– 6次の隔たり

• 神話?

Page 22: 2章グラフ理論スピード入門

スモールワールドネットワーク

直径=5 直径=3

(格子)

17本のエッジのうち5本をランダムに置き換える→グラフの形は大きく変わらないが、直径が5→3に

Page 23: 2章グラフ理論スピード入門

複雑ネットワークの歴史

• 1736年オイラーがケーニヒスベルグの七つの橋の問題をグラフを用いて解決

(一筆書きが不可能であることを証明)

→ グラフ理論の誕生

• 1967年ミルグラムのスモールワールド実験

• 1998年ワッツとストロガッツのスモールワールド・ネットワーク

• 1999年バラバシとアルバートのスケールフリー・ネットワーク

Page 24: 2章グラフ理論スピード入門

Python/Networkx

• 後ほど演習にて

• Networkx (http://networkx.lanl.gov/)

• Ipython問題?