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.

協調フィルタリング with Mahout

15,296 views

Published on

協調フィルタ

Published in: Technology, Self Improvement

協調フィルタリング with Mahout

  1. 1. Mahout の協調フィルタで遊ぼ Karubi Namuru June 20th, 2010
  2. 2. 自己紹介 ● Karubi Namuru ● 博士(理学),情報科学 ● Kauli, inc. http://kau.li ● Twitter: @karubi ● Facebook: http://facebook.com/karubi ● 出身:広島 , 居住:東京 , Seongnam
  3. 3. 学生時代の話 ● 在学中の研究 ● 統計的手法による日常行動分析 – 実世界:ライフログ – ウェブ:閲覧, clicks 200 200 180 180 160 160 140 140 120 120 100 100 80 80 60 60 40 40 20 20 0 0
  4. 4. 現在使っている知識 ● 膨大な情報の処理 ● 疎な分散処理 ● 時系列情報を参照する情報推薦 ● コンテクスト抽出 ● 状況変化型の情報推薦 – いつも一緒ではない,時間は刻々と進む
  5. 5. 会社 ● 広告の会社,情報推薦を応用した配信最適化 ● Mahout を利用した商用システムも稼働中 ● 2009 年 09 月から,(自称)世界初の商用利用 ● 規模 ● 2010 年 02 月 2200 万 UBs (ユニークブラウザ) ● 2010 年 03 月 2840 万 UBs ● 2010 月 04 月 3208 万 UBs ● 2010 月 05 月 3816 万 UBs
  6. 6. 今日の内容 ● ネット上の資源で遊ぶ ● 前回のおさらい ● ネット上の情報源 – 映画の推薦情報 ● ネット上のライブラリ – Mahout ● 動かしてみる – 本日はアイテムベース ● 検証
  7. 7. 推薦(レコメンデーション) ● 概要 ● 潜在的な顧客にその人が欲しい商品を勧める ● ウェブ閲覧者のサイト閲覧履歴やクリック履歴など をもとにユーザの嗜好パターンを学習する ● アプローチ ● コンテンツベース ● ルールベース ● 協調フィルタリング
  8. 8. 協調フィルタリング ● 似た人が与えた評価を利用して,アイテムの評 価を予測する ● 多くの利用者の嗜好情報を蓄積すること ● ある人と嗜好の類似する他の人の情報 ● クチコミの原理と例えられる – 趣味の似た人からの意見を参考にする
  9. 9. 考え方 ● ユーザ A がアイテム X を好む ● アイテム X を好む別のユーザ B が好むアイテム Y が存在する ● ユーザ A もアイテム Y を好むのではないか ● 実装で利用するのはユーザ同士の類似度 – たとえば,同じアイテムにつけた評価の相関係数
  10. 10. 対象する情報 ● 明示的な情報源 ● ユーザの評価がついているもの – レビュー ● 明示的に選択したもの – 評価ポイント ● 暗示的な情報源 ● システムの操作履歴 – ブラウザの閲覧履歴
  11. 11. 明示的な情報の具体例 ● 評価の内容 ● 例えば映画の場合 – この映画は面白かった,つまらなかった – ◯◯ 点 や ☆の数 – 評価を与えた映画の組み合わせ ● レビューリスト
  12. 12. ネット上の情報源 ● 公開されている明示的な情報源(一部) ● The Netflix prize datasets – Netflix :アメリカのオンライン DVD レンタルサービス – 1 億レコード以上 – 480,189 人が 17,770 タイトルについて評価 ● Grouplens Research – ミネソタ大の研究チーム, MovieLens プロジェクト – 10 万, 100 万, 1000 万レコードの 3 つのデータ – 71,567 人が 10,681 タイトルについて評価( 1000 万)
  13. 13. 無料のライブラリで作ってみる ● STEP 1. Java の開発環境の設定をします ● 今回は JRE 6 と Eclipse を使います ● 実際にやってみたいという方は,以下のページでも 見てやってみてください ● Javaの道,Eclipse -1.インストール – この記事はわかりやすいのですが,ソフトウェアのバー ジョンが古いままです.最新版をダウンロードしても多 分大丈夫だと思います.
  14. 14. 動作環境を整える ● STEP 2. Mahout ライブラリをダウンロード ● Apache Mahout - Downloads and Releases – 最新版は 0.3  ( 2010 年 6 月現在) ● 解凍する
  15. 15. 動作環境を整える ● STEP 3. 開発環境に登録する ● ライブラリを Eclipse に登録する – Mahout-**-0.3.jar を使う – Javaの道, Eclipse-3.便利な機能(環境設定) – 「クラスパスの設定」の「4」参照 ● 依存するライブラリも登録しておく – 「 lib 」から, commons-logging-1.1.1.jar , slf4j-api- 1.5.8.jar , slf4j-jcl-1.5.8.jar , commons-cli-2.0- mahout.jar , uncommons-maths-1.2.jar – 「 lib 」全部登録しておいて問題ない
  16. 16. データダウンロード ● Step 4. 情報源をダウンロードする http://www.grouplens.org/node/73 ● 今回は 100 万レコードのデータを使う
  17. 17. データの中身 ● 映画情報 ● 1270::Back to the Future (1985)::   Comedy|Sci-Fi ● MovieID::Title::Genres ● それぞれ 1 本づつ ● 評価情報 ● 1::1270::5::978300055 ● UserID::MovieID::Rating::Timestamp ● 一人あたり 20 本分の評価
  18. 18. データを整形する(1) ● Step 5. Mahout で扱えるように整形 ● 解凍する ● 評価情報のみ切り抜く – テキストエディタなどでもなんとかできる量なので,切 り取っちゃう – タイトル情報を出力したいときは,タイトル情報やユー ザ情報部分も切り取る
  19. 19. データを整形する(2) ● Mahout 用に整形 – Mahout で使うデータ形式は「 UserId, MovieId, Rating 」 – Perl や Python や Excel などで「,」と TimeStamp の列を消す.
  20. 20. プログラミング ● Step 6. アイテムベース推薦のプログラム ● 説明します
  21. 21. 実行 ● Step 7. 推薦を動かす ● UserID: 1 について 5 タイトルが出力できた 557::Mamma Roma (1962)::Drama 53::Lamerica (1994)::Drama 1149::JLG/JLG - autoportrait de d 馗 embre (1994)::Documentary|Drama 1039::Synthetic Pleasures (1995)::Documentary 572::Foreign Student (1994)::Drama ● 自分のデータを登録しても推薦できる – 「 java.lang.OutOfMemoryError: Java heap space Exception in thread "main" 」が出た場合は以下のリンク. ● 以下のプログラムで出るエラーの意味がわかりません
  22. 22. まとめ ● 手軽に本格的なアイテムベースの推薦機能がつ くれた ● ネット上のリソースを使ってみた ● 無料のライブラリを使ってみた ● おもしろさを味わってみ ● ご質問ございましたらメールください gogokarubi@gmail.com まで

×