SlideShare uma empresa Scribd logo
1 de 59
Baixar para ler offline
情報処理学会連続セミナー情報処理学会連続セミナー情報処理学会連続セミナー情報処理学会連続セミナー2012「ビックデータとスマートな社会」「ビックデータとスマートな社会」「ビックデータとスマートな社会」「ビックデータとスマートな社会」
第4回「ソーシャルメディアの大規模ネットワーク分析」第4回「ソーシャルメディアの大規模ネットワーク分析」第4回「ソーシャルメディアの大規模ネットワーク分析」第4回「ソーシャルメディアの大規模ネットワーク分析」
大規模大規模大規模大規模ネットワークネットワークネットワークネットワークのののの
構造的構造的構造的構造的特徴量の計算手法特徴量の計算手法特徴量の計算手法特徴量の計算手法
(独)理化学研究所
基幹研究所
光グリーンテクノロジー特別研究ユニット
篠田孝祐
2012/10/10 ビックデータとスマートな社会(第4回) 1
自己紹介自己紹介自己紹介自己紹介
• 所属
(独)理化学研究所 基幹研究所 光グリーンテクノロジー特別研究ユニット
• 学位
博士(知識科学)博士(知識科学)博士(知識科学)博士(知識科学) 北陸先端科学技術大学院大学 知識科学研究科
• 専門
– 社会シミュレーション、ネットワーク分析
• ネットワーク分析の対象
– ネットワークの成長モデル
– 学術・国際会議ネットワーク
– 公共交通機関(鉄道、高速道路、バス)
2012/10/10 ビックデータとスマートな社会(第4回) 2
本日の概要
• ネットワーク分析の概要として、その特徴をし
る手がかりとなる、構造的特長量ならびに
ネットワーク中心性の算出方法を示す
• それらを求めるためのソフトならびにライブラ
リを紹介する
• ならびに、大規模な(数10万ノード)ネットワー
クのネットワークに適応できるように簡易な並
列化の手法を紹介する
2012/10/10 ビックデータとスマートな社会(第4回) 3
予定予定予定予定
1. ネットワーク分析概要ネットワーク分析概要ネットワーク分析概要ネットワーク分析概要
2. ネットワークの特徴を知るネットワークの特徴を知るネットワークの特徴を知るネットワークの特徴を知る
3. 構造的特長量・中心性の計算構造的特長量・中心性の計算構造的特長量・中心性の計算構造的特長量・中心性の計算
1. ネットワークの記述
2. 代表的なソフトウェア、ライブラリ
4. ネットワークを記述するネットワークを記述するネットワークを記述するネットワークを記述する
5. データを解析するデータを解析するデータを解析するデータを解析する
1. ソフトウェアを用いた解析
2. プログラムを用いた解析
6. 大規模ネットワーク分析のための並列化大規模ネットワーク分析のための並列化大規模ネットワーク分析のための並列化大規模ネットワーク分析のための並列化
2012/10/10 ビックデータとスマートな社会(第4回) 4
1. ネットワーク分析概要ネットワーク分析概要ネットワーク分析概要ネットワーク分析概要
2012/10/10 ビックデータとスマートな社会(第4回) 5
ネットワーク分析の流れネットワーク分析の流れネットワーク分析の流れネットワーク分析の流れ
2012/10/10 ビックデータとスマートな社会(第4回) 6
ネットワーク分析とはネットワーク分析とはネットワーク分析とはネットワーク分析とは
• “ネットワークネットワークネットワークネットワーク”というデータ表現
– まず、データにある関係性に着目する
• AさんさんさんさんとBさんさんさんさんは友達友達友達友達である
• Protein A interacts with protein B.
– データ構成
• ノードノードノードノード(Vertex, Actor)
• エッジエッジエッジエッジ(Link,Arc)
– 主体であるノード、その関係を示すエッジという単
純な表現形式により、全体と個を分析する
2012/10/10 ビックデータとスマートな社会(第4回) 7
ネットワークの表現ネットワークの表現ネットワークの表現ネットワークの表現
2012/10/10 ビックデータとスマートな社会(第4回) 8
主主主主な対象な対象な対象な対象
• コミュニティ抽出
– クラスタリング、モジュラリティ分割
• 伝達性の検証
– 感染性症状、広告効果
• 頑健性の検証
– 通信ネットワーク構造
• 重要なノード、リンクの抽出
– ネットワーク中心性
• 可視化
2012/10/10 ビックデータとスマートな社会(第4回) 9
分析の事例分析の事例分析の事例分析の事例
国際会議ネットワーク(1)
• 目的
– 国際会議どうしの近さ(類似度)を知りたい
• 手段
– 採択論文データから、著者と国際会議の共起関係を抽出
– 国際会議同士の”距離”距離”距離”距離””””を算出
• 手順
– ネットワークデータの準備
• DBLPからXMLファイルをDL
• 国際会議と著者のリストを作成
– ネットワークの生成
• 国際会議と著者の共起関係を生成
• 国際会議間の類似度を、著者を特徴ベクトルとするベクトルコサイン
値から求める
• 一定の類似度以上の国際会議間にリンクを設置
2012/10/10 ビックデータとスマートな社会(第4回) 10
分析の事例分析の事例分析の事例分析の事例
国際会議ネットワーク(2)
• クラスターによる分野間の関係性を抽出
• 多次元尺度構成法(MDS)を用いた研究分野
ごとのカンファレンス順位の抽出
2012/10/10 ビックデータとスマートな社会(第4回) 11
分析の事例分析の事例分析の事例分析の事例
学会における中心人物の抽出
• 学会誌に採択された論文メタデータより共著
関係を抽出してネットワークを作成
• ネットワーク内のノード(著者)の重要度を算出
• グラフとして描画
2012/10/10 ビックデータとスマートな社会(第4回) 12
人工人工人工人工知能知能知能知能研究研究研究研究の系譜の系譜の系譜の系譜 http://familytree.k4no.info/
「日本における人工知能研究の系譜」人工「日本における人工知能研究の系譜」人工「日本における人工知能研究の系譜」人工「日本における人工知能研究の系譜」人工知能学知能学知能学知能学会誌会誌会誌会誌 Vol.26 No6 pp. 584 -- 589
2. ネットワークの特長を知るネットワークの特長を知るネットワークの特長を知るネットワークの特長を知る
2012/10/10 ビックデータとスマートな社会(第4回) 13
基本的な構造的特長量と指標基本的な構造的特長量と指標基本的な構造的特長量と指標基本的な構造的特長量と指標
• 全体の特徴
– ノード総数
– エッジ総数
– 平均次数
– 直径・半径
– 平均クラスタリング係数
– 平均経路長
– 次数相関
– モジュラリティ
– 次数分布
– 中心性分布
• ノード、エッジの特徴
– 次数
– 近接ノード次数平均
– クラスタリング係数
– 中心性指標
• Degree(次数)
• Closeness (経路長平均)
• Betweeness(媒介値)
• PageRank
• Eigenvector(固有値)
2012/10/10 ビックデータとスマートな社会(第4回) 14
ノード、エッジの特徴ノード、エッジの特徴ノード、エッジの特徴ノード、エッジの特徴
• 次数
– 1つのノードあたりのエッジの数
• 近接ノード次数平均
– 近接ノード(対象ノードとエッジで結ばれたノード)の
次数の平均
• クラスタリング係数
– 近接ノード間のエッジの存在割合
• 中心性指標
– ネットワーク内におけるノードの重要性を示すための
指標。さまざまな指標が定義されている。
2012/10/10 ビックデータとスマートな社会(第4回) 15
ネットワーク全体の特徴を知るネットワーク全体の特徴を知るネットワーク全体の特徴を知るネットワーク全体の特徴を知る
• ノードの数、エッジの数
– ネットワークの規模を示す値
• 次数平均
– 次数の平均値
• 次数分布
– 次数のヒストグラム。スケールフリー性などにより次数分
布がベキとなっていることが注目された
• 次数相関
– 近接ノードとの次数の相関関係を示す値
• 平均クラスタリング係数
– クラスタリング係数の平均値
2012/10/10 ビックデータとスマートな社会(第4回) 16
• 平均経路長
– 任意のノード間の経路長の平均値
• 直径・半径
– ネットワーク内にある、最短経路長の最大の値
• モジュラリティ、クラスタリング
– コミュニティ(ネットワークの密度が高いコンポー
ネント)の抽出
• 中心性分布
– ネットワーク中心性指標のヒストグラム
2012/10/10 ビックデータとスマートな社会(第4回) 17
3. 構造的特長量・中心性の計算構造的特長量・中心性の計算構造的特長量・中心性の計算構造的特長量・中心性の計算
2012/10/10 ビックデータとスマートな社会(第4回) 18
• 特長量・中心性の意味の説明と計算式を書く
2012/10/10 ビックデータとスマートな社会(第4回) 19
次数の平均、分布、相関次数の平均、分布、相関次数の平均、分布、相関次数の平均、分布、相関
• 次数(݀௜)とは
– ノード݅のリンクの数
• 入次数(in-degree)
• 出自数(out-degree)
• 平均
– リンクの発生割合 ݀̅ = ∑ ݀௜ ܰ⁄
• 分布
– リンクの発生確率分布
• 正規分布: ランダムネットワーク
• ベキ分布: スケールフリーネットワーク
• 片対数分布
• 相関
– リンクの発生の偏り
2012/10/10 ビックデータとスマートな社会(第4回) 20
3
6
2
2
2
2
3
3
4
4
クラスタリング係数クラスタリング係数クラスタリング係数クラスタリング係数
• クラスタリング係数とは
– グラフ内の近傍関係に占める
三角形(近傍ノード間にリンク
が存在する)の割合
• 解釈
– 密な関係性が存在する
• その他
– 第N近傍までもとめることもあ
る。
2012/10/10 ビックデータとスマートな社会(第4回) 21
0.0083
1
1
0.67
0.33
0.083
0
0
0
0
コミュニティの抽出コミュニティの抽出コミュニティの抽出コミュニティの抽出
• 関係性の強いグループの抽
出
– 趣味・興味
– 取引グループ
• 抽出方法
– モジュラリティ分割
– クラスリング
• k-means
• etc.
– etc.
2012/10/10 ビックデータとスマートな社会(第4回) 22
ネットワークの中心性ネットワークの中心性ネットワークの中心性ネットワークの中心性
• ネットワークの中心性指標は多数提案されて
いる。その中でも、代表的な中心性指標は以
下である。
– 次数中心性(Degree Centrality)
– 近接中心性(Closeness Centrality)
– 媒介中心性(Betweeness Centrality)
– PageRank
– HITS
2012/10/10 ビックデータとスマートな社会(第4回) 23
次数中心性次数中心性次数中心性次数中心性(Degree Centrality)
• ネットワークの次数(݀)
– ネットワークの規模最大値であ
るため ܰで割ることで正規化
• ܰ: ノード数
• 次数の高さ=リンクを生成す
る行為・関係性への積極的な
参加
2012/10/10 ビックデータとスマートな社会(第4回) 24
近接中心性近接中心性近接中心性近接中心性(Closeness Centrality)
• 特定のノードからネットワーク全体への
アクセスしやすさを示す指標
– 経路長平均 ‫ܮ‬ = ∑ ݀௜௝௝∈୒,௜ஷ௝
• ݀௜௝ はノード݅, ݆ の経路長
– ネットワークの規模ならびにネットワーク
の連結性に影響を受ける
• ܰ で割ることで規模への正規化
• それを逆数にすることで連結性への正規化
• アルゴリズム
– ノードを選択
– ノードからすべてのノードへの距離(経路
長)を求める
• 深さ優先探索などで
– その距離の総和が経路長平均
2012/10/10 ビックデータとスマートな社会(第4回) 25
媒介媒介媒介媒介中心性中心性中心性中心性(Betweeness Centrality)
• 任意のノード間の最短パスの経由ノードであ
るかを評価
– 情報が集約しやすいノードの評価
– ただし、情報はかならずしも最短パスだけを通る
わけではない..
• アルゴリズム
– ‫ݏݏ݁݊݁݁ݓݐ݁ܤ‬௜ = ∑ ݊௝௞(݅)/݊௝௞௝,௞∈ே,௜ஷ௝,௞
– ݊௝௞: ノード j, k の最短パス本数
– ݊௝௞(݅): ݊௝௞のうちノードiを通過する本数
2012/10/10 ビックデータとスマートな社会(第4回) 26
Page Rank
• リンク構造から重要ノードを算出する
• EigenVector(固有値)を計算する式に、任意の
ノードへの遷移を想定したアルゴリズム
• アルゴリズム
– 初期値 ܲ௜
଴
= 1
– ܲ௜
௞
= 1 − ߙ ∑ ܲ௝
௞ିଵ
/‫ܦ‬௝௘೔ೕ∈ா + ߙ ∑ ܲ௜
௞ିଵ
– ߙ = 0.15 (任意のノードへの遷移)
2012/10/10 ビックデータとスマートな社会(第4回) 27
HITS
• グラフ内のオーソリティ(情報提供)とハブ(情報収
集)を抽出する手法
– 有向グラフを前提
– 無向グラフである場合は、固有値の計算と同じ
• アルゴリズム
– 初期値: ‫ݔ‬௜
଴
= 1, ‫ݕ‬௜
଴
= 1
– オーソリティ: ‫ݔ‬௜
௞
= ∑ ‫ݕ‬௝
௞ିଵ
௝:௘೔ೕ∈ா
– ハブ: ‫ݕ‬௜
௞
= ∑ ‫ݔ‬௝
௞ିଵ
௝:௘೔ೕ∈ா
– 正規化: ‫ݔ‬௜
௞
/∑(‫ݔ‬௝
௞
)ଶ
	, ‫ݕ‬௜
