Download - 機械学習ライブラリ「Spark MLlib」で作る アニメレコメンドシステム

Transcript
Page 1: 機械学習ライブラリ「Spark MLlib」で作る アニメレコメンドシステム

機械学習ライブラリ「 Spark MLlib 」で作るアニメレコメンドシステム

秋葉原 IT 戦略研究所野田純一

Page 2: 機械学習ライブラリ「Spark MLlib」で作る アニメレコメンドシステム

秋葉原 IT 戦略研究所のご紹介形態アニメに関するデータ解析が主体の同人サークル 兼 IT コミュニティメンバー 現在 11 名活動オープンソースカンファレンス出展、コミケ C89 出展、デブサミ等のイベントで発表合計 7 回

Page 3: 機械学習ライブラリ「Spark MLlib」で作る アニメレコメンドシステム

自己紹介所属GMO インターネット業務分野 ビッグデータ、機械学習アドテク

Page 4: 機械学習ライブラリ「Spark MLlib」で作る アニメレコメンドシステム

コミュニティコンセプトオタク業界の IT 化促進ビッグデータからアニメに関するトピックを解析する際に必要となる今期アニメ作品のマスターが取得できる API の開発。今までの手作業を自動化。オタク産業の IT 化は黒船企業に勝ちたい「僕 ( 日本人 ) が一番アニメをうまく扱えるんだ!!」

IT 界のトレンド技術のアニメへの適用ビッグデータ、機械学習、 AI を使った解析

Page 5: 機械学習ライブラリ「Spark MLlib」で作る アニメレコメンドシステム

目的:これのアニメ版が作りたい

Page 6: 機械学習ライブラリ「Spark MLlib」で作る アニメレコメンドシステム

作ったシステムhttp://tv-anime.biz/

Page 7: 機械学習ライブラリ「Spark MLlib」で作る アニメレコメンドシステム

ご注文は何のアニメですか?

Page 8: 機械学習ライブラリ「Spark MLlib」で作る アニメレコメンドシステム

今回のシステム「 tippy 」

Page 9: 機械学習ライブラリ「Spark MLlib」で作る アニメレコメンドシステム

Anime API の必要性についてWikipedia やまとめサイトから今期のアニメのタイトル名、タイトル略称、ハッシュタグなどを取得

今期の人気アニメを解析、統計、レポート出力

5時間

Page 10: 機械学習ライブラリ「Spark MLlib」で作る アニメレコメンドシステム

Anime API の必要性についてAnime API で今期のアニメのタイトル名、タイトル略称、ハッシュタグなどを取得

今期の人気アニメを解析、統計、レポート出力

10秒

Page 11: 機械学習ライブラリ「Spark MLlib」で作る アニメレコメンドシステム

• Hadoop の MapReduce とは別アプローチ (DAG) での並列分散集計処理を行う• インメモリー処理• Hadoop エコシステムの一部として扱われるが Hadoop と直接的な関係はない• API を利用できる言語は Scala, Java, Python

Spark について

Page 12: 機械学習ライブラリ「Spark MLlib」で作る アニメレコメンドシステム

• 機械学習用の Spark ライブラリ• 協調フィルタリングや Association Rule などが簡単に使えるようになっている。• Spark クラスタを構築し実行することでビッグデータに対して機械学習演算を処理できるようになる。

Spark MLlib について

Page 13: 機械学習ライブラリ「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 からデータを収集

Page 14: 機械学習ライブラリ「Spark MLlib」で作る アニメレコメンドシステム

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 は内部的にシーケンスな番号を付ける。

データの加工

Page 15: 機械学習ライブラリ「Spark MLlib」で作る アニメレコメンドシステム

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

Page 16: 機械学習ライブラリ「Spark MLlib」で作る アニメレコメンドシステム

実演

Page 17: 機械学習ライブラリ「Spark MLlib」で作る アニメレコメンドシステム

実演 補足

Page 18: 機械学習ライブラリ「Spark MLlib」で作る アニメレコメンドシステム

検証結果

• とらのあなは「うたわれるもの」を作っているアクアプラスと業務提携しているので発言数が多くなっている。▶それなりの正しい推薦であることが確認できた。

Page 19: 機械学習ライブラリ「Spark MLlib」で作る アニメレコメンドシステム

IT 系同人誌売ってます