Successfully reported this slideshow.
Your SlideShare is downloading. ×

U-NEXT事例発表-レコメンドシステムのこれまでとこれから

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 71 Ad

U-NEXT事例発表-レコメンドシステムのこれまでとこれから

株式会社U-NEXT、Oisix株式会社、合同の勉強会です。両社で実際に行っている、データ分析や機械学習とそれを利用したパーソナライズやレコメンドの事例を公開します。

昨今の情報やツール類の充実でデータ分析、機械学習などが簡単にできるようになりましたが、それを実業務でつかって結果を出すとなると、「きれいなデータが揃わない」、「分析した結果をWebでレコメンドしてみたけどコンバージョンしない」など実践ならではの課題も多く、教科書的でないノウハウも必要だと痛感しています。

この勉強会は実業務で遭遇した困ったこと、うまくいったことなど実践ならではの情報の共有、情報交換の場とすることを目的としています。
http://oi-study.connpass.com/event/34741/

株式会社U-NEXT、Oisix株式会社、合同の勉強会です。両社で実際に行っている、データ分析や機械学習とそれを利用したパーソナライズやレコメンドの事例を公開します。

昨今の情報やツール類の充実でデータ分析、機械学習などが簡単にできるようになりましたが、それを実業務でつかって結果を出すとなると、「きれいなデータが揃わない」、「分析した結果をWebでレコメンドしてみたけどコンバージョンしない」など実践ならではの課題も多く、教科書的でないノウハウも必要だと痛感しています。

この勉強会は実業務で遭遇した困ったこと、うまくいったことなど実践ならではの情報の共有、情報交換の場とすることを目的としています。
http://oi-study.connpass.com/event/34741/

Advertisement
Advertisement

More Related Content

Slideshows for you (20)

Advertisement

Recently uploaded (20)