௞
/∑(‫ݕ‬௝
௞
)ଶ
	 などで正規化
2012/10/10 ビックデータとスマートな社会(第4回) 28
大規模なネットワークへの適応大規模なネットワークへの適応大規模なネットワークへの適応大規模なネットワークへの適応
• 計算量の問題
– ノード数が10倍になるだけで、ほとんどの指標が10
倍以上の計算時間が必要となる
– 指数的な計算時間がかかるものもある
• 媒介値中心性
• クラスタリング係数:
– 次数が極端に大きなノードが存在する場合
• 解釈の問題
– 平均とは?
– 中心性とは?
– クラスタリング係数などは、次数平均が同じであれば
規模が大きくなるほど小さな値になってしまう。
2012/10/10 ビックデータとスマートな社会(第4回) 29
4.ネットワークを記述するネットワークを記述するネットワークを記述するネットワークを記述する
2012/10/10 ビックデータとスマートな社会(第4回) 30
グラフ記述言語
• Edge List
– ノードの対のみの記述方式
• Pajek NET
– 解析ソフト Pajek で扱っている記述方式
– ノード、エッジは別ファイルに記述する
• Graphviz DOT
– 描画ツール Graphviz が定義した記述方式
– ノード、エッジは1ファイルで記述。
– ノード座標指定なども可能
• Graph ML
– XMLベースの記述言語
2012/10/10 ビックデータとスマートな社会(第4回) 31
Pajek NET
• テキストベースのネットワークデータ表現
• ノードの宣言
– “*Vertices N”とノードの数を冒頭に宣言
• N はノード数
• エッジの宣言
– “*Edges”で以降エッジリスト
2012/10/10 ビックデータとスマートな社会(第4回) 32
GraphvizGraphvizGraphvizGraphviz DOTDOTDOTDOT
• テキスト形式の記述言語
• 比較的多くのネットワーク分析ソフト、ライブラリ
でサポート
• 例)
digraph sample2 {
A -> B [ label = "Edge A to B" ];
B -> C [ label = "Edge B to C" ];
A [label="Node A"];
}
2012/10/10 ビックデータとスマートな社会(第4回) 33
Graph ML
• XMLベースの記述言語
• 例)
<?xml version="1.0" encoding="UTF-8"?>
<graphml xmlns=http://graphml.graphdrawing.org/xmlns
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns
http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd">
<graph id="G" edgedefault="undirected">
<node id="n0"/>
<node id="n1"/>
<edge id="e1" source="n0" target="n1"/>
</graph>
</graphml>
• 参考: http://graphml.graphdrawing.org/
2012/10/10 ビックデータとスマートな社会(第4回) 34
5. データを解析するデータを解析するデータを解析するデータを解析する
図 http://www.cytoscape.org/ より2012/10/10 ビックデータとスマートな社会(第4回) 35
データ解析手法データ解析手法データ解析手法データ解析手法
• 分析ソフトを用いた解析
– 定型の解析は行える
– 100万ノードを歌うものもあ
るが、現実的には数万ノー
ドの計算、数千ノードの描
画が限界
• 代表的なソフトウェア
– Gephi
– Cytoscape
– Pajak
– R: 統計解析・可視化ソフト
• ライブラリを用いた解析
– 独自の解析、大規模な解
析も可能
– 実装が必要、描画をさせ
るにはさらに苦労が…
• 代表的なライブラリ
– Boost/graph: C++
– RGL: Ruby
– Graphstream: Java
– Graphviz: C, C++
2012/10/10 ビックデータとスマートな社会(第4回) 36
Gephi
• 特長
– Java ベース
– Windows, Mac OS, Linux と複数のプラットフォームで動作
• ただし、Linux では描画周辺に難あり
– 多数のグラフ記述言語に対応
• Graph ML, Graphviz DOT, Pajek NET, etc.
– 描画レイアウト、分析などがプラグインで追加可能
• 配布
– https://gephi.org/ 最新版(日本語表示対応)
– 日本語解説
http://oss.infoscience.co.jp/gephi/gephi.org/index.html
2012/10/10 ビックデータとスマートな社会(第4回) 37
Gephiデモデモデモデモ
2012/10/10 ビックデータとスマートな社会(第4回) 38
• 特長
– 主に Bio-informatics 分野にて利用されている
– データ統合/解析/可視化プラットフォーム
– 比較的多数のデータ形式への対応
• GML, XGMML, GraphML, CSV など
• サイト
– http://www.cytoscape.org/
– 日本語解説
http://cydoc.sourceforge.jp/cydocwiki/
Cytoscape
Cytoscape: An Open Source Platform for Complex Network Analysis and Visualization
2012/10/10 ビックデータとスマートな社会(第4回) 39
Graphviz
2012/10/10 ビックデータとスマートな社会(第4回) 40
Boost/Graphを用いた実装を用いた実装を用いた実装を用いた実装
• Boost は C++用ライブラリ群
– Boost/Graph はそのなかの一つのグラフデータ処
理用ライブラリ
– Boost 1.33.1 以降からは、ネットワーク分析用のメ
ソッドが徐々に追加されている
– ネットワークの構造的特長や、ネットワーク中心
性指標を計算するメソッドはほぼそろっている。
– 計算速度という点では他のライブラリより利点
2012/10/10 ビックデータとスマートな社会(第4回) 41
Ruby Graph Library (RGL)
• Ruby 用グラフライブラリ
– グラフ構造を管理するためのライブラリ
– ネットワーク分析にも使えるメソッドは多少ある
– 実装コンセプトは boost /graph と類似
• RGLの導入
– Ruby のライブラリ群の rubygems を用いてインス
トール
– サイト: http://rgl.rubyforge.org/rgl/
2012/10/10 ビックデータとスマートな社会(第4回) 42
GraphStream
• Java用グラフライブラリ
– 主に、グラフの描画を重視している
– グラフ分析用のメソッドも用意されている
– グラフデータの形式が幅広い
– 現在、積極的に開発が行われている
• 以前は JUNG がJavaのグラフライブラリとして利用されてい
たが、最近は開発が停止している様子
• GraphStream の導入
– サイト: http://graphstream-project.org/
– jar ファイルにクラスパスを通せば(コンパイル、実行
時だけでももちろん可)利用可能
2012/10/10 ビックデータとスマートな社会(第4回) 43
6. 大規模データのための並列化大規模データのための並列化大規模データのための並列化大規模データのための並列化
2012/10/10 ビックデータとスマートな社会(第4回) 44
Boost/Graph を用いた並列化を用いた並列化を用いた並列化を用いた並列化
• Boost で用意されている並列化
– MPIを用いる
– OpenMPを用いる
• 今回は OpenMP を紹介
2012/10/10 ビックデータとスマートな社会(第4回) 45
Boost/Graph with OpenMP
• OpenMP を利用するメリット
– マルチコアCPUを活用できる
– 既存のプログラムの拡張が容易
• スレッドなどをあまり意識する必要はない
– 主要コンパイラが対応
• (gcc, Visutal C++, Intel コンパイラなど)
– そこそこ、速度向上が見込める
• 速度をもとめるなら MPI のほうがよいみたいだが…
• OpenMP を利用するには
– gcc で作成したプログラムであれば、並列実行可能な部
分を拡張するだけでよい
– コンパイル時に –fopenmp を加えてコンパイルするだけ
• ただし、gcc 4.2 以降から正式サポート…
2012/10/10 ビックデータとスマートな社会(第4回) 46
OpenMPを用いたを用いたを用いたを用いた実装例実装例実装例実装例(1)
• closeness centrality の計算の場合
1. 各ノードの経路長平均の配列を準備する
2. ノードを一つ選択
1. ノードからすべてのノードへの距離を求める
2. 自身を除くすべてのノード間の距離の総和を求める
3. ノード数で正規化
3. 2 をすべてのノードに対して行う
4. すべてのノードの経路長平均の平均を求める
• 上記の2は、他の計算の影響を受けないため並
列化可能であるので、その部分をOpenMPで並
列化する
2012/10/10 ビックデータとスマートな社会(第4回) 47
OpenMPを用いた実装例を用いた実装例を用いた実装例を用いた実装例(2)
2012/10/10 ビックデータとスマートな社会(第4回) 48
#ifdef _OPENMP
#pragma omp parallel for private(i) schedule(guided) num_threads(omp_get_max_threads())
#endif
for(i = 0; i < num_vertices(g); i++){
//########## diameter, path length ##########
DistTable dist(num_vertices(g), 0);
breadth_first_search(g, i, visitor(distance_recorder(&dist[0])));
int count = 0;
VIter vi2, vi2_end;
for(tie(vi2, vi2_end) = vertices(g); vi2 != vi2_end; vi2++) {
if(i != *vi2 && (int)dist[*vi2] == 0)
count += (int)num_vertices(g);
else
count += (int)dist[*vi2];
if(diameter < dist[*vi2]) {
diameter = (int)dist[*vi2];
}
}
score[i] = (float)count / (float)(num_vertices(g) - 1);
}
OpenMPの宣言部の宣言部の宣言部の宣言部
下記下記下記下記ののののfor文のスレッド作成文のスレッド作成文のスレッド作成文のスレッド作成
スレッド割当ルール指定スレッド割当ルール指定スレッド割当ルール指定スレッド割当ルール指定
スレッドを実行するスレッドを実行するスレッドを実行するスレッドを実行するCPUの数の指定の数の指定の数の指定の数の指定
OpenMPの注意点の注意点の注意点の注意点
• for 文では、iterator は利用できない
2012/10/10 ビックデータとスマートな社会(第4回) 49
for(tie(vi, vi_end) = vertices(g); vi != vi_end; vi++) {
//########## diameter, path length ##########
DistTable dist(num_vertices(g), 0);
breadth_first_search(g, *vi, visitor(distance_recorder(&dist[0])));
int count = 0;
VIter vi2, vi2_end;
(中略)
score[*vi] = (float)count / (float)(num_vertices(g) - 1);
}
#ifdef _OPENMP
#pragma omp parallel for private(i) schedule(guided) num_threads(omp_get_max_threads())
#endif
for(i = 0; i < num_vertices(g); i++){
//########## diameter, path length ##########
DistTable dist(num_vertices(g), 0);
breadth_first_search(g, i, visitor(distance_recorder(&dist[0])));
int count = 0;
VIter vi2, vi2_end;
以下略
参考文献など参考文献など参考文献など参考文献など
2012/10/10 ビックデータとスマートな社会(第4回) 50
EXT.参考参考参考参考資料資料資料資料
2012/10/10 ビックデータとスマートな社会(第4回) 51
隣接行列からグラフデータを生成
2012/10/10 ビックデータとスマートな社会(第4回) 52
matrix = [[]] # 行列
rows = [] # row name
cols = [] # col name
begin
colp = true
n_row = 0 # 行数をカウント
File.open("sample.dot").each { |line| # ファイルを開き,1行ごとに読み込み
items = line.chomp!.split(",")
if(cols)
1.upto(items.size-1) { |n| # 1 から (items.size-1) まで数え上げる
cols.push(items[n]) # 列のヘッダを保存
}
cols = false
next # 現在のループを終了して次のループに以降
end
rows.push(items[0])
values = []
1.upto(items.size-1) { |n|
values.push(items[n].to_i) # items[n].to_i は、整数値に変換している
}
n_row += 1
}
2012/10/10 ビックデータとスマートな社会(第4回) 53
# graphviz DOT ファイルの出力
puts "graph G{" # graphviz DOT 宣言
puts "node [shape=rect]" # node の共通属性
puts "edge [style=dotted]" # edge の共通属性
n_row = 0
n_col = 0
matrix.each { |col|
col.each { |v|
if v == 1
puts "#{rows[n_row]} -- #{cols[n_col]}" # edgelist を出力
end
n_cols += 0
}
n_rows += 0
}
puts "}"
end
前の続き
J-Stageの論文メタデータの論文メタデータの論文メタデータの論文メタデータ取得取得取得取得(1)
• Twitter を含む論文を取得
2012/10/10 ビックデータとスマートな社会(第4回) 54
getJSTAGE_twitter.rb
require 'net/http'
begin
Net::HTTP.version_1_2
AGENTNAME = 'Mozilla/5.0 (X11; U; Linux i686; ja; rv:1.8.1.4) Gecko/200705'
@crawler = Net::HTTP.start('api.jstage.jst.go.jp', 80)
@query = “/searchapi/do?service=3&system=3&keyword=twitter”
puts @crawler.get(@query, 'User-Agent' <= AGENTNAME).body
end
← ネットワークライブラリの呼び出し
← HTTPを使うときのおまじない
← TCPの接続準備
← クエリー
← 結果を出力
キーワード指定サーバーとの通信
実行環境
% ruby getJSTAGE_twitter.rb
J-Stageのののの論文メタ論文メタ論文メタ論文メタデータデータデータデータ取得取得取得取得(2)
• 任意のキーワードを含むXMLデータの取得
2012/10/10 ビックデータとスマートな社会(第4回) 55
getJSTAGE.rb
require 'net/http'
begin
Net::HTTP.version_1_2
AGENTNAME = 'Mozilla/5.0 (X11; U; Linux i686; ja; rv:1.8.1.4) Gecko/200705'
@crawler = Net::HTTP.start('api.jstage.jst.go.jp', 80)
word = URI::encode(ARGV[0])
@query = “/searchapi/do?service=3&system=3&keyword=#{word}”
puts @crawler.get(@query, 'User-Agent' <= AGENTNAME).body
end
wordの値の代入
日本語を含む検索の場合はエンコードが必要
コマンドラインオプションの読み込み
実行環境
% ruby getJSTAGE.rb キーワード
RGLのサンプルのサンプルのサンプルのサンプル
2012/10/10 ビックデータとスマートな社会(第4回) 56
require 'rubygems'
require 'rgl/adjacency'
require 'rgl/dot'
dg=RGL::DirectedAdjacencyGraph[1,2 ,2,3 ,2,4, 4,5, 6,4, 1,6]
# Use DOT to visualize this graph:
dg.write_to_graphic_file('jpg')
puts dg.directed?
puts dg.vertices
dg.add_vertex 7
dg.add_edge 2,7
dg.write_to_graphic_file('jpg')
← RGL ライブラリの呼び出し
←rubygems
←グラフ構造モジュール(近接ノード)
←グラフ記述モジュール(DOT形式)
←グラフの宣言
←描画
← ノードの出力
← エッジの追加
← ノードの追加
JJJJ----STAGESTAGESTAGESTAGE WebAPIWebAPIWebAPIWebAPI のののの注意点注意点注意点注意点
• アクセスの頻度に明確な条件はないが、適度な間隔
で
• 1回のリクエストには、最大2000アイテムまでなので、
それ以上のアイテムを取得するには、クエリのコント
ロールが必要。
• 詳細は、利用規約を確認のうえマニュアルを参照のこ
と
– http://info.jstage.jst.go.jp/info_server_api/terms_api.html
• なお、現時点(2012/09/24)でWebAPIは準備中になっ
てしまっているので、利用できないかもしれない。その
際には CiNii の利用を薦めます。
2012/10/10 ビックデータとスマートな社会(第4回) 57
Twitter データの簡易な収集
• Tiny Tweet Crawler(TTC)/Tiny Tweet
Tracker(TTT)
– 大阪大学松村准教授が提供するアプリ
• TTC: 検索キーワードを含むつぶやきを最大1500個取
得可能
• TTT: 検索キーワードを含むつぶやきを30秒ごとに取
得
– Windows/Macで動作
2012/10/10 ビックデータとスマートな社会(第4回) 58
GraphStream のサンプルのサンプルのサンプルのサンプル
2012/10/10 ビックデータとスマートな社会(第4回) 59

Mais conteúdo relacionado

Mais procurados

相関と因果について考える:統計的因果推論、その(不)可能性の中心
相関と因果について考える:統計的因果推論、その(不)可能性の中心相関と因果について考える:統計的因果推論、その(不)可能性の中心
相関と因果について考える:統計的因果推論、その(不)可能性の中心
takehikoihayashi
 
Rでソーシャルネットワーク分析
Rでソーシャルネットワーク分析Rでソーシャルネットワーク分析
Rでソーシャルネットワーク分析
Hiroko Onari
 
状態空間モデルの考え方・使い方 - TokyoR #38
状態空間モデルの考え方・使い方 - TokyoR #38状態空間モデルの考え方・使い方 - TokyoR #38
状態空間モデルの考え方・使い方 - TokyoR #38
horihorio
 
PRML上巻勉強会 at 東京大学 資料 第1章前半
PRML上巻勉強会 at 東京大学 資料 第1章前半PRML上巻勉強会 at 東京大学 資料 第1章前半
PRML上巻勉強会 at 東京大学 資料 第1章前半
Ohsawa Goodfellow
 

Mais procurados (20)

CV分野におけるサーベイ方法
CV分野におけるサーベイ方法CV分野におけるサーベイ方法
CV分野におけるサーベイ方法
 
相関と因果について考える:統計的因果推論、その(不)可能性の中心
相関と因果について考える:統計的因果推論、その(不)可能性の中心相関と因果について考える:統計的因果推論、その(不)可能性の中心
相関と因果について考える:統計的因果推論、その(不)可能性の中心
 
機械学習モデルのハイパパラメータ最適化
機械学習モデルのハイパパラメータ最適化機械学習モデルのハイパパラメータ最適化
機械学習モデルのハイパパラメータ最適化
 
Rでソーシャルネットワーク分析
Rでソーシャルネットワーク分析Rでソーシャルネットワーク分析
Rでソーシャルネットワーク分析
 
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
 
因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説
 
グラフデータ分析 入門編
グラフデータ分析 入門編グラフデータ分析 入門編
グラフデータ分析 入門編
 
機械学習と主成分分析
機械学習と主成分分析機械学習と主成分分析
機械学習と主成分分析
 
2 6.ゼロ切断・過剰モデル
2 6.ゼロ切断・過剰モデル2 6.ゼロ切断・過剰モデル
2 6.ゼロ切断・過剰モデル
 
推薦アルゴリズムの今までとこれから
推薦アルゴリズムの今までとこれから推薦アルゴリズムの今までとこれから
推薦アルゴリズムの今までとこれから
 
R seminar on igraph
R seminar on igraphR seminar on igraph
R seminar on igraph
 
ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介
 
傾向スコアの概念とその実践
傾向スコアの概念とその実践傾向スコアの概念とその実践
傾向スコアの概念とその実践
 
優れた研究論文の書き方
優れた研究論文の書き方優れた研究論文の書き方
優れた研究論文の書き方
 
状態空間モデルの考え方・使い方 - TokyoR #38
状態空間モデルの考え方・使い方 - TokyoR #38状態空間モデルの考え方・使い方 - TokyoR #38
状態空間モデルの考え方・使い方 - TokyoR #38
 
『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会
 
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
 
MICの解説
MICの解説MICの解説
MICの解説
 
PRML上巻勉強会 at 東京大学 資料 第1章前半
PRML上巻勉強会 at 東京大学 資料 第1章前半PRML上巻勉強会 at 東京大学 資料 第1章前半
PRML上巻勉強会 at 東京大学 資料 第1章前半
 
距離と分類の話
距離と分類の話距離と分類の話
距離と分類の話
 

Destaque

Social network analysis & Big Data - Telecommunications and more
Social network analysis & Big Data - Telecommunications and moreSocial network analysis & Big Data - Telecommunications and more
Social network analysis & Big Data - Telecommunications and more
Wael Elrifai
 
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Hisao Soyama
 
python-twitterを用いたTwitterデータ収集
python-twitterを用いたTwitterデータ収集python-twitterを用いたTwitterデータ収集
python-twitterを用いたTwitterデータ収集
Hikaru Takemura
 
RとPythonによるデータ解析入門
RとPythonによるデータ解析入門RとPythonによるデータ解析入門
RとPythonによるデータ解析入門
Atsushi Hayakawa
 

Destaque (20)

SciREX「ナショナルイノベーションシステムに係る定量データとその分析手法」WSシリーズ第6回 「ネットワーク分析の方法+WSシリーズまとめ」
SciREX「ナショナルイノベーションシステムに係る定量データとその分析手法」WSシリーズ第6回「ネットワーク分析の方法+WSシリーズまとめ」 SciREX「ナショナルイノベーションシステムに係る定量データとその分析手法」WSシリーズ第6回「ネットワーク分析の方法+WSシリーズまとめ」
SciREX「ナショナルイノベーションシステムに係る定量データとその分析手法」WSシリーズ第6回 「ネットワーク分析の方法+WSシリーズまとめ」
 
Gephi Tutorial Visualization (Japanese)
Gephi Tutorial Visualization (Japanese)Gephi Tutorial Visualization (Japanese)
Gephi Tutorial Visualization (Japanese)
 
実践で学ぶネットワーク分析
実践で学ぶネットワーク分析実践で学ぶネットワーク分析
実践で学ぶネットワーク分析
 
Rubyによるデータ解析
Rubyによるデータ解析Rubyによるデータ解析
Rubyによるデータ解析
 
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
 
潜在トピックとネットワーク分析
潜在トピックとネットワーク分析潜在トピックとネットワーク分析
潜在トピックとネットワーク分析
 
Social network analysis & Big Data - Telecommunications and more
Social network analysis & Big Data - Telecommunications and moreSocial network analysis & Big Data - Telecommunications and more
Social network analysis & Big Data - Telecommunications and more
 
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
 
Big Data Analytics : A Social Network Approach
Big Data Analytics : A Social Network ApproachBig Data Analytics : A Social Network Approach
Big Data Analytics : A Social Network Approach
 
Big Data: Social Network Analysis
Big Data: Social Network AnalysisBig Data: Social Network Analysis
Big Data: Social Network Analysis
 
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境10分でわかるPythonの開発環境
10分でわかるPythonの開発環境
 
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python
 
python-twitterを用いたTwitterデータ収集
python-twitterを用いたTwitterデータ収集python-twitterを用いたTwitterデータ収集
python-twitterを用いたTwitterデータ収集
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
 
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
 
PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門
 
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編
 
Python東海Vol.5 IPythonをマスターしよう
Python東海Vol.5 IPythonをマスターしようPython東海Vol.5 IPythonをマスターしよう
Python東海Vol.5 IPythonをマスターしよう
 
RとPythonによるデータ解析入門
RとPythonによるデータ解析入門RとPythonによるデータ解析入門
RとPythonによるデータ解析入門
 
Pythonで簡単ネットワーク分析
Pythonで簡単ネットワーク分析Pythonで簡単ネットワーク分析
Pythonで簡単ネットワーク分析
 

Semelhante a 大規模ネットワーク分析 篠田

おしゃスタ@リクルート
おしゃスタ@リクルートおしゃスタ@リクルート
おしゃスタ@リクルート
Issei Kurahashi
 
2013年度enPiT特設講義-iisec-2013-11-09-セキュアシステムのインターネットと SNS上での構築とその課題
2013年度enPiT特設講義-iisec-2013-11-09-セキュアシステムのインターネットとSNS上での構築とその課題2013年度enPiT特設講義-iisec-2013-11-09-セキュアシステムのインターネットとSNS上での構築とその課題
2013年度enPiT特設講義-iisec-2013-11-09-セキュアシステムのインターネットと SNS上での構築とその課題
Ruo Ando
 

Semelhante a 大規模ネットワーク分析 篠田 (20)

tut_pfi_2012
tut_pfi_2012tut_pfi_2012
tut_pfi_2012
 
Linked Open Dataで市民協働と情報技術者をつなげる試み
Linked Open Dataで市民協働と情報技術者をつなげる試みLinked Open Dataで市民協働と情報技術者をつなげる試み
Linked Open Dataで市民協働と情報技術者をつなげる試み
 
ビックデータ分析基盤の成⻑の軌跡
ビックデータ分析基盤の成⻑の軌跡ビックデータ分析基盤の成⻑の軌跡
ビックデータ分析基盤の成⻑の軌跡
 
Jubatus: 分散協調をキーとした大規模リアルタイム機械学習プラットフォーム
Jubatus: 分散協調をキーとした大規模リアルタイム機械学習プラットフォームJubatus: 分散協調をキーとした大規模リアルタイム機械学習プラットフォーム
Jubatus: 分散協調をキーとした大規模リアルタイム機械学習プラットフォーム
 
Session4:「先進ビッグデータ応用を支える機械学習に求められる新技術」/比戸将平
Session4:「先進ビッグデータ応用を支える機械学習に求められる新技術」/比戸将平Session4:「先進ビッグデータ応用を支える機械学習に求められる新技術」/比戸将平
Session4:「先進ビッグデータ応用を支える機械学習に求められる新技術」/比戸将平
 
AI_IoTを活用する企業のあり方
AI_IoTを活用する企業のあり方AI_IoTを活用する企業のあり方
AI_IoTを活用する企業のあり方
 
おしゃスタ@リクルート
おしゃスタ@リクルートおしゃスタ@リクルート
おしゃスタ@リクルート
 
避けては通れないビッグデータ周辺の重要課題
避けては通れないビッグデータ周辺の重要課題避けては通れないビッグデータ周辺の重要課題
避けては通れないビッグデータ周辺の重要課題
 
20180525 system department manager microservices
20180525 system department manager microservices20180525 system department manager microservices
20180525 system department manager microservices
 
Standardization of Healthcare Cloud Security and Crowdsourcing
Standardization of Healthcare Cloud Security and Crowdsourcing Standardization of Healthcare Cloud Security and Crowdsourcing
Standardization of Healthcare Cloud Security and Crowdsourcing
 
2013年度enPiT特設講義-iisec-2013-11-09-セキュアシステムのインターネットと SNS上での構築とその課題
2013年度enPiT特設講義-iisec-2013-11-09-セキュアシステムのインターネットとSNS上での構築とその課題2013年度enPiT特設講義-iisec-2013-11-09-セキュアシステムのインターネットとSNS上での構築とその課題
2013年度enPiT特設講義-iisec-2013-11-09-セキュアシステムのインターネットと SNS上での構築とその課題
 
機械学習応用システムのアーキテクチャ・デザイパターン(2020-07 ドラフトバージョン))
機械学習応用システムのアーキテクチャ・デザイパターン(2020-07 ドラフトバージョン))機械学習応用システムのアーキテクチャ・デザイパターン(2020-07 ドラフトバージョン))
機械学習応用システムのアーキテクチャ・デザイパターン(2020-07 ドラフトバージョン))
 
