Slide 1

Slide 1 text

Graph Convolutional Networksを使った 推薦システム エムスリー株式会社 西場 正浩

Slide 2

Slide 2 text

自己紹介 ● エムスリー株式会社 西場正浩(@m_nishiba) ● AI・機械学習チーム/チームリーダー ○ 自然言語処理や推薦システムが好き ○ 採用マーケティング ○ プロダクト・プロジェクトマネジメント ● We are hiring!! ○ データエンジニア ■ グローバルなデータ基盤作ってください!! ○ サーチエンジニア ■ 医療系の最強検索エンジン作ってください!! ○ 利点 ■ 楽しいよ!! ○ 欠点 ■ ポスト◯ットの会社でしょ?

Slide 3

Slide 3 text

今日話すこと ● 問題設定: テキスト記事をユーザーごとに推薦する。 ○ 100個の中からユーザーごとに 10個選ぶ ○ 対象のテキストへのアクセス数は少ない(全体の数 %) ● モチベーション: 属性データ活用 & ファットテール ○ inactiveなユーザーにも”いい感じ”に出し分けたい。 ○ 100個の中から”いい感じ”に満遍なく出し分けたい。 ● アプローチ: Graph Convolutional Networks & Latent Cross ○ Graph Convolutional Matrix Completion ○ Latent Cross: Making Use of Context in Recurrent Recommender Systems ● 既存モデル(2017): Google Newsの論文がベース ○ Personalized News Recommendation Based on Click Behavior 10分なので ざっくりと

Slide 4

Slide 4 text

ニュース記事等の推薦 ● 配信する記事をユーザーごとにスコアリングを行う。 ○ 媒体はメルマガを想定 ● 推薦の問題としての特徴 ○ inactiveのユーザーにも対応する。 ■ 日本の医師は30万人 ○ アクセス数が少ないアイテムから選ぶ。 ● 人によって興味が大きくことなる。 ○ 若手のキャリア ○ オンコロジー領域 ○ 内科・外科・耳鼻科・・・

Slide 5

Slide 5 text

GCNモデルの紹介 ● ユーザー × アイテムの2部グラフ ● message passingを利用 ○ 他の方法として下記 2つもメジャー(?) ■ random walk ■ graph Fourier transform ● 属性データ ○ Latent cross的なアイデアで統合 ● 各ノードのembeddingを学習 ○ o_user ← clickしたitem_embeddingの平均 ○ o_item ← clickしたuser_embeddingの平均 ○ (次で詳しく) (e0, e1, e2,...) 属性データ (v0, v1, v2,...) 属性データ

Slide 6

Slide 6 text

モデルをもう少し詳しく(正確ではない) ● {e}はtrainable variables ● u1がi1をclickする確率 ○ cos(average(e_i1, e_i3), average(e_u1, e_u3)) ● 新しいアイテムも多少のクリックがあれば評価できる。 e_u1 e_u2 e_u3 e_u4 e_i1 e_i2 e_i3

Slide 7

Slide 7 text

データの分割方法 ● テストデータのユーザーの割合 ⇒ 50%, 90% ● ユーザー数:約40,000人 ● 記事数: 約1,000個 訓練データ テストデータ 2018/1/1 2018/12/31 2019/1/31 X% user1 user2 ・ ・ ・ ・ ・ ・ ・ ・ ・ user40000

Slide 8

Slide 8 text

数値実験結果(オフライン) ● Randomに比べると勝っているが、 Rankingモデルには優位に劣っている。 ● テストユーザー90%のp@2でGCMC(LDA+Category)がRankingに次いで高い ● p@2はメルマガのタイトルになるのでビジネス的に非常に重要 without ranking adjustment model test user=50%(warm start) test user=90%(cold start) #@2 p@2 #@5 p@5 #@2 p@2 #@5 p@5 Random 1,649 - 3,792 - 2,977 6,762 - RankingModel 6,510 7,367 10,817 16,651 11,820 13,400 19,343 29,680 GCMC(ID) 4,869 6,301 8,468 14,074 6,498 7,999 13,055 20,585 GCMC(ID+LDA) 5,102 6,647 8,562 14,370 7,448 9,801 13,015 20,776 GCMC(ID+LDA+Category) 5,318 6,880 8,882 14,867 7,894 10,099 14,435 23,220 GCMC(LDA) 5,354 6,949 8,354 13,874 8,825 11,177 13,502 21,280 GCMC(LDA+Category) 5,028 6,417 8,202 13,564 9,105 11,610 14,319 23,337

Slide 9

Slide 9 text

数値実験結果(オフライン) ● GCMCのすべてのモデルが RankingModelに勝利 ● モデルの差分が出づらくなっている。アンサンブル方法を要検討 ● Item ID embeddingなしでも同程度の精度が出るので、 itemに対してはcold startに対応できそう。 with ranking adjustment model 50% 90% #@2 p@2 #@5 p@5 #@2 p@2 #@5 p@5 Random 1,649 - 3,792 - 2,977 - 6,762 - RankingModel 6,510 7,367 10,817 16,651 11,820 13,400 19,343 29,680 GCMC(ID) 8,007 10,224 11,588 20,376 13,830 17,560 20,444 35,253 GCMC(ID+LDA) 7,789 9,940 11,561 20,363 13,884 17,758 20,508 35,332 GCMC(ID+LDA+Category) 7,965 10,211 11,726 20,724 13,588 17,307 20,581 35,565 GCMC(LDA) 7,694 9,901 11,276 19,784 13,602 17,257 20,241 34,419 GCMC(LDA+Category) 7,749 9,897 11,465 20,176 13,764 17,503 20,710 35,675

Slide 10

Slide 10 text

モデルの挙動 ● 期待通りに満遍なく推薦できている (編集部調べ) ● 属性データを入れることで、 inactive ユーザーにも自然な推薦になっている (編集部調べ)

Slide 11

Slide 11 text

モデルの挙動 ・似ているユーザーの埋込みは 近くなる。 ユーザーの埋込みの分布 ・ユーザーのclickにより、アイテ ムの埋込みが計算される。 ✗ 記事の品質は関係ない ✗ みんなから人気のものはみ んなから遠い

Slide 12

Slide 12 text

今後の課題 ① アイテムの品質を予測するモデルを構築 ● 似ている人がclickしているだけでなく、人気のものを探す。 ○ 例: どっちが人気? ○ (a) 共働き医師の強い味方!意外な才能が身に付く学童 ○ (b) 医師になるまでにかかった総額はいくらですか? ② クラスタ別に人気の記事を評価する。 ● どうしようかな〜