U-NEXT事例発表-レコメンドシステムのこれまでとこれから

  1. 1. U-NEXT事例発表 レコメンドシステムのこれまでとこれから コンテンツプラットフォーム事業部 2016年7月26日 Oisix × U-NEXT勉強会
  2. 2. 自己紹介 • 柿元 崇利 (かきもと たかとし) • 大学 / 大学院:分子生物学 (修士) • エンジニアになりそこねた理系人間 • 日本IBM(SE採用 営業入社) → 起業 → 断念 → U-NEXT
  3. 3. T 仲間紹介 • 田中 貴之 (たなか たかゆき) • 大学 / 大学院:分子生物学 (博士中退) • U-NEXTコールセンターのトップセールス (最初はビリ)からレコメンドの人へ転身
  4. 4. Agenda 1. U-NEXTの紹介 2. U-NEXTのレコメンドシステム 3. U-NEXTレコメンド実践ならではの課題と対策 4. まとめ
  5. 5. U-NEXTの紹介
  6. 6. 12万本 以上の映像コンテンツ 20万冊 以上の電子書籍 2016年4月時点
  7. 7. でも、 さすがに全部は見れないですよね
  8. 8. そうだ キュレーション、しよう
  9. 9. 2,300特集 専門編集者がキュレーション特集を作成 2015年10月時点
  10. 10. それでも、 やっぱり全部は見れないですよね
  11. 11. そうだ レコメンド、しよう
  12. 12. Recommenders: Tools to help identify worthwhile stuff 推薦システム: どれに価値があるかを特定するのを助ける道具 J. A. Konstan and J. Riedl. Recommender systems: Collaborating in commerce and communities. In Proc. of the SIGCHI Conf. on Human Factors in Computing Systems, Tutorial, 2003. レコメンドとは
  13. 13. U-NEXTのレコメンド より好きそうな作品 よ り 好 き そ う な 特 集
  14. 14. Aさんの 好きそうな作品 Bさんの 好きそうな作品 U-NEXTのレコメンド
  15. 15. U-NEXTのレコメンドシステム
  16. 16. レコメンドのビジネス的な要求・特徴 • 動画視聴を促進したい(動画視聴継続≒課金購読継続) • 100人いたら100通り、300万人なら300万通りの結果が欲しい • 同じ人でも、1日に1回くらい更新して欲しい • パフォーマンスは損ないたくない(目標応答時間: 100 msec) • でも、準備期間はさして長くない(◯ヶ月で商用リリースしたい)
  17. 17. 要求・特徴を満たすために考えたこと • とりあえずデータを放り込む場所を確保する • 小さく初めて試行錯誤する • レコメンドが動画視聴につながることを評価できるようにしておく
  18. 18. レコメンド エンジン ※自社開発 API SVR ※自社開発 Solr ※OSS ユーザーごとに異なる 作品紹介画面 CMS ※自社開発 行動ログ 加工済み データ ユーザー毎の レコメンド結果 レコメンドシステム 各種データ ・作品 ・特集 ・タグ ・視聴ログ ・評点 ・お気に入り ・レコメンド履歴 レコメンドリスト作成 ・各ユーザー ・ポストプレイ ・ランキングリストなど A/Bテスト 演算結果 • とりあえずデータをTreasure Dataへ突っ込む • Treasure Dataを計算にも最大活用してレコメンドエンジンは小さく始める • A/Bテストできるようにしておく
  19. 19. 結果
  20. 20. レコメンドあり レコメンドなし 視聴時間の長さが27.5%アップ 2016年2月時点
  21. 21. 57 58 59 60 61 62 63 64 65 レコメンド作品視聴率 全視聴の60.8%がレコメンドされた作品に 2016年6月時点
  22. 22. U-NEXTレコメンド 実践ならではの課題と対策
  23. 23. そもそもレコメンドシステムを 作ったことがある人がいない
  24. 24. 勉強して試行錯誤
  25. 25. バイブル 推薦システムのアルゴリズム Algorithms of Recommender Systems 神嶌 敏弘 ⟨ http://www.kamishima.net/ ⟩ Release: 2016-04-30 23:15:54 +0900; 30410b7 http://www.kamishima.net/archive/recsysdoc.pdf
  26. 26. レコメンドの方法 嗜好性の近さ 1. 協調フィルタリング(ユーザーベース) • あなたに似た人は、あの作品も見ています 2. 協調フィルタリング(アイテムベース) • これを見た人はあれも見ています 3. 内容ベース • この作品に近いのはあの作品です 内容の近さ
  27. 27. 嗜好性の近さ 1. 協調フィルタリング(ユーザーベース) • あなたに似た人は、あの作品も見ています 2. 協調フィルタリング(アイテムベース) • これを見た人はあれも見ています 3. 内容ベース • この作品に近いのはあの作品です 内容の近さ 協調フィルタリングしてみた
  28. 28. 評点(★数)の予測アルゴリズムやってみた • 論文で良く出てくる • 結果を評価しやすい • 過去データ全部使って試した • SlopeOne / Pearson /Matrix Factorization
  29. 29. 結果:データ量が絶望的に足りない • アクティブなユーザーでも、あまり評点をつけてくれていなかった • 評点データを持つユーザーの割合が圧倒的に足りなかった(nullばっか) • 予測結果が意味を成さない • ヽ(`Д´)ノ
  30. 30. 評点データを集めよう • 評点データを入れやすいようにしよう • アプリUIをいじらないといけない • UXを損なわないように情報設計しないといけない • WebとかApp StoreとかGoogle Playとか • ヽ(`Д´)ノ
  31. 31. 現実的に大量入手可能なデータを使おう Explicit feedback 明示的 ・評点(★数) ・アンケート Implicit feedback 暗黙的 ・動画再生ログ ・購入ログ ・クリックログ ・遷移ログ 手に入れるのが難しい 好みもわかる 手に入れるのが比較的容易 直接の好みまではわからない
  32. 32. 動画再生ログを使おう • 動画再生ログはU-NEXTの生命線 • 再生、一時停止、視聴再開・・・など精度の高いデータが集まる • 視聴時間の長さもわかる • 長時間視聴している=完走率が高い≒評点が高め と想定できる
  33. 33. 協調フィルタリング(ユーザーベース)してみた アイテム1 アイテム2 アイテム3 レコメンド 視聴 類似ユーザー
  34. 34. 1. 動画再生ログを集める • 必要データをTreasure Dataに集める 2. データをクレンジング、加工し、レコメンドエンジンに取り込む • td_commandでTreasure DataにSQLクエリを投げる • Treasure Dataの動画再生履歴から各作品の視聴完走率を求め、スコア化を行う 3. ユーザー同士の類似性を計算する • スコア化されたベクトルデータからユーザー同士の類似性を距離関数を用いて計算し、近傍ユーザーを取得する 4. レコメンド作品リストを算出 • 算出したユーザー同士の類似性と近傍ユーザーの視聴履歴から、ユーザーごとにレコメンド作品を算出する 協調フィルタリング(ユーザーベース)してみた
  35. 35. 結果:多くのユーザーに適切なレコメンドを返せなかった • 視聴しているユーザーには良い感じに近傍ユーザーを算出でき、レコメ ンド結果が得られた • 視聴数が少ないユーザーには、視聴していないユーザーが近いと算定さ れてしまった≒新規加入者や視聴数が少ないユーザーは、適切なレコメ ンド結果が得られなかった • ヽ(`Д´)ノ
  36. 36. アイテム1 アイテム2 アイテム3 類似アイテム レコメンド 視聴 協調フィルタリング(アイテムベース)してみた
  37. 37. 1. 動画再生ログを集める • 必要データをTreasure Dataに集める 2. データをクレンジング、加工し、レコメンドエンジンに取り込む • td_commandでTreasure DataにSQLクエリを投げる • Treasure Dataの動画再生履歴から各作品の視聴完走率を求め、スコア化を行う 3. 作品同士の類似性を計算する • スコア化されたベクトルデータから作品同士の類似性を距離関数を用いて計算し、近傍アイテムを取得する 4. レコメンド作品リストを算出 • 算出した作品同士の類似性と各ユーザーの視聴履歴から、ユーザーごとにレコメンド作品を算出する 協調フィルタリング(アイテムベース)してみた
  38. 38. いい感じの結果が得られた display_name rec_sakuhin_code display_name rec_score 新世紀エヴァンゲリオン SID0002648 進撃の巨人 0.13 新世紀エヴァンゲリオン SID0011645 HUNTER×HUNTER 0.09 新世紀エヴァンゲリオン SID0011863 寄生獣 セイの格率 0.09 新世紀エヴァンゲリオン SID0002286 化物語 0.09 新世紀エヴァンゲリオン SID0021362 暗殺教室 (第2期) 0.09 新世紀エヴァンゲリオン SID0013395 北斗の拳 0.09 新世紀エヴァンゲリオン SID0020090 おそ松さん 0.08 新世紀エヴァンゲリオン SID0013600 銀魂(1年目) 0.08 新世紀エヴァンゲリオン SID0002236 スラムダンク 0.08 新世紀エヴァンゲリオン SID0003261 ふしぎの海のナディア 0.08
  39. 39. 視聴時間も伸びた
  40. 40. 嗜好性の近さ 1. 協調フィルタリング(ユーザーベース) • あなたに似た人は、あの作品も見ています 2. 協調フィルタリング(アイテムベース) • これを見た人はあれも見ています 3. 内容ベース • この作品に近いのはあの作品です 内容の近さ 内容ベースしてみた
  41. 41. 内容ベースしてみた 1. コンテンツ情報を集める • 必要データをTreasure Dataに集める 2. 作品に付与されたタグデータを加工しレコメンドエンジンに取り込む • td_commandでTreasure DataにSQLクエリを投げる 3. アイテム同士の類似性を計算する • スコア化されたタグベクトルデータからアイテム同士の類似性を距離関数を用いて計算する 4. レコメンド作品リストを算出 • 算出したアイテム同士の類似性とユーザーの動画再生履歴から、ユーザーごとにレコメンド作品を算出する
  42. 42. 結果:まだまだ改善余地あり • 協調フィルタリング(アイテムベース)に比べて、レコメンド作品視聴 率がだいぶ低かった • が、協調フィルタリングでは望みにくいコールドスタート問題の解決と セレンディピティあるレコメンド結果を期待できる • これからもっとがんばろう
  43. 43. より良いアルゴリズムの開発 作品紹介のテキスト(あらすじなど) 形態素解析 (単語に分解) ベクトルデータ 単語 スコア スパイダー 1 活躍 1 映画 1 ・クラスタリング (クラス間の関係) ・アイテムベース (アイテム同士の近さ) ベクトル同士を比較
  44. 44. データ加工方法 • Apache Sparkでデータ加工 • Kuromojiで形態素解析 • 多次元データをt-SNEで次元削減( C++) • C++は 4GB 以上のメモリを使うため利用 • Java JNIでラップし、Scalaで実行
  45. 45. Spark processing overview Load Tokenize Vectorize Cluster Loads text data and assign class (assigned classes are maintained during processing) Tokenize text and produce: • plain tokens from Kuromoji • tokens with keyphrases combined Run word2vec on tokens with keyphrases Also do PCA with 128 components Runs t-SNE clustering on word2vec data • project to 3D, set iterations, PCA components (Implemented in C++ and used from Scala with Java JNI) Visualize Explore cluster space in 3D (web browser) • user WebGL for visualization
  46. 46. 開発仲間 クリスチャン・モエン ソフトウェアエンジニア Apache LuceneおよびApache Solrのコミッター (Kuromojiをベースにした)日本語サポートに携わる ノルウェー オスロ大学情報科学修士号取得 ゲーテ・ランバツェン ソフトウェアエンジニア ノキア・リサーチ・センターの東京オフィスでハードウェアおよびソフト ウェアのプロトタイプ開発に携わった後、 ソニーデジタルネットワークアプリケーションズ(SDNA)で、 コンシュー マー向けの電化製品開発、アティリカへ 立命館大学情報システム学修士号取得
  47. 47. レコメンド精度の評価は ユーザーを観察しないとわからない
  48. 48. 開発 テスト 本番 テスト 全体 適用 A/Bテストくらいやらないと・・・
  49. 49. ユーザー単位でロジック出し分け
  50. 50. レコメンド計算実行 # compute a recommendation score # set a parameter value
  51. 51. 非エンジニアも関わるにはGUI欲しい
  52. 52. A/Bテストツール(GUI)
  53. 53. レコメンドロジック設定画面
  54. 54. キュレーション特集の表示ロジック設定
  55. 55. ユーザーグループ設定画面
  56. 56. ロジックブレンド設定
  57. 57. スケジュール管理
  58. 58. イケてるロジックを 判断できないといけない
  59. 59. レコメンド評価 • ユーザー(ロジック)単位で動画再生につながった割合を評価
  60. 60. まとめ
  61. 61. • 一定の成果を挙げることに成功 • ランダムに比較し視聴時間3割増、再生の6割がレコメンド経由 • まだまだ改善の余地あり • コールドスタート問題の解決、セレンディピティの演出、世のトレ ンド反映、などなど • AIとかDeep Learningとか言ってみたい
  62. 62. お約束
  63. 63. U-NEXTを支える技術
  64. 64. •U-NEXT TV app •PC browser (IE, Edge, Chrome, Firefox) •iOS Mobile/Tablet app •iOS Mobile/Tablet app Chromecast •iOS Mobile/Tablet browser •Android Mobile/Tablet app •Android Mobile/Tablet app Chromecast •Android Mobile/Tablet browser •Android TV app •Smart TV app •ACTVILA TV app •Other Set Top Box app アニメ放題 •PC browser •iOS Mobile/Tablet app •iOS Mobile/Tablet app Chromecast •Android Mobile/Tablet app •Android Mobile/Tablet app Chromecast U-NEXTが対応するデバイス
  65. 65. 全領域でエンジニア募集中! メール: mid-career_recruiting@unext.jp Wantedly: https://www.wantedly.com/projects/59479
  66. 66. U-NEXTのレコメンドを進化させたい エンジニアは特に熱烈に募集中! メール: mid-career_recruiting@unext.jp Wantedly: https://www.wantedly.com/projects/59479

×