Mobile groundswell
Mobile groundswellMobile groundswell
Mobile groundswell
 
オープンデータをつかう図書館、オープンデータをつくる図書館@京都図書館大会(2015.8.17)
オープンデータをつかう図書館、オープンデータをつくる図書館@京都図書館大会(2015.8.17)オープンデータをつかう図書館、オープンデータをつくる図書館@京都図書館大会(2015.8.17)
オープンデータをつかう図書館、オープンデータをつくる図書館@京都図書館大会(2015.8.17)
 
リクルートのビッグデータ活用基盤とビッグデータ活用のためのメタデータ管理Webのご紹介
リクルートのビッグデータ活用基盤とビッグデータ活用のためのメタデータ管理Webのご紹介リクルートのビッグデータ活用基盤とビッグデータ活用のためのメタデータ管理Webのご紹介
リクルートのビッグデータ活用基盤とビッグデータ活用のためのメタデータ管理Webのご紹介
 
WSDM2016報告会−参加報告#yjwsdm
WSDM2016報告会−参加報告#yjwsdmWSDM2016報告会−参加報告#yjwsdm
WSDM2016報告会−参加報告#yjwsdm
 
SSII2022 [OS3-02] Federated Learningの基礎と応用
SSII2022 [OS3-02] Federated Learningの基礎と応用SSII2022 [OS3-02] Federated Learningの基礎と応用
SSII2022 [OS3-02] Federated Learningの基礎と応用
 
