Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Graph Convolutional Networksを使った 推薦システム

Avatar for nishiba nishiba
June 24, 2019

Graph Convolutional Networksを使った 推薦システム

Avatar for nishiba

nishiba

June 24, 2019
Tweet

More Decks by nishiba

Other Decks in Technology

Transcript

  1. 自己紹介 • エムスリー株式会社 西場正浩(@m_nishiba) • AI・機械学習チーム/チームリーダー ◦ 自然言語処理や推薦システムが好き ◦ 採用マーケティング

    ◦ プロダクト・プロジェクトマネジメント • We are hiring!! ◦ データエンジニア ▪ グローバルなデータ基盤作ってください!! ◦ サーチエンジニア ▪ 医療系の最強検索エンジン作ってください!! ◦ 利点 ▪ 楽しいよ!! ◦ 欠点 ▪ ポスト◯ットの会社でしょ?
  2. 今日話すこと • 問題設定: テキスト記事をユーザーごとに推薦する。 ◦ 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分なので ざっくりと
  3. ニュース記事等の推薦 • 配信する記事をユーザーごとにスコアリングを行う。 ◦ 媒体はメルマガを想定 • 推薦の問題としての特徴 ◦ inactiveのユーザーにも対応する。 ▪

    日本の医師は30万人 ◦ アクセス数が少ないアイテムから選ぶ。 • 人によって興味が大きくことなる。 ◦ 若手のキャリア ◦ オンコロジー領域 ◦ 内科・外科・耳鼻科・・・
  4. 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,...) 属性データ
  5. モデルをもう少し詳しく(正確ではない) • {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
  6. データの分割方法 • テストデータのユーザーの割合 ⇒ 50%, 90% • ユーザー数:約40,000人 • 記事数:

    約1,000個 訓練データ テストデータ 2018/1/1 2018/12/31 2019/1/31 X% user1 user2 ・ ・ ・ ・ ・ ・ ・ ・ ・ user40000
  7. 数値実験結果(オフライン) • 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
  8. 数値実験結果(オフライン) • 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
  9. 今後の課題 ① アイテムの品質を予測するモデルを構築 • 似ている人がclickしているだけでなく、人気のものを探す。 ◦ 例: どっちが人気? ◦ (a)

    共働き医師の強い味方!意外な才能が身に付く学童 ◦ (b) 医師になるまでにかかった総額はいくらですか? ② クラスタ別に人気の記事を評価する。 • どうしようかな〜