読者です 読者をやめる 読者になる 読者になる

どらちゃんのポッケ

R・統計・技術メモなど勉強ログ置き場

pillowsのライブのセットリストをネットワーク分析で可視化してみた話

  • ライブに行ったとき、「次の曲はなんだろうな』「この曲のあとにあの曲は反則」とかセットリストで一喜一憂しますよね?
  • セットリストの曲順のネットワークグラフ書いたら、ライブで演奏される曲のつながりが分かるのでは?と思い、セットリストのネットワーク分析をやってみることにした
    • という訳で、大好きなpillowsのセットリストで試ししてみました
  • ネットワーク分析の実装はPythonのnetworkxとRのigrahとOSScytoscapeをつかいました
    • 同じネットワーク分析を別々の実装で行いました

対象データ

  • 下記のライブのセットリストを対象とした
    • 個人的に好きなのは、CHEMICAL BUMP SHOW !!でした。

        the pillows TOUR 2013 "LOSTMAN GO TO CITY"
        SUMMER SONIC 2013
        the pillows fanclub live!
        TRIAL TOUR
        Energiia Tour
        HORN AGAIN TOUR
        Movement Tour
        CHEMICAL BUMP SHOW !!
        SUMMER SONIC 2010
        the pillows OOPARTS TOUR@東京・JCBホール(2/21)
      
    • データ構造は下記な感じ

        before,after
        Nan,White Ash
        White Ash,NO SELF CONTROL
        NO SELF CONTROL,Crazy Sunshine
        Crazy Sunshine,Skin heaven
      

分析方針

  • 1曲目→2曲目2曲目→3曲目というようにネットワークを作成
    • アンコールなどは、本編最後の曲→アンコール1曲目とした

python(networkx)での実装

  • 以下で終わり

      import networkx as nx
      import os
      import matplotlib.pyplot as plt
      os.chdir("/path/to/Data/pillows")
      G = nx.read_edgelist("pillows.csv", delimiter=',', nodetype=str)
      nx.draw(G)
      plt.show()
    
  • 結果
    • 見にくいなー。なんかオプションあるのかな?
    • 文字化けはご愛嬌ということで

f:id:sleeping_micchi:20140422234254p:plain

R(igraph)での実装

  • 以下で終わり

      #install.packages("igraph")
      library(igraph)
      d <- read.csv("pillows.csv")
      g <- graph.data.frame(d, directed = FALSE) #
      tkplot(g)
    
      eb <- edge.betweenness.community(g)
      V(g)$color <- eb$membership
      tkplot(g, vertex.size=12, vertex.label=V(g)$name, layout=layout.fruchterman.reingold)
    
      rw <- walktrap.community(g)
      V(g)$color <- rw$membership
      tkplot(g, vertex.size=12, vertex.label=V(g)$name, layout=layout.fruchterman.reingold)
    
  • 結果(tkplot)

    • walktrapでの、ネットワーク分類で色分けしてます
    • Rの方だと、コミュニティの抽出も簡単

    f:id:sleeping_micchi:20140422234212p:plain

cytoscapeでの実装

  • もはや、実装というか、CSVの読み込みというか・・・
  • 結果
    • 何もしてませんが。。。

    f:id:sleeping_micchi:20140422234149p:plain

まとめ

  • ということで、ネットワーク分析をメジャーな実装でやってみました。
  • コミュニティ抽出等を行うならR、きれいに見せたいのであればcytoscapeを選択すればいいのでは?と思ってます
  • pillowsはライブで色々な曲をやるから、つながりとかは見えにくいなーという印象。
  • それでも、「この世の果てまで」とか多くやっている曲のつながりとかは見えて、ふーんという感じ。
  • ランダムウォークでネットワーク抽出したら、ツアーごとになんとなく分類されていて、いい感じにコミュニティが抽出されてた
      - アルゴリズムをちゃんと見てみるか