MultiRec: A Multi-Relational Approach for Unique Item Recommendation in Aucti...
MultiRec: A Multi-Relational Approach for Unique Item Recommendation in Aucti...MultiRec: A Multi-Relational Approach for Unique Item Recommendation in Aucti...
MultiRec: A Multi-Relational Approach for Unique Item Recommendation in Aucti...
 
Introduction of network analysis with Google Colaboratory -- Example of Netwo...
Introduction of network analysis with Google Colaboratory -- Example of Netwo...Introduction of network analysis with Google Colaboratory -- Example of Netwo...
Introduction of network analysis with Google Colaboratory -- Example of Netwo...
 
FIWARE Overview and description of GEs
FIWARE Overview and description of GEsFIWARE Overview and description of GEs
FIWARE Overview and description of GEs
 

Mais de Kosuke Shinoda

Mais de Kosuke Shinoda (6)

PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
 
エゴセントリックネットワークを用いた同義語・類義語の判別の検討
エゴセントリックネットワークを用いた同義語・類義語の判別の検討エゴセントリックネットワークを用いた同義語・類義語の判別の検討
エゴセントリックネットワークを用いた同義語・類義語の判別の検討
 
人狼知能セミナー資料案20170624
人狼知能セミナー資料案20170624人狼知能セミナー資料案20170624
人狼知能セミナー資料案20170624
 
社会と人工知能特集「仮想化する社会」
社会と人工知能特集「仮想化する社会」社会と人工知能特集「仮想化する社会」
社会と人工知能特集「仮想化する社会」
 
「人狼知能」没原稿 社会的知能を目指して
「人狼知能」没原稿 社会的知能を目指して「人狼知能」没原稿 社会的知能を目指して
「人狼知能」没原稿 社会的知能を目指して
 
人狼知能プログラミング演習資料2015
人狼知能プログラミング演習資料2015人狼知能プログラミング演習資料2015
人狼知能プログラミング演習資料2015
 

大規模ネットワーク分析 篠田