Upload
guest91c5ac
View
9.241
Download
2
Embed Size (px)
DESCRIPTION
twitterの関係性をfav情報を用いた無向重み付きグラフで分析してみた
Citation preview
Rでtwitterのクラスタをあぶりだしてみた
favorite機能による重み付きグラフ構造を用いたtwitterの社会ネットワーク分析
Tsukuba.R#4
@y_benjo
自己紹介
• twitter id : y_benjo
• hatena id : repose
– http://d.hatena.ne.jp/repose
• 春から院生
• 専門とか特にない
• LTということで
• 数式もプログラムも少なめでいきます
twitterではよく「クラスタ」とか言われます
ITクラスタ
変態クラスタ
アニメアイコンクラスタ
女装クラスタ
これをどうにか分析できないか
というわけでやってみる
仮説:クラスタ内で互いにふぁぼりあう
構想(1)
• Twitterの人間関係をグラフとして扱う
• その際、「どのユーザが誰の発言をfavっているか」を使って重み付有向グラフにしてみる
– fav:ある発言を「お気に入り」にいれる機能。
•「面白い発言」への反応
–有向グラフ:AからBにはつながっているが、BからAにはつながっていないような、非対称なグラフ
構想(2)
• クラスタリングはハードクラスタリングを
–ユーザがひとつのクラスタにのみ分割される
–「俺はつくばクラスタで変態クラスタだな」などというクラスタリングは無し
–フゔジゖクラスタリングだとクラスタの重複が可能だが、触ったことが無いので
まずはデータ収集
はじめてのクロール
whitelistを貰ってAPI叩きまくる
最初はグラフをプロットして目視で分割
そこでRのigraphパッケージ
• install.packages(“igraph”)
• 隣接行列からグラフを簡単に作れる優れもの
• plotも簡単
• Cytoscapeと組み合わせるともっと簡単
• これで勝つる!!!!
もうちょっと真っ当にやる
既存研究ありすぎワロタ
社会ネットワーク分析
• A Clauset, MEJ Newman, C Moore:
– Finding community structure in very largenetworks (2004)
• J. Duch and A. Arenas:
–Community detection in complex networks using extremal optimization (2005)
• ここらへんを試してみる
大雑把な考え方
• なる指標を考えて、この値が最大になるようにグラフをクラスタに分割していく
Rで実装する
• ソースは汚すぎるので…
• 慣例に従って有効グラフを無向グラフに変換
–具体的には、AがBをfavった回数とBがAをfavった回数を平均してA-B間の重みに
少し考える• ゕルゴリズムのはO(N^2ln^2)
• ユーザごとの重みの総和を図にしてみても、5000id全て計算するのは無駄っぽそう…
–とりあえず329人分
計算:48時間ぐらい
結果:329userが75クラスタに
傾向:細かく分割されすぎ
サイズにばらつきありすぎ
大きなクラスタをいくつか紹介
329userの全クラスタ内訳はblogにアップします
変態クラスタ(最大、90user)
GUMIMI
zeppel
Hajimepg
GUMIMI, HOJ, Hajimepg, Palpha,
SAN_Morishi, Sebastianus, TEtra11, Toyolina,
Wing_of_Blood, aki426, aorenjar, bombtter,
camelletgo, ch1haya, chap_py, chcbigz, chief_szk,
choconono, cress_cc, emakko, enpitsu, evil07,
f_jiro, fortunathefate, fune, garandou, gokujo,
ha_ma, ha_ru_ka, halciondaze, hazime1373,
hetaremozu, hironao, itati0, k_katsura,kaiware007
kazusap, kek_kuten, konaken, koukai, kuroreva,
kuzu_doh, kyabesuke, lakililac, llcheesell, lolipuni,
m_soba, masumizaru, meba, migelfutosi,
mio_sakamoto, miru, myu65, mywalrus, nekocafe,
ni_no_, nisenisetila, nurutema, ocha39, onicks2,
ooabikoo, p_n_y, poyow, purelightway, ragusk,
rarihoma, rokudenashi, ruehaduki, sakakiyu,
sayn0, shitu, shy_azusa, sio_halfmoon, suiginex,
suiginth, syochin, syounenX, tato256, tc_501, ukix,
wakatter, xmmm, y883, ycums, ykzts, yteppei,
yumeka_, zeppel, zero_zaki_,
ITっぽいクラスタ(60user)
bulkneets
kotoriko
yuiseki
Ett, KIMAGURE, VoQn, a_dach, bambico,
bulkneets, chrcc, deadpop, eigokun,enraku
error403, fkgw, fuba, fuba_recorder,
hajime, harsch, hazy_moon, hironica,
hoge_systemz, irm_fyuk, isbsh, jazzanova,
jinon, kagawa, kanamoken, kkshow,
kotoriko, kudan_, kusigahama, kyoujin,
lalha, m0h1can, marco11, mayutan,
morygonzalez, nancii, natant12, nipotan,
oquno, penguinana, pha, placebogirl,
sachi_volta, saeko, saetomin, send_, slyl,
snoa, todesking, toriko, totoon, ugnews,
umelabo, wazurai, wyinoue, y_benjo,
yodaka, youpy, yuiseki,
ハチロククラスタ(11user)
Misho
kaeru_san
T_hash
Misho, T_Hash,
hayamiz, kaeru_san,
limitusus, mickey24,
natsutan, sak65536,
syou6162, tencube,
評論?クラスタ(8user)
hanemimi
kanose
wideangle
esehara, hanemimi,
kanose, kisoem,
matakimika, okadaic,
tsuda, wideangle,
補足
• その他のクラスタは1~4人で構成されるものが多い
–クラスタの構成userを見てみると、ある程度妥当性がありそうな面子が
• クラスター分析全般に言えることですが、これが絶対的な分割ではない
– fav情報のみで行っているという事を忘れずに
結論
• 結構それっぽい感じで抽出できたと思う
–今回は小規模だったが、極端な話5000userで計算しても同様のクラスタが得られるので、そう考えると面白いんじゃないかと
• 欠点:計算時間かかりすぎ
–行列計算が楽なだけでRでやる必要があまりない
–定期的にクロールさせてクラスタの状況を更新していく、とかさせてみたい……
ありがとうございました
使用環境:R, Ruby, Meadow (ruby-mode ,ESS)
参考文献
:Finding community structure in very large networks (2004)
:Community detection in complex networks using extremal optimization (2005)