Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
(多分)あなたの知らないグラフデータベースの世界
Search
MasahiroOsanai
June 06, 2019
62
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
(多分)あなたの知らないグラフデータベースの世界
MasahiroOsanai
June 06, 2019
More Decks by MasahiroOsanai
See All by MasahiroOsanai
事業者視点で語る! Voicyが取り組む音声xデータサイエンスの話
osapiii
2
1.2k
Voicyデータ活用ハンドブック_2019年4月15日_update.pdf
osapiii
0
190
Firebase Predictionsで始める 1歩先を読むグロース戦略
osapiii
8
3.3k
Featured
See All Featured
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
160
Being A Developer After 40
akosma
91
590k
The Curse of the Amulet
leimatthew05
2
13k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.9k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
The Limits of Empathy - UXLibs8
cassininazir
1
550
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
67
56k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
Paper Plane
katiecoart
PRO
2
52k
The Spectacular Lies of Maps
axbom
PRO
1
870
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
510
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Transcript
あなたの知らない グラフデータベースの世界
None
None
今日は、音声レコメンドと その実装方法について検証している内容を お話しします!
計算手法 言葉で言うと、 長所 短所 コンテンツベース これを聴いているあなたに は••がオススメ 利用者の情報がなくても、 入力できる。 意外性が無いものが出
る。 協調フィルタリング あなたと似ている人は •• を聴いています 意外性のあるアイテムが 表示される場合がある (多 様性) 利用者の情報が少ないう ちはワークしない。 少数者のアイテムはオス スメされない。 ハイブリッド型 これを聴いているあなたに は••がオススメだけど、 似ている人は▲▲だか ら、•▲にしよう。 良いところどり 実装の複雑性が増す レコメンド実装3つの分類 最強!
バッチ処理型の課題 → 計算量の増加による遅延 モデルA モデルB フィルタ 最終的なリスト 計算に1Hかかる 計算に1Hかかる “今”を捉えていないリストが完成
ステーキが好きだからと言って、四六時中ステーキ食べたいわけ では無いですよねえ (例)協調フィルタリングの場合は、 ユーザー数 x(ユーザー数 -1)の計算量が必要に ...。
Voicyに当てはめると.... リスナーAさん サウザー完聴済み が、高木えみさんを5つ連続で聴いたケース バッチ処理から生まれるリスト → 一般的な特性から生まれたリスト バッチ + ストリーム処理から生まれるリスト
→ Nowのムードを反映したリスト ゴッホの放送 加藤ひろゆきの放送 サウザーの過去放送 ゴッホの放送 高木えみの放送 marikoの放送
そこでグラフデータベース が登場 クエリの実行速度が早い 実装が簡単 リアルタイムレコメンド がメインのユースケース
Q1: って何やねん? A1: “ノード”と”エッジ”と”プロパティ”で、 現実世界を抽象化したデータベース。RDBと比べて、クエリが圧倒的 に高速 & モデリングが簡単&スキーマレスなどの特徴を持つ。 Pythonから触れるクライアントがあるよ(大事)
現実: リスナー「Voicy太郎」さんが、「支援家K」さんを「100分」聞きました モデリング: Label: Listener Label:Speaker name: Voicy太郎 gender: 1
name: 支援家K Label: LISTENED total_play_minutes: 100 ノード ノード エッジ
Neo4jで表現するとこんな感じ.... (現実世界) リスナー”Masaki Sato”さんが、支援家Kさんを累計690分、放送を6個聞きました。 (モデリング結果) ノード - Listenerラベル - genderとnameをプロパティに持つ
リレーション - LISTENED リレーション - total_play_minutesとtotal_play_playlistsをプロパティに持つ
Neo4jで表現するとこんな感じ.... (現実世界) ”支援家K”さんがたくさん放送しているよ! (モデリング結果) ノード - Speakerラベル - publishedとnameをプロパティに持つ ノード
- Playlistラベル - total_play_minutesとnameをプロパティに持つ
Q2: 実際のサービスではどう使えるの? A2: クエリ実行速度が非常に高速なので、ニアリアルタイムで おすすめリストを生成できる
- 音喜多俊さんを聴いているリスナーが、最も良く聴いているパーソナリティのリストを作成せよ 実際に協調フィルタリングを試してみた(1) Cypherクエリ 実行結果
- 音喜多俊さんを聴いているリスナーが、最も長く再生しているパーソナリティのリストを作成せよ 実際に協調フィルタリングを試してみた(2) Cypherクエリ 実行結果
バッチxリアルタイムで ムードに合わせたレコメンデーションを志向 バッチ集計 (コンテンツベース) リアルタイム (協調フィルタリング) ↑ここのフィルタにどこまで情報を組み込めるかが大事 - 好きでないものは出ないようにする -
好きなPの傾向を反映する..etc フィルタ 最終的なリスト などの即時計算が可能な機構
None
“Voicy テックブログ”で検索すると、テックブログが現れます!