SlideShare a Scribd company logo
1 of 24
Download to read offline
オープンソースで学ぶ
社会ネットワーク分析
 2章グラフ理論スピード入門

社会ネットワーク分析勉強会
   @teruu (てる)
    2012/07/05
目次
•   1章   イントロダクション
•   2章   グラフ理論スピード入門
•   3章   中心性、権力、ボトルネック
•   4章   クリーク、クラスタ、コンポーネント
•   5章   2モードネットワーク
•   6章   バイラルへ!―情報の拡散
•   7章   現実のグラフデータ
グラフ理論スピード入門
•   グラフとは何か
•   グラフのトラバーサルと距離
•   グラフの距離
•   なぜこれが重要なのか
•   6次の隔たりは神話に過ぎない
•   スモールワールドネットワーク

グラフ理論とPythonの話題が混在
→ 初心者には難しい
自己紹介
• お仕事
 – 元DBエンジニア
 – 現在、データマイニング専業のベンチャー所属
 – 派遣先で、ソーシャルネットワークの分析に携わ
   る
• 大学院で修士課程を修了(2011年3月卒)
 – 修論テーマ:小売業の購買履歴分析
 – (グラフ理論の視点からとらえ直すと)二部グラフ
   のクラスタリング問題
グラフ理論スピード入門
•   グラフとは何か
•   グラフのトラバーサルと距離
•   グラフの距離
•   なぜこれが重要なのか
•   6次の隔たりは神話に過ぎない
•   スモールワールドネットワーク
グラフとは何か
    ダイアド(2者関係、diad)
    ノード(頂点、node)
    エッジ(辺、関係、edge)


                       E1
               N1     好き    N2
                     (動詞)
              アリス            ボブ
              (名詞)          (名詞)




6
グラフとは何か

    グラフの種類
    – 向き:無向⇔有向
    – 重み:重みなし⇔重みつき
    – モード:1モードグラフ(一部グラフ、unipartite)
          2モードグラフ(二部グラフ、bipartite) →5章
          マルチモードグラフ(?部グラフ、multipartite) →6章




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




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




 (A)有向・重みなし・一部グラフ   (B)有向・重みつき・一部グラフ
グラフのモード:
   一部グラフ⇔二部グラフ




(A)無向・重みなし・一部グラフ   (B)無向・重みなし・二部グラフ
隣接行列、エッジリスト、隣接リスト


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




     グラフ




隣接行列




11
隣接行列、エッジリスト、隣接リスト
                 from to value
                    AB2
                    AD5
                    AE5
                    BA2
                    BD1
   ABCDE            CD3
  A02055                         from    edges
                    CE4
                                   A    (B 2),(D   5),(E 5)
  B20010            DA5
                                   B    (A 2),(D   1)
  C00034            DB1
                                   C    (D 3),(E   4)
  D51300            DC3
                                   D    (A 5),(B   1),(C 3)
  E50400            EA5
                                   E    (A 5),(C   4)
                    EC4

