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.

Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―

27,699 views

Published on

Published in: Technology

Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―

  1. 1. このスライドは、ダメ院生のクソみたいな日常を淡々と述べる物です。過度な期待はしないでください。
  2. 2. あと、部屋は明るくして、画面から3メートルは離れて見やがって下さい。
  3. 3. Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました― @who_you_me
  4. 4. このスライドの目的● とある元院生の修論体験記を通して – Pythonのステマをする – ソーシャルデータ分析に便利なツールを知る – 実際のソーシャルデータ分析の流れを知る ● ただし自己流ですが
  5. 5. 修論の概要● Twitterの分析● リスト機能を使って自分とこの学生のアカウ ントを抽出● 2010年12月~2011年9月の期間、プロ フィール、フォロワー、ツイート等を取得
  6. 6. ● スケールこのくらい – アカウント数:1,631 – ツイート数:1,174,684● このデータをもとにテキストマイニングやっ たりクラスタリングしたりネットワーク分析 やったり
  7. 7. 下準備● 研究テーマどうしよう? – 適当にTwitter API叩いてたら楽しかったので、 適当にデータ取って分析でもするか● 言語なにつかおう? – Python!!!! – 先生がPythonの人だったので
  8. 8. データの収集● Twitter APIからデータ取得● 取り始める前に考えよう – 闇雲に集めても意味ないよ! – 分析対象は誰?何?● ランダムサンプリングはあんま意味ない – ネットワーク分析できないし…… – 対象となるトピック、コミュニティを絞ろう
  9. 9. ● 生のAPI叩くより、各言語のラッパー使った 方がお手軽 – PythonならTweepyがお勧めらしい● ただし自分はラッパー使いませんでした – BASIC認証からOAuth認証に完全移行した直後 で、まだ対応してなかった、、、 – urllib, urllib2, oauth2などでゴリゴリと
  10. 10. Twitter APIの注意点● 1時間に350回しかAPI叩けない – 3垢作って回す – 毎月1日にデータ取得した – 日付変わると同時にスクリプト回す。昼前には終 わる● よく落ちる(今は知らん)● 仕様変わる(仕方ないけど)
  11. 11. データの永続化● 何も考えずにMySQLを使った● 今やるなら絶対にMongoDB使う – JSONでデータ取ってそのままぶち込むだけ。ス キーマレス最高!!! – MySQLだといちいちデータの形式に合わせてス キーマ定義するのめんどい
  12. 12. データ収集を始めて数ヶ月……データ溜まってきたし、そろそろ分 析するぞ!!
  13. 13. 就活
  14. 14. 内定出たことだし、そろそろ分析するぞ!!
  15. 15. まあでもまだ時間あるし、 ちょっと遊ぶか
  16. 16. ちょっと……?
  17. 17. 気付けば9月……(就活は4月に終わりました)
  18. 18. 月末に中間発表会があったような……
  19. 19. 分析するぞオラァ!!!!!● まずはグラフ描くよね – フォロー数、フォロワー数の分布 – 1ヶ月のツイート数 – こいつらの相関● matplotlibを使いましょう – Pythonのグラフ描画ライブラリ
  20. 20. ● テキストマイニングでもやるか● ツイート内容でユーザー分類できたら面白い よね● MeCabで形態素解析 – ツイートを単語に区切る● ユーザごとの名詞の使用頻度を算出● k-meansでクラスタリング
  21. 21. cluster 0 cluster 1 cluster 2 cluster 3・・・(名詞) 私(名詞) 僕(名詞) 俺(名詞)ゆう(動詞) わたし(名詞) 日本(名詞) ww(名詞)俺(名詞) lt(名詞) ありがとうございます(名詞) 僕(名詞)ラーメン(名詞) ありがとう(名詞) ブログ(名詞) マジ(名詞)ちょっと(名詞) gt(名詞) 考える(動詞) www(名詞)リアル(名詞) ちゃう(動詞) 本(名詞) at(名詞)一橋(名詞) うち(名詞) 仕事(名詞) 飲む(動詞)嘘(名詞) 食べる(動詞) 問題(名詞) やつ(名詞)食べる(動詞) バイト(名詞) 学生(名詞) 誰(名詞)まあ(副詞) ちゃん(名詞) 者(名詞) リア充(名詞)円(名詞) がんばる(動詞) 性(名詞) 卒論(名詞)とりあえず(副詞) かわいい(名詞) the(名詞) バイト(名詞)わかる(動詞) ふる(動詞) ため(名詞) 食う(動詞)なに(名詞) みんな(名詞) 読む(動詞) 君(名詞)寝る(名詞) 好き(名詞) 書く(動詞) わかる(動詞)大学(名詞) 楽しみ(名詞) 必要(名詞) 行く(名詞)曲(名詞) 先輩(名詞) 会(名詞) 友達(名詞)怖い(形容詞) 素敵(名詞) 話(名詞) やっぱ(副詞)無い(形容詞) ほんとに(副詞) ところ(名詞) とく(動詞)帰宅(名詞) こ(名詞) おれ(名詞) 奴(名詞)
  22. 22. ● MeCab-pythonで形態素解析● PyClusterでクラスタリング● どっちもCで書いてあるから実行早い!!
  23. 23. よーしなんとか中間発表 乗り切れそうだぞ!! と思った矢先……
  24. 24. PCを電車に置き忘れる \(^o^)/
  25. 25. 翌日発見されて事無きを得ました
  26. 26. データのバックアップ超大事!!! (当たり前)
  27. 27. 本格的に分析しましょう● 中間発表乗り切ったので、本腰入れて分析し よう!!! – 発表終わった直後にPS3買いに走ったのは内緒だぜぇ● データクリーニングしないと – ウチの学生じゃない垢含まれてる – プロフィールでだいたい判別できるかな?
  28. 28. ● 正解データ100個ぐらい用意してベイズ分類 器でも作るか? – 精度低そう● たかだか2,000アカウントぐらいだし、手作 業でやっちゃえ!!!!● 大量のプロフィールを「正解」「不正解」 「判別不能」に分類● 2日ぐらいで終わったからよかったよね
  29. 29. ゴールが見えてきたぞ!● ユーザのクラスタリング – 情報発信クラスタ – 日常会話クラスタ(男) – 日常会話クラスタ(女) – 中間クラスタ● 利用形態違うよねー – 情報発信はRT多い、PC使う – 日常会話は@多い、スマホ使う
  30. 30. ● 「片想い」に注目 – Facebookは対称 – Twitterは非対称● 情報発信する人ほど、片想い/片想われの比 率が高い – Twitterが情報発信によく使われるのって、関係 が非対称だからなのかなー
  31. 31. ● ネットワーク分析もやりましょう – 利用目的違う人たちって、ネットワーク上の分布 も離れてるのかな?● networkX!!!!!!
  32. 32. ● 情報発信する人たちはやや固まる傾向 – 他はバラバラ● とはいえ、違う利用目的の人も活発に交流し てるみたいだねー
  33. 33. と、分析終わったのはいいが● お前Python好きだな!● だって便利だもん● データ分析にはPythonだよ!!!
  34. 34. vs. C, Java, ...● Pythonの方が覚えるのが楽チン● コーディングも楽● もちろん実行速度は遅いけど……
  35. 35. vs. Ruby, Perl, ...● Pythonは分析系のライブラリが豊富 – Numpy, Scipy – matplotlib – NLTK – networkX● オライリーのいい感じの本はだいたいPython
  36. 36. vs. R● 最大のライバル!!! – 向こうはライバルと思ってないだろうけど……● 統計計算に特化してるだけあって、Rはすっ ごく手軽に計算できる
  37. 37. ● でも、実はRって大規模データに向いてない んだよね…… – メモリがすぐに溢れる● Pythonの方がメモリの扱いはお上手な気がす る● Pythonだと API叩いてデータ収集→DBに保 存→分析→グラフ描く まで1つの言語でで きる!!!
  38. 38. Pythonのステマは以上。続き● 分析はできたけど、これで終わりじゃない よ!!● 論文書いて発表するまでが修士論文です
  39. 39. 修士号取るまでが修論です● TeXで書きました。Wordなんか使ってられ るか● 製本出して提出すれば、あとは最終試験ある のみ!! – 先生の前でプレゼンして質疑応答 – 先生優しいし、楽勝だろ(ホジ
  40. 40. 最終試験当日の朝
  41. 41. PCがぶっ壊れる \(^o^)/
  42. 42. 発表資料USBメモリに入れといて よかった
  43. 43. 結論● Pythonは便利● 日頃の行いが良くない人には報いが訪れる – 神様っているんだね!!! – 報いに備えてバックアップを● 分析して終わり ではダメ – 論文とか、報告書とか、企画書とか、ブログとか
  44. 44. そう、どんなに良い分析したって アウトプットしないと 何の意味もない!!!
  45. 45. というわけで、発表者募集中です!! 社会ネットワーク分析勉強会

×