Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

今日からわかる!ソーシャルグラフ解析

6,994 views

Published on

OSC2012北海道のセッション.
今日からわかる!ソーシャルグラフ解析についての発表資料です.
内容は
・ソーシャルグラフのグラフ構造
・有向グラフ,無向グラフ
・二部グラフ
・データ表現
・ライブラリ
・グラフDBの紹介
となっています.

Published in: Technology
  • Be the first to comment

今日からわかる!ソーシャルグラフ解析

  1. 1. 今日からわかる!(?)ソーシャルグラフ解析 複雑ネットワークとOSS How many friends do you have? 一般社団法人LOCAL おのでら だいち
  2. 2. 小野寺大地(onodes)
  3. 3. リアルろくろ小野寺大地(onodes)
  4. 4. 自己紹介✓ 苫小牧生まれ苫小牧育ち チーム苫小牧を作りたい✓ 北海道大学大学院 ✓ 複雑ネットワーク,クラスタって何?✓ 一般社団法人LOCAL✓ Ruby札幌✓ 好:酒,寝,肉,肉チャー,二郎,写真,温泉,ヱヴァ✓ 嫌:読書,英語,暑,睡眠妨害,窓...
  5. 5. はじめに
  6. 6. 本日の目的
  7. 7. 本日の目的
  8. 8. 本日の目的
  9. 9. 本日の目的
  10. 10. 複雑ネットワーク✓ グラフ構造を扱う研究分野✓ Twitter,Facebook,blog...も研究対象✓ 友達の友達は友達✓ 世界は狭い✓ 知り合いが超多い人は少なく,それなりの人が多い
  11. 11. 複雑ネットワーク✓ グラフ構造を扱う研究分野✓ Twitter,Facebook,blog...も研究対象✓ 友達の友達は友達✓ 世界は狭い✓ 知り合いが超多い人は少なく,それなりの人が多い
  12. 12. グラフ
  13. 13. 油 野菜 100 75 50 252007 2008 0 2009 2010
  14. 14. 油 野菜 100 75 50 252007 2008 0 2009 2010
  15. 15. 2007 2008 2009 2010 9% 14%50% 28%
  16. 16. 100 75 100 50 75 25 50 2007 0 2008 25 2009 201020072008 0 2009 2010 9% 14% 50% 28%
  17. 17. 100 75 100 50 75 25 50 2007 0 2008 25 2009 201020072008 0 2009 2010 9% 14% 50% 28%
  18. 18. グラフ?
  19. 19. ここで扱うグラフ✓ 人と人✓ モノとモノ✓ 人とモノ
  20. 20. ここで扱うグラフ✓ 人と人(一部グラフ)✓ モノとモノ(一部グラフ)✓ 人とモノ(二部グラフ)
  21. 21. ここで扱うグラフ✓ 人と人(一部グラフ)✓ モノとモノ(一部グラフ)✓ 人とモノ(二部グラフ)
  22. 22. 一部グラフ✓ Twitterのfollow follower関係✓ Facebookのfriend✓ リアルでの友人関係
  23. 23. 一部グラフ friend friendfriend friend
  24. 24. 一部グラフ follow followfollow follow
  25. 25. 一部グラフ followfollow follow
  26. 26. 本日の目的
  27. 27. 本日の目的✓ じゃあグラフ構造から誰が✓ 「もしかして知り合い?」✓ その人のデータ(居住地)からではできないの?
  28. 28. 本日の目的✓ じゃあグラフ構造から誰が✓ 「もしかして知り合い?」✓ その人のデータ(居住地)からではできないの? できない
  29. 29. 職歴 学歴 自己紹介基本データ住んだこと ある場所
  30. 30. 職歴 学歴 自己紹介 基本データ 住んだこと ある場所全く違う人でも知り合いなことはあるよね?
  31. 31. 一部グラフ friend friendfriend friend
  32. 32. もしかして知り合い? friend friend friend friend
  33. 33. 二部グラフ✓ amazonの購買データなどなど
  34. 34. 二部グラフ
  35. 35. 二部グラフ
  36. 36. 二部グラフ
  37. 37. 二部グラフ
  38. 38. グラフのみえる化
  39. 39. みえる化=可視化✓ ネットワークの可視化✓ 適当に人を配置してもダメ✓ どうすればいい配置になるの?
  40. 40. 可視化の方法✓ ランダム配置✓ kkっていう配置✓ FRっていう配置
  41. 41. ちょっと実演
  42. 42. 可視化✓ Twitterの可視化 ✓ @onodesから友達の友達まで ✓ ユーザ数30000くらい ✓ follow数35000くらい ✓ powered by Gephi & openord
  43. 43. 可視化
  44. 44. 可視化✓ Facebookの可視化✓ touch graph ✓ http://www.touchgraph.com/
  45. 45. 可視化touchgraph
  46. 46. グラフの計算
  47. 47. グラフの計算✓ コンピュータで計算しようと思ったとき✓ どうやって「繋がり」を保存すれば良いのか?
  48. 48. グラフの計算✓ 隣接行列(2次元配列) A B C AA 0 1 0 BB 1 0 1 CC 0 1 0
  49. 49. グラフの計算✓ 隣接リスト a,b b,c A B c ... C ... ...
  50. 50. このあたりをやってくれる ライブラリ
  51. 51. ライブラリ✓ JUNG(Java)✓ iGraph(R,Python)✓ NetworkX(Python)
  52. 52. ライブラリ✓ JUNG(Java)✓ iGraph(R,Python)✓ NetworkX(Python)
  53. 53. JUNG✓ Javaで書かれたオープンソースライブラリ✓ グラフで表現可能なデータのサポート ✓ モデリング ✓ 分析 ✓ 可視化✓ http://jung.sourceforge.net/
  54. 54. JUNG✓ 簡単なソースコードとtutorial(日本語) ✓ http://www.cs.tsukuba.ac.jp/ misue/ open/tutorial/jung2/step1.html
  55. 55. JUNGimport edu.uci.ics.jung.graph.Graph;import edu.uci.ics.jung.graph.UndirectedSparseGraph;public class Sample1a { public static void main(String[] args) { Graph<Integer,Integer> graph = newUndirectedSparseGraph<Integer,Integer>(); graph.addVertex(1); graph.addVertex(2); graph.addVertex(3); graph.addEdge(101, 1, 2); graph.addEdge(102, 2, 3); System.out.println("Graph G = " + graph.toString()); }}
  56. 56. JUNGimport edu.uci.ics.jung.graph.Graph;import edu.uci.ics.jung.graph.UndirectedSparseGraph;public class Sample1a { public static void main(String[] args) { Graph<Integer,Integer> graph = newUndirectedSparseGraph<Integer,Integer>(); graph.addVertex(1); graph.addVertex(2); graph.addVertex(3); graph.addEdge(101, 1, 2); graph.addEdge(102, 2, 3); System.out.println("Graph G = " + graph.toString()); }}
  57. 57. ライブラリ✓ JUNG(Java)✓ iGraph(R,C++,Python)✓ NetworkX(Python)
  58. 58. NetworkXimport networkximport pylabg = networkx.Graph()g.add_edge("A", "B")g.add_edge("B", "C")networkx.draw(g)pylab.savefig("network.png")
  59. 59. さらに大規模化へ
  60. 60. GraphDBの紹介
  61. 61. GraphDB✓ GraphDB ✓ あるデータと接続しているデータを調べるために インデックスを参照しない ✓ あるデータからの接続関係でデータを見つける
  62. 62. GraphDB friend friendfriend friend
  63. 63. GraphDB✓ データベースといえばクエリ✓ GraphDBのクエリは?インデックス参照しない...?
  64. 64. GraphDB✓ Query = Traversal ✓ 関係性,接続が大事 ✓ このデータからあのデータまでの最短経路って? ✓ このデータに関係するデータ一覧はどれ?
  65. 65. GraphDB✓ 簡単なまとめ ✓ GraphDBを使うべき場面 ✓ あるデータからあるデータまでの距離が知りたい ✓ この人の友達の友達は何人いる? ✓ 使わない方がいい場面 ✓ データの中からこの条件に合うデータを見つける
  66. 66. GraphDB✓ 種類 ✓ OrientDB ✓ Neo4j ✓ sones ✓ info grid...
  67. 67. まとめ
  68. 68. まとめ✓ SNSの普及で人と人,モノとモノの繋がりが見えるよ うになってきた✓ 繋がりから色々「オススメ」ができる✓ この繋がりがネットワーク✓ 扱うにはGraphを扱うライブラリ,DBが有効✓ Facebookとかに色々バレている毎日
  69. 69. 今日使ったツールなど✓ Gephi(ネットワーク可視化)✓ iGraph(ネットワーク解析,可視化ライブラリ)✓ JUNG(ネットワーク解析,可視化ライブラリ)✓ OrientDB(GraphDB)✓ Gremlin(GraphDBアクセス用インタフェース)

×