機械学習ライブラリ「spark mllib」で作る アニメレコメンドシステムver 1.1
TRANSCRIPT
秋葉原IT戦略研究所
野田純一
秋葉原IT戦略研究所のご紹介
形態アニメに関するデータ解析が主体の同人サークル 兼 ITコミュニティ
メンバー
現在11名
活動オープンソースカンファレンス出展、コミケC89出展、デブサミ等のイベントで発表
合計7回
自己紹介
所属GMOインターネット
業務分野ビッグデータ、機械学習アドテク
コミュニティコンセプト
オタク業界のIT化促進ビッグデータからアニメに関するトピックを解析する際に必要となる今期アニメ作品のマスターが取得できるAPIの開発。今までの手作業を自動化。
オタク産業のIT化は黒船企業に勝ちたい「僕(日本人)が一番アニメをうまく扱えるんだ!!」
IT界のトレンド技術のアニメへの適用ビッグデータ、機械学習、AIを使った解析
目的:これのアニメ版が作りたい
作ったシステムhttp://tv-anime.biz/
ご注文は何のアニメですか?
今回のシステム「tippy」
Anime APIの必要性について
Wikipediaやまとめサイトから今期のアニメのタイトル名、タイトル略称、ハッシュタグなどを取得
今期の人気アニメを解析、統計、レポート出力
5時間
Anime APIの必要性について
Anime API で今期のアニメのタイトル名、タイトル略称、ハッシュタグなどを取得
今期の人気アニメを解析、統計、レポート出力
10秒
• HadoopのMapReduceとは別アプローチ(DAG)での並列分散集計処理を行う
• インメモリー処理
• Hadoopエコシステムの一部として扱われるがHadoopと直接的な関係はない
• APIを利用できる言語はScala, Java, Python
Sparkについて
• 機械学習用のSparkライブラリ
• 協調フィルタリングやAssociation Ruleなどが簡単に使えるようになっている。
• Sparkクラスタを構築し実行することでビッグデータに対して機械学習演算を処理できるようになる。
Spark MLlibについて
•TwitterのStreamingAPIで今期アニメ作品43作品に関するワードを拾ってくる。•とりあえずCSVに記録
•1ヶ月半で4G、1500万レコード程度
status.getId()
status.getUser().getScreenName()
status.getText()
status.getSource()
status.getRetweetCount()
status.getFavoriteCount()
status.getCreatedAt()
記録した要素
Twitterからデータを収集
UserName Tweet
tanaka おそ松さん面白い
mika ガンダム面白い
tanaka おそ松最高
daken ガンダム面白い
mika ラブライブ見る
UserID Product Rate
1 1 2
2 2 1
2 3 1
3 2 1
• 協調フィルタリングに読み込ませるため右表のフォーマットに
BigQueryで加工する。(AmazonMLもAzureMLなどもこの形式)
• SparkMLlibがUserIDがIntでないといけないという制限があるためTwitterIDは内部的にシーケンスな番号を付ける。
データの加工
Spark MLlib code
Spark MLlib code
モデルを作成
Spark MLlib code
モデルを使って予測(predict)
Sparkクラスタで実行
./bin/spark-submit --master spark://managerhost:7077 --executor-memory 25G--conf spark.driver.memory=4Ganime_collaborative_filtering_assembly-1.0.jar /var/data/anime.csv
Spark WEB UI
80万Twitterユーザー x 43 (2015年冬期アニメ作品数)
3440万レコードが推薦データとしてMySQLに格納
されている
MLlibで処理した結果
UserID ProductID Rate
354796 242 1.8322849817902473
354796 243 -2.5666437672644378
354796 244 0.385125554296764
354796 245 0.9550722901486512
実演
実演 補足
検証結果
• とらのあなは「うたわれるもの」を作っているアクアプラスと業務提携しているので発言数が多くなっている。▶それなりの正しい推薦であることが確認できた。
4/9「IT x アニメ」で勉強会します
http://akibalab.connpass.com/event/28293/