どこでも見れるメモ帳

ソフトウェアに関する備忘録を投稿します.何かあれば気軽にコメントください♪

はてブのタグ付けを因果ネットワークで表示してみた(個人版)

はじめに

個人の興味の移ろいを、タグ付けの因果*1で視覚化できるのでは?と思い、試してみました。
今回も自分自身の「はてブ」で試しました。

視覚化までの流れ

こちら(イベントの時系列分析による因果関係知識の獲得)を参考にアレンジして実装してみました。

流れを簡単にまとめると、次の通りです。

  1. タグ付け系列を生成*2
  2. タグ付け系列を、Kleinbergのバースト系列(列挙型)で連続化 https://github.com/KenshoFujisaki/AnalyseHatenaBookmarkTagSeries/raw/master/img/burst.png
  3. 連続化したタグ付け系列の全ペアについて、タグ間に因果関係が存在するかGranger因果検定でテスト
  4. テスト通過したタグ付け系列ペアについて、ネットワークで因果関係を描画 https://github.com/KenshoFujisaki/AnalyseHatenaBookmarkTagSeries/raw/master/img/granger_small.png もっとたくさん表示した場合*3https://github.com/KenshoFujisaki/AnalyseHatenaBookmarkTagSeries/raw/master/img/granger_large.png

結果について

なんだかそれっぽい因果もあるように見えますが、うーん…微妙。
微妙な理由を挙げてみると、次の通りです。

  1. 「まとめ」や「twitter」といった、興味対象自体ではないタグが邪魔する*4
  2. 個人だとデータ量が少なすぎて、バースト系列が信頼できない*5
  3. Granger因果検定が正しく動作しているのか謎

改善案として、以下を考えています。
しかし、いずれの改善策も厳し目な印象です。

  1. ネットワーク次数が高すぎるタグは除去する*6
  2. タグでなく、Webページの本文も使う*7
  3. 第三者変数による影響を考慮する*8

おわりに

いろいろと思考錯誤した割に、単純な共起ネットワーク*9よりも結果が微妙だった*10ので、
なんとも煮え切らない気持ちになりました。
同じ方針*11だと興味推移を捉えるのは難しそうなので、次は別の方針で行きたいと思います。
以前試したDynamic Topic Model(以下リンク)のほうが今回よりは良かったので、次は再度トピックモデル関係の手法で試してみようかな*12と思います。 github.com

今回作ったスクリプトGitHubにアップしました。
github.com

関連記事

ni66ling.hatenadiary.jp

ni66ling.hatenadiary.jp

ni66ling.hatenadiary.jp

*1:タグ付けの因果とは、例えば、Xタグを付けると、Yタグを付ける傾向があり、また、Yタグを付けると、Zタグを付ける傾向があるとします。このとき、X→Y→Zというタグ付けの因果が生じているとします。具体例で言うと、DeepLearning→RNN→LSTMなど。

*2:タグそれぞれについて、そのタグを付けたWebページの通し番号を取得。この通し番号を時刻とみなします。

*3:表示の閾値を緩めた場合

*4:「まとめ」や「twitter」といったタグを媒介すれば、あらゆるタグに到達できてしまう。興味の移ろいを見たい、というそもそもの意図からずれてしまう。

*5:特定のタグを100回、1000回と多く使うことはなく、数回程度であるため、多くのタグ付け系列は「バーストなにそれ?」状態になってしまう

*6:本当に次数が高いタグも除去するとマズいのですが…

*7:これだとトピックモデルを使ったほうが良いですよね…

*8:改善手法である偏Granger因果検定も試してみました。しかし、結果はこちらも微妙でした。

*9:関連記事をご参照ください。

*10:因果関係は取れませんが

*11:バースト系列+因果検定

*12:こちらの手法(Continuous-time Infinite Dynamic Topic Models)が気になっています。トピック数自動決定/連続時間のDTMらしいです。なんか強そう