(A)隣接行列        (B)エッジリスト         (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問題?

More Related Content

What's hot

大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端
Takuya Akiba
 
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
Takuya Akiba
 

What's hot (20)

機械学習モデルのハイパパラメータ最適化
機械学習モデルのハイパパラメータ最適化機械学習モデルのハイパパラメータ最適化
機械学習モデルのハイパパラメータ最適化
 
一般化線形モデル (GLM) & 一般化加法モデル(GAM)
一般化線形モデル (GLM) & 一般化加法モデル(GAM) 一般化線形モデル (GLM) & 一般化加法モデル(GAM)
一般化線形モデル (GLM) & 一般化加法モデル(GAM)
 
大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端
 
最適輸送入門
最適輸送入門最適輸送入門
最適輸送入門
 
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
 
機械学習による統計的実験計画(ベイズ最適化を中心に)
機械学習による統計的実験計画(ベイズ最適化を中心に)機械学習による統計的実験計画(ベイズ最適化を中心に)
機械学習による統計的実験計画(ベイズ最適化を中心に)
 
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
 
不老におけるOptunaを利用した分散ハイパーパラメータ最適化 - 今村秀明(名古屋大学 Optuna講習会)
不老におけるOptunaを利用した分散ハイパーパラメータ最適化 - 今村秀明(名古屋大学 Optuna講習会)不老におけるOptunaを利用した分散ハイパーパラメータ最適化 - 今村秀明(名古屋大学 Optuna講習会)
不老におけるOptunaを利用した分散ハイパーパラメータ最適化 - 今村秀明(名古屋大学 Optuna講習会)
 
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
 
機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門
 
[DL輪読会]Focal Loss for Dense Object Detection
[DL輪読会]Focal Loss for Dense Object Detection[DL輪読会]Focal Loss for Dense Object Detection
[DL輪読会]Focal Loss for Dense Object Detection
 
基礎からのベイズ統計学 輪読会資料 第4章 メトロポリス・ヘイスティングス法
基礎からのベイズ統計学 輪読会資料 第4章 メトロポリス・ヘイスティングス法基礎からのベイズ統計学 輪読会資料 第4章 メトロポリス・ヘイスティングス法
基礎からのベイズ統計学 輪読会資料 第4章 メトロポリス・ヘイスティングス法
 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
 
充足可能性問題のいろいろ
充足可能性問題のいろいろ充足可能性問題のいろいろ
充足可能性問題のいろいろ
 
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使う
 
平面グラフと交通ネットワークのアルゴリズム
平面グラフと交通ネットワークのアルゴリズム平面グラフと交通ネットワークのアルゴリズム
平面グラフと交通ネットワークのアルゴリズム
 
NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界
 

Viewers also liked (6)

複雑ネットワーク勉強会 二部グラフの基礎と応用 20120208
複雑ネットワーク勉強会  二部グラフの基礎と応用 20120208複雑ネットワーク勉強会  二部グラフの基礎と応用 20120208
複雑ネットワーク勉強会 二部グラフの基礎と応用 20120208
 
『オープンソースで学ぶ社会ネットワーク分析』1章 イントロダクション
『オープンソースで学ぶ社会ネットワーク分析』1章 イントロダクション『オープンソースで学ぶ社会ネットワーク分析』1章 イントロダクション
『オープンソースで学ぶ社会ネットワーク分析』1章 イントロダクション
 
2部グラフとソーシャルネットワーク
2部グラフとソーシャルネットワーク2部グラフとソーシャルネットワーク
2部グラフとソーシャルネットワーク
 
Sna book chapter_5
Sna book chapter_5Sna book chapter_5
Sna book chapter_5
 
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
 
Pythonで簡単ネットワーク分析
Pythonで簡単ネットワーク分析Pythonで簡単ネットワーク分析
Pythonで簡単ネットワーク分析
 

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

CEDEC2015 サブディビジョンサーフェスの すべてがわかる
CEDEC2015 サブディビジョンサーフェスの すべてがわかるCEDEC2015 サブディビジョンサーフェスの すべてがわかる
CEDEC2015 サブディビジョンサーフェスの すべてがわかる
Takahito Tejima
 
Ruby科学データ処理ツールの開発 NArrayとPwrake
Ruby科学データ処理ツールの開発 NArrayとPwrakeRuby科学データ処理ツールの開発 NArrayとPwrake
Ruby科学データ処理ツールの開発 NArrayとPwrake
Masahiro Tanaka
 
大規模ネットワークの性質と先端グラフアルゴリズム
大規模ネットワークの性質と先端グラフアルゴリズム大規模ネットワークの性質と先端グラフアルゴリズム
大規模ネットワークの性質と先端グラフアルゴリズム
Takuya Akiba
 

Similar to 2章グラフ理論スピード入門 (10)

FeaStNet: Feature-Steered Graph Convolutions for 3D Shape Analysis
FeaStNet: Feature-Steered Graph Convolutions for 3D Shape AnalysisFeaStNet: Feature-Steered Graph Convolutions for 3D Shape Analysis
FeaStNet: Feature-Steered Graph Convolutions for 3D Shape Analysis
 
The boolean operation for Cubic Bezier
The boolean operation for Cubic BezierThe boolean operation for Cubic Bezier
The boolean operation for Cubic Bezier
 
文献紹介:Gate-Shift Networks for Video Action Recognition
文献紹介:Gate-Shift Networks for Video Action Recognition文献紹介:Gate-Shift Networks for Video Action Recognition
文献紹介:Gate-Shift Networks for Video Action Recognition
 
第126回 ロボット工学セミナー 三次元点群と深層学習
第126回 ロボット工学セミナー 三次元点群と深層学習第126回 ロボット工学セミナー 三次元点群と深層学習
第126回 ロボット工学セミナー 三次元点群と深層学習
 
CEDEC2015 サブディビジョンサーフェスの すべてがわかる
CEDEC2015 サブディビジョンサーフェスの すべてがわかるCEDEC2015 サブディビジョンサーフェスの すべてがわかる
CEDEC2015 サブディビジョンサーフェスの すべてがわかる
 
Ruby科学データ処理ツールの開発 NArrayとPwrake
Ruby科学データ処理ツールの開発 NArrayとPwrakeRuby科学データ処理ツールの開発 NArrayとPwrake
Ruby科学データ処理ツールの開発 NArrayとPwrake
 
文献紹介:Learning Video Stabilization Using Optical Flow
文献紹介:Learning Video Stabilization Using Optical Flow文献紹介:Learning Video Stabilization Using Optical Flow
文献紹介:Learning Video Stabilization Using Optical Flow
 
関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】
関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】
関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】
 
大規模ネットワークの性質と先端グラフアルゴリズム
大規模ネットワークの性質と先端グラフアルゴリズム大規模ネットワークの性質と先端グラフアルゴリズム
大規模ネットワークの性質と先端グラフアルゴリズム
 
Learning Depthwise Separable Graph Convolution from Data Manifold
Learning Depthwise Separable Graph Convolution from Data ManifoldLearning Depthwise Separable Graph Convolution from Data Manifold
Learning Depthwise Separable Graph Convolution from Data Manifold
 

More from Teruo Kawasaki (9)

Lambda in java_20160121
Lambda in java_20160121Lambda in java_20160121
Lambda in java_20160121
 
Pentaho ETL ハンズオン
Pentaho ETL ハンズオンPentaho ETL ハンズオン
Pentaho ETL ハンズオン
 
Pentaho 定型レポート ハンズオン
Pentaho 定型レポート ハンズオンPentaho 定型レポート ハンズオン
Pentaho 定型レポート ハンズオン
 
オープンソースのETLツール Pentaho Data Integration(PDI)のご紹介_20140906
オープンソースのETLツール Pentaho Data Integration(PDI)のご紹介_20140906オープンソースのETLツール Pentaho Data Integration(PDI)のご紹介_20140906
オープンソースのETLツール Pentaho Data Integration(PDI)のご紹介_20140906
 
Pentaho CTools 20140902
Pentaho CTools 20140902Pentaho CTools 20140902
Pentaho CTools 20140902
 
Pentaho Reporting Tutorial 20140729
Pentaho Reporting Tutorial 20140729Pentaho Reporting Tutorial 20140729
Pentaho Reporting Tutorial 20140729
 
About BI (2014/03/25)
About BI (2014/03/25)About BI (2014/03/25)
About BI (2014/03/25)
 
Pdi tutorial 20140121
Pdi tutorial 20140121Pdi tutorial 20140121
Pdi tutorial 20140121
 
TokyoWebminig カジュアルなHadoop
TokyoWebminig カジュアルなHadoopTokyoWebminig カジュアルなHadoop
TokyoWebminig カジュアルなHadoop
 

Recently uploaded

Recently uploaded (11)

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 

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