Upload
teruo-kawasaki
View
11.305
Download
1
Embed Size (px)
DESCRIPTION
社会ネットワーク分析勉強会 その2『オープンソースで学ぶ社会ネットワーク分析―ソーシャルWebの「つながり」を見つけ出す―』2012/07/05開催
Citation preview
オープンソースで学ぶ社会ネットワーク分析
2章グラフ理論スピード入門
社会ネットワーク分析勉強会
@teruu (てる)
2012/07/05
目次
• 1章 イントロダクション
• 2章 グラフ理論スピード入門
• 3章 中心性、権力、ボトルネック
• 4章 クリーク、クラスタ、コンポーネント
• 5章 2モードネットワーク
• 6章 バイラルへ!―情報の拡散
• 7章 現実のグラフデータ
グラフ理論スピード入門
• グラフとは何か• グラフのトラバーサルと距離• グラフの距離• なぜこれが重要なのか• 6次の隔たりは神話に過ぎない• スモールワールドネットワーク
グラフ理論とPythonの話題が混在→ 初心者には難しい
自己紹介
• お仕事– 元DBエンジニア
– 現在、データマイニング専業のベンチャー所属
– 派遣先で、ソーシャルネットワークの分析に携わる
• 大学院で修士課程を修了(2011年3月卒)– 修論テーマ:小売業の購買履歴分析
– (グラフ理論の視点からとらえ直すと)二部グラフのクラスタリング問題
グラフ理論スピード入門
• グラフとは何か
• グラフのトラバーサルと距離
• グラフの距離
• なぜこれが重要なのか
• 6次の隔たりは神話に過ぎない
• スモールワールドネットワーク
ダイアド(2者関係、diad)ノード(頂点、node)エッジ(辺、関係、edge)
6
グラフとは何か
N1 N2
アリス(名詞)
ボブ(名詞)
好き(動詞)
E1
グラフの種類
– 向き:無向⇔有向
– 重み:重みなし⇔重みつき
– モード:1モードグラフ(一部グラフ、unipartite)
2モードグラフ(二部グラフ、bipartite) →5章
マルチモードグラフ(?部グラフ、multipartite) →6章
7
グラフとは何か
グラフの向き:無向⇔有向
(A)無向・重みなし・一部グラフ (B)有向・重みなし・一部グラフ
グラフの重み:重みなし⇔重みつき
(A)有向・重みなし・一部グラフ (B)有向・重みつき・一部グラフ
グラフのモード:一部グラフ⇔二部グラフ
(A)無向・重みなし・一部グラフ (B)無向・重みなし・二部グラフ
隣接行列、エッジリスト、隣接リスト
11
隣接行列
グラフ
グラフ1:有向、重み付き、(一部)グラフグラフ2:無向、重み無し、二部グラフ
(unipartite)(bipartite)
隣接行列、エッジリスト、隣接リスト
(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)隣接リスト
メリット:メモリ効率的高速サーチ可能
デメリット:パース処理面倒
グラフとは何か
• 隣接行列
• エッジリストと隣接リスト
• ケーニヒスベルクの7つの橋
グラフのトラバーサルと距離
• 深さ優先探索
– 実装
– NetworkXによるDFS
• 幅優先探索
– アルゴリズム
– NetworkXによるBFS
• 単純路と通路
• ダイクストラのアルゴリズム
グラフのトラバーサルと距離
• 深さ優先探索(DFS)0→1→3→2→5→6→4→7→8→9
(1)何らかのノードnからスタートする。(2)nに訪問済みのマークを付ける。(3)nに隣接する未訪問の個々のniについて、以下の処理を繰り返す。
(4)再帰的にノードniにDFSを適用する。
• 幅優先探索(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にエンキューする。
単純路と通路
• 単純路:各ノードを1度だけ通るパス(通路)– 開いた/閉じた
– 閉路(閉じた単純路)
• ダイクストラのアルゴリズム(1959年)– もっともコストの低い単純路を見つける
• Networkx:2つの最短単純路アルゴリズム– dijkstra_path– shortest_path
グラフの距離
• 指標が複数ある
– 最短単純路
• ノードAからBまでのエッジの数
– コストに基づく最短単純路
• 重みつきグラフ
– ユークリッド距離
• 隣接行列から計算
グラフの直径
• あるノードから別のノードへ移動
– 通過するノード数の最大値
なぜこれが重要なのか
• グラフの距離
– グラフを量的に分析する手段
– ネットワーク参加者の影響力を評価
6次の隔たりは神話に過ぎない
• ミルグラムのスモールワールド実験(1969年)
– 6次の隔たり
• 神話?
スモールワールドネットワーク
直径=5 直径=3
(格子)
17本のエッジのうち5本をランダムに置き換える→グラフの形は大きく変わらないが、直径が5→3に
複雑ネットワークの歴史
• 1736年オイラーがケーニヒスベルグの七つの橋の問題をグラフを用いて解決
(一筆書きが不可能であることを証明)
→ グラフ理論の誕生
• 1967年ミルグラムのスモールワールド実験
• 1998年ワッツとストロガッツのスモールワールド・ネットワーク
• 1999年バラバシとアルバートのスケールフリー・ネットワーク
Python/Networkx
• 後ほど演習にて
• Networkx (http://networkx.lanl.gov/)
• Ipython問題?