機械学習ライブラリ「 Spark MLlib 」で作るアニメレコメンドシステム
秋葉原 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 ヶ月半で4 G 、 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 は内部的にシーケンスな番号を付ける。
データの加工
80 万 Twitter ユーザー x 43 (2015 年冬期アニメ作品数 )3440 万レコードが推薦データとして MySQL に格納されている
MLlib で処理した結果UserID ProductID Rate354796 242 1.8322849817902473
354796 243 -2.5666437672644378
354796 244 0.385125554296764
354796 245 0.9550722901486512
実演
実演 補足
検証結果
• とらのあなは「うたわれるもの」を作っているアクアプラスと業務提携しているので発言数が多くなっている。▶それなりの正しい推薦であることが確認できた。
IT 系同人誌売ってます
Top Related