SlideShare a Scribd company logo
Submit Search
Upload
Login
Signup
捗るリコメンドシステムの裏事情(ハッカドール)
Report
mosa siru
Follow
Server Engeneer at DeNA
Oct. 11, 2014
•
0 likes
•
212,308 views
1
of
91
捗るリコメンドシステムの裏事情(ハッカドール)
Oct. 11, 2014
•
0 likes
•
212,308 views
Download Now
Download to read offline
Report
Engineering
ハッカドールの裏側を一部紹介。 高校生でも理解できるくらいの内容でかいてみました。
mosa siru
Follow
Server Engeneer at DeNA
Recommended
パターン認識と機械学習入門
Momoko Hayamizu
201K views
•
251 slides
不均衡データのクラス分類
Shintaro Fukushima
58.8K views
•
34 slides
学習時に使ってはいないデータの混入「リーケージを避ける」
西岡 賢一郎
1.7K views
•
17 slides
バンディットアルゴリズム入門と実践
智之 村上
170.6K views
•
106 slides
【DL輪読会】時系列予測 Transfomers の精度向上手法
Deep Learning JP
2.6K views
•
48 slides
WSDM2018Study
正志 坪坂
2K views
•
33 slides
More Related Content
What's hot
Recurrent Neural Networks
Seiya Tokui
46.9K views
•
42 slides
ベイズ統計学の概論的紹介
Naoki Hayashi
78.1K views
•
80 slides
TensorFlowで逆強化学習
Mitsuhisa Ohta
17.5K views
•
28 slides
社会心理学者のための時系列分析入門_小森
Masashi Komori
18.5K views
•
66 slides
Transformerを雰囲気で理解する
AtsukiYamaguchi1
4.7K views
•
37 slides
Prophet入門【Python編】Facebookの時系列予測ツール
hoxo_m
64.4K views
•
61 slides
What's hot
(20)
Recurrent Neural Networks
Seiya Tokui
•
46.9K views
ベイズ統計学の概論的紹介
Naoki Hayashi
•
78.1K views
TensorFlowで逆強化学習
Mitsuhisa Ohta
•
17.5K views
社会心理学者のための時系列分析入門_小森
Masashi Komori
•
18.5K views
Transformerを雰囲気で理解する
AtsukiYamaguchi1
•
4.7K views
Prophet入門【Python編】Facebookの時系列予測ツール
hoxo_m
•
64.4K views
ようやく分かった!最尤推定とベイズ推定
Akira Masuda
•
96.5K views
機械学習による統計的実験計画(ベイズ最適化を中心に)
Kota Matsui
•
12.5K views
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
Shota Imai
•
266.8K views
全力解説!Transformer
Arithmer Inc.
•
9.1K views
最近強化学習の良記事がたくさん出てきたので勉強しながらまとめた
Katsuya Ito
•
7.4K views
最適化超入門
Takami Sato
•
172.6K views
音声コーパス設計と次世代音声研究に向けた提言
Shinnosuke Takamichi
•
1.6K views
Active Learning 入門
Shuyo Nakatani
•
51.5K views
LSTM (Long short-term memory) 概要
Kenji Urai
•
42.7K views
5分で分かる自己組織化マップ
Daisuke Takai
•
43.2K views
数学で解き明かす深層学習の原理
Taiji Suzuki
•
3.6K views
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
NTT DATA Technology & Innovation
•
5.8K views
『自由エネルギー原理入門』勉強会1章&2章前半
大地 紺野
•
3K views
【DL輪読会】Factory: Fast Contact for Robotic Assembly
Deep Learning JP
•
365 views
Viewers also liked
TechFeedというテクノロジーキュレーションサービスを作った話
yoshikawa_t
19.5K views
•
34 slides
MySQLおじさんの逆襲
yoku0825
30.9K views
•
137 slides
Elasticsearch for Hackadoll
mosa siru
14.8K views
•
61 slides
ニコニコ生放送の配信基盤改善
takahiro_yachi
59.2K views
•
64 slides
パターン認識と機械学習 §6.2 カーネル関数の構成
Prunus 1350
14.2K views
•
26 slides
登録数2倍にしてと言われた時の正しい対処法
Chihiro Kurosawa
188.9K views
•
109 slides
Viewers also liked
(7)
TechFeedというテクノロジーキュレーションサービスを作った話
yoshikawa_t
•
19.5K views
MySQLおじさんの逆襲
yoku0825
•
30.9K views
Elasticsearch for Hackadoll
mosa siru
•
14.8K views
ニコニコ生放送の配信基盤改善
takahiro_yachi
•
59.2K views
パターン認識と機械学習 §6.2 カーネル関数の構成
Prunus 1350
•
14.2K views
登録数2倍にしてと言われた時の正しい対処法
Chihiro Kurosawa
•
188.9K views
現在のDNNにおける未解決問題
Daisuke Okanohara
•
46.6K views
Similar to 捗るリコメンドシステムの裏事情(ハッカドール)
Javakuche yono
yono05
458 views
•
17 slides
10分で分かるr言語入門ver2.14 15 0905
Nobuaki Oshiro
2.2K views
•
111 slides
Jubatusでマルウェア分類
Shuzo Kashihara
5.4K views
•
32 slides
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
Shuji Morisaki
1.6K views
•
31 slides
深層学習ライブラリのプログラミングモデル
Yuta Kashino
99.4K views
•
31 slides
AozoraYomite @InfoTalk 2012/12/21
Yuki Higuchi
1.5K views
•
52 slides
Similar to 捗るリコメンドシステムの裏事情(ハッカドール)
(20)
Javakuche yono
yono05
•
458 views
10分で分かるr言語入門ver2.14 15 0905
Nobuaki Oshiro
•
2.2K views
Jubatusでマルウェア分類
Shuzo Kashihara
•
5.4K views
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
Shuji Morisaki
•
1.6K views
深層学習ライブラリのプログラミングモデル
Yuta Kashino
•
99.4K views
AozoraYomite @InfoTalk 2012/12/21
Yuki Higuchi
•
1.5K views
Cloud principles and paradigms kimtea-2010-04-24
Kazuki Aranami
•
2.2K views
Search on AWS - IVS CTO Night and Day 2016 Spring
Eiji Shinohara
•
1.6K views
Python による 「スクレイピング & 自然言語処理」入門
Tatsuya Tojima
•
8.4K views
おとなのテキストマイニング
Munenori Sugimura
•
3.2K views
BPstudy#64 ドキュメントを作りたくなってしまう魔法のツール Sphinx 2012年版
Go Yamada
•
7.5K views
10分で分かるr言語入門ver2.15 15 1010
Nobuaki Oshiro
•
3.2K views
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
Katsuhiro Morishita
•
6.4K views
リアルタイムにデータ分析してWebサービスの面白さを伝えたい
x1 ichi
•
1.1K views
実はとても面白い...Documentation library
Kouta Shiobara
•
1.5K views
Groovyコンファレンス
Shinichiro Takezaki
•
984 views
とある制作会社の目次索引作成技法
Kenshi Muto
•
12K views
Pythonの非同期処理を始める前に
koralle
•
507 views
2011 icse-reverse engineering feature models
n-yuki
•
329 views
Hadoop conference Japan 2011
Takahiko Ito
•
1.9K views
More from mosa siru
LayerXのQAチームで目指したい動き方 (社内資料)
mosa siru
5.2K views
•
18 slides
開発速度が速い #とは(LayerX社内資料)
mosa siru
60.3K views
•
18 slides
KYC and identity on blockchain
mosa siru
4.8K views
•
16 slides
マイニングプールの収益配分と攻撃手法
mosa siru
46.9K views
•
36 slides
Payment Channel Introduction
mosa siru
19.6K views
•
37 slides
Go, memcached, microservices
mosa siru
17K views
•
58 slides
More from mosa siru
(12)
LayerXのQAチームで目指したい動き方 (社内資料)
mosa siru
•
5.2K views
開発速度が速い #とは(LayerX社内資料)
mosa siru
•
60.3K views
KYC and identity on blockchain
mosa siru
•
4.8K views
マイニングプールの収益配分と攻撃手法
mosa siru
•
46.9K views
Payment Channel Introduction
mosa siru
•
19.6K views
Go, memcached, microservices
mosa siru
•
17K views
ニュースパスのクローラーアーキテクチャとマイクロサービス
mosa siru
•
10.6K views
マイクロにしすぎた結果がこれだよ!
mosa siru
•
132.2K views
lua_nginx_module JSON-RPC 2.0 Batch Request
mosa siru
•
7K views
Twitter SmartList (第5回若手webエンジニア交流会)
mosa siru
•
3.1K views
コミュニティ分類アルゴリズムの高速化とソーシャルグラフへの応用
mosa siru
•
5.7K views
how to make twitter list automatically
mosa siru
•
3.3K views
捗るリコメンドシステムの裏事情(ハッカドール)
1.
捗る! リコメンドシステムの裏事情 2014/10/11
@mosa_siru (榎本悠介) 1
2.
自己紹介 2
3.
@mosa_siru • 「もさ」って呼んでください
• 大学:複雑ネットワーク研究 • ネットワーククラスタリングの高速化手法 • Twitter SmartList 開発 3
4.
@mosa_siru • DeNA(2年目)
• プラットフォーム API開発・運用 • ハッカドール 立ち上げからジョイン • サーバーAPI 設計・開発・運用(ほぼ全部) • フロント/バックエンド Web開発 • ログ設計・リコメンドシステムをうんうん考える • 社内の分析チームと密に連携 4
5.
特技 5
6.
Bomberman 6
7.
ボンバーマン • 2年間引きこもって極めてました
• 戦績をつけてRatingで可視化しながら対戦 • 極めるとぷよぷよ化する 7
8.
解説動画がホットエントリ入り 8
9.
アジェンダ 9
10.
アジェンダ 1. ハッカドールって?
2. ターゲットユーザーの特徴 3. リコメンドシステムの紹介 10
11.
1. ハッカドールって? 11
12.
ハッカドールって? • アニメ・マンガ・ゲームなど、
オタク系の記事のみを扱った ニュース配信アプリ • 政治・スポーツなどのニュー スは一切扱わない • 使えば使うほど学習していく 12
13.
ハッカドールって? • ゲーミフィケーション
! • というかゲームできる ! • オタクユーザーに刺さる機能 が満載 13
14.
2014夏コミに合わせてリリース 14
15.
極めて高いユーザー評価 • 1ヶ月あまりで数十万DL突破
• 高いリターンレート(継続率) 15
16.
なんでこんなアプリ 作ったの? 16
17.
捗りたい! • 好きなゲームの情報を毎日調
べる辛さ • え、あの漫画の新刊出てたん だ… • もっともっと、まだ見ぬ面白 いコンテンツに出会いたい! 17
18.
コンテンツのマッチング • 増え続けるコンテンツ
• 漫画の1日あたり新刊数はどんどん増えている • でも売上は横ばい • 面白いコンテンツと、それを求めるユーザーを マッチングさせて、エンタメ業界を活性化させ たい 18
19.
こんな人達が開発してます 19
20.
開発陣 • 「オタク以外はチー
ムに入れません」 20
21.
開発風景 社内での観光名所化 21
22.
2. ターゲットユーザーの特徴 22
23.
情報収集力が高い 23
24.
情報収集力が高い • 自力でどんどん好きな情報を集める
• 受動的でない • そのためには多少の苦労はいとわない 24
25.
こだわりが強い 25
26.
こだわりが強い • 「絶対にラブライブ!の情報は逃したくな
い!」 • 1秒でも速く知りたい!! • 興味のある・ないでの差が激しい • 「~のニュースとか本当にどうでもいい」 26
27.
ニッチな記事も好む 27
28.
ニッチな記事も好む • 必ずしもTweet数、はてブ数が高い記事を好む
わけでもない • 例:声優ブログ 28
29.
とにかく嗜好にマッチ していることが重要 29
30.
ハッカドールのリコメンドの 仕組み 30
31.
一般的なリコメンド手法って? 31
32.
一般的なリコメンド手法 • 大きく分けて二分される
• ユーザーベース • 「この商品を買った人はこんな商品 32 も買っています」 • アイテムベース • 「この商品はキルラキルのフィギュ アなので、キルラキルが好きな人に 推薦しよう」
33.
ユーザーベースの特徴 • 推薦されるアイテムの中身に依存しな
いので、汎用的 • ユーザーアクティビティの情報が大量 に必要 • コールドスタート問題 • ニュースや新商品のアクティビティ情 報が少ない • 計算量の工夫が必要 33
34.
アイテムベースの特徴 • 推薦対象となるアイテムの情報が必要
• 全体のアクティビティ量は必ずしも多くなく て良い • ニュース・新情報に対応可能 • 計算量はユーザー数に対して線形 34
35.
ハッカドールでは • リリース当初はアイテムベースがメイン
• 現在はユーザーベースも組み合わせて記事を 配信しています • 試行錯誤し、各種ABテストで検証しながら 35 導入しています • 今回は、アイテムベースの手法を紹介します
36.
アイテムベースの手法 (ベクトル空間モデルの紹介) 36
37.
アイテムの持つ情報とは • ニュースの場合
• タイトル • 記事本文 • 画像 • サイト情報、メタ情報、Tweet情報 etc.. 37
38.
ベクトル空間モデル • 例えば文章情報に着目
• たとえば文章に含まれる「単語の登場数」にだ け着目してみると 38
39.
39 キーワード登場数 立体機動装置1
講談社1 漫画2 エレン1 リヴァイ1 ウサイン・ボルト3 進撃の巨人1 空想科学読本3 諫山創1 (略) ※実際は各種の 重み調整が必要
40.
ベクトル空間モデル • アイテムを全てベクトルで表現
• ユーザーの嗜好もベクトルで表現 • 例:読んだ記事のベクトルを足していく • ベクトルの”近さ”は簡単に計算できる • ユーザーのベクトルと”近い”記事を推薦 40
41.
今回はどうやって 良いベクトル空間を作るか?に フォーカスを当てます
41
42.
どうやって単語を抜き出すか 42
43.
形態素解析 • wikipedia「対象言語の文法の知識(文法のルールの集まり)
や辞書(品詞等の情報付きの単語リスト)を情報源として用い、 自然言語で書かれた文を形態素(Morpheme, おおまかにいえ ば、言語で意味を持つ最小単位)の列に分割し、それぞれの品 詞を判別する作業を指す。」 43
44.
44
45.
45
46.
mecab 46
47.
mecab • 日本製のオープンソースの形態素解析エンジン
47 • 簡単、シンプル、速い • すぐに試せる brew install mecab mecab-ipadic
48.
48
49.
がっ…!ダメっ…! 49
50.
ちゃんとした辞書が必要 • 形態素解析は、辞書(単語リスト)をもとに分割している
• デフォルトのmecabの辞書では、一般用語しか入っていない • 「ラブライブ!」「μ's」などに対応するには、独自のユー ザー辞書が必要 50
51.
オタク辞書の作り方 51
52.
外部リソースを使う • wikipedia
• データが全公開されている 52 • ニコニコ大百科 • オタクキーワードが満載 • 記事のタイトルから、ニッチな キーワードを取得
53.
でも全然必要ない単語もいっぱい… 53
54.
うーむ… 54
55.
とある声優ソムリエが 思いついた手法 55
56.
wikipediaにはカテゴリ情報がある 56
57.
どんどんサブカテゴリを辿っていくと… 57
58.
!!! 58
59.
親カテゴリからの幅優先探索 で専門辞書を作成 59
60.
必要な単語だけ 抽出することに概ね成功 60
61.
before 61
62.
after 62
63.
まだまだこだわる 63 •
100%完璧な手法ではない • 探索の深さはadhoc • 公開直後の情報など、wikipediaに記事がない場合がある • 辞書の管理ツールを作成 • 手動で辞書に必要単語を追加できる • 新単語にいち早く対応
64.
結論:なんだかんだで泥臭い 64
65.
オタク辞書ができた後の話 65
66.
「続きを読む」を含んだ記事を 良く読んでいるので、 「続きを読む」を含んだ記事が
推薦される 66
67.
??? 67
68.
リコメンドに不要な単語 • 辞書には欲しいが、リコメンドには不要かもしれない単語
• 「そもそも」「こちら」「続き」 (各種一般用語) 68 • 数字、記号 etc…
69.
リコメンドに不要な単語 • オタク辞書にない単語は使わない
• 不要単語(ブラックリスト)管理ツールも作成 69
70.
シノニム変換 • 「アイマス」=「アイドルマスター」
• 「ごちうさ」=「ご注文はうさぎですか?」 70 ! • シノニム管理ツールも作成
71.
いいかんじになってきたので プロトタイプつくってみた 71
72.
ラブライブ! の記事しか出ない… 72
73.
重み調整 73 •
TFIDF • 「アニメ」を含む記事を1回読むことと、 「ボンバーマン」を含む記事を1回読むことの重みは異なる • TFIDFだけじゃうまくいかなくなってきた • キーワードの重み管理ツールも作成
74.
重み調整 • よりオタク向けなキーワードの重みを上げる
• 一般記事全体と、オタク向け記事全体でのキーワード登場回 数の違いを考慮 74
75.
どんどん捗る ようになってきた 75
76.
試行錯誤と泥臭さの連続 76
77.
今でも議論・検証しながら 着実に改善しています 77
78.
おわりです 78
79.
ありがとうございました! @mosa_siru 79
80.
おまけ 80
81.
ターゲットユーザーに さらにフォーカスした機能 81
82.
捗った?機能 82
83.
捗った?機能 • ハッカドールちゃんに、リコメンドの
フィードバックをするシンプルな機能 83 • 学習を加速させる ! • 「自動学習じゃないじゃん!」 • 能動的であるターゲットユーザーから、 よりはやく正確な情報が集められる
84.
ウォッチリスト 84
85.
ウォッチリスト • 好きなタイトル名などを登録しておくと、
そのキーワードを含んだニュースが出る たびに教えてくれる 85 ! • 全文検索エンジンから取得
86.
めちゃくちゃ評判が良い 86
87.
もはやリコメンドじゃない 87
88.
ユーザーのことを考えると 絶対に必要な機能だった (というか俺が欲しい)
88
89.
僕らが提供しているのは ”サービス” 技術とかアルゴリズムはその手段
89
90.
ハッカドールはまだ発展途上。 より多くの「捗る!」を 提供していきます
90
91.
おわり 91 @mosa_siru