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

NLPを活用したオンボーディング改善とコールドスタート問題への対策

 NLPを活用したオンボーディング改善とコールドスタート問題への対策

2022/10/14に開催されたPyCon JP 2022 で発表した資料です。
https://2022.pycon.jp/

ご質問などはTwitterのDMで受け付けています
https://twitter.com/takapy0210

Takanobu Nozawa

October 14, 2022
Tweet

More Decks by Takanobu Nozawa

Other Decks in Technology

Transcript

  1. NLPを活用したオンボーディング改善と コールドスタート問題への対策 Takanobo Nozawa 2022.10.14 PyCon JP 2022

  2. ▪アジェンダ 1. 自己紹介・コネヒトやプロダクトの紹介 2. 前提知識の共有 → オンボーディングやコールドスタート問題など 3. オンボーディング改善に取り組んだ背景 4.

    トピックモデリングを活用したオンボーディング改善 5. node2vecを活用した推薦アイテムの計算 6. 本施策の結果 7. まとめと今後の展望
  3. 1. 自己紹介・コネヒトやプロダクトの紹介

  4. 自己紹介

  5. ▪自己紹介 名前:野澤 哲照(Nozawa Takanobu) 所属:コネヒト株式会社   :たかぱい@takapy0210 • ML Engineer, ML

    PdM(見習い)として、機械学習のサービス導入を 軸に、機械学習基盤や機械学習モデル, APIの開発をしたりしています • ビジネスと機械学習を紐付けながら、どのようにインパクトを出すか に興味があります • 友人とPodcast配信してます wipfm
  6. コネヒトという会社について プロダクトや機械学習活用事例も 簡単に紹介させてください

  7. ▪コネヒトのVISION ありとあらゆる価値観が見つめ直され、 それぞれに思い描く家族の姿はどんどん変わっている 家族の数だけ形があって、つくりたい未来がある 私たちコネヒトは「家族像」というテーマに向き合う会社です

  8. ▪コネヒトの事業 「あなたの家族像が実現できる社会をつくる」 というVISIONに基づく中期的な目標として 子どもを望む家族像の多様性を実現するために日々取り組んでいます サービス | コネヒト株式会社

  9. ▪ママリについて 家族に向き合うママの毎日は、新しい選択の連続。慌ただ しい日々の中で、正解のない選択をし続けることは容易な ことではありません 「ママの一歩を支える」をミッションに、悩みの「解消」 と「共感」を軸に、妊活中女性・プレママ・ママに寄り添 うコミュニティを運営しています 子どもを出産したママの3人に1人(※)が利用するアプリ に加え、Instagram、LINE、Twitter、facebookといった SNS、情報サイトを通じて、ママが日々の選択に自信を

    もって一歩を踏み出せるよう取り組んでいます ※「ママリ」で2019年内に出産予定と設定したユーザー数と、厚生労 働省発表「人口動態統計」の出生数から算出
  10. ▪家族ノートについて 家族ノートでは、一般的なアンケート調査とは異なり、 日々の暮らしの中で無意識的に行っている「検索」や「質 問/回答」の中に現れる、家族の心の動きや真の欲求を知 ることができます ママの3人に1人(※1)が利用するアプリ「ママリ」の月 間400万検索、130万投稿(※2)もの活発な利用の中 で、家族が今悩んでいることや、求めている商品・サービ スがタイムリーに反映され、アンケート調査等では踏み込 めないリアルな課題や態度変容が映し出されています

    家族ノートを通して、家族の悩みを社会に届け、志を共に するパートナーのみなさんとともに「あなたの家族像が実 現できる社会」の実現に取り組んでいます ※1:「ママリ」で2019年内に出産予定と設定したユーザー数と、厚生労働省発表「人 口動態統計」の出生数から算出。 ※2:2021年3月現在。
  11. Trust&Safetyなコミュニティを維持するための検閲モデル モデルが不適切な投稿と判断したデータに対して、人間が目視チェックを行う ことでHuman in the loopを実現し、コスト削減に寄与 関連記事: ・コネヒトの機械学習プロジェクトにおける構想フェーズ・PoCフェーズの進め方 - コネヒト開発者ブログ

    ・機械学習と人が協力してママリのコミュニティを支えているよ、という話をしました - コネヒト開発者ブログ ▪ML活用事例:コミュニティの自動検閲
  12. ユーザーの行動ログから興味のあるコンテンツを予測し優先的に表示 することで、UX向上に寄与 関連記事: ・レコメンデーション機能を実装するまでの "not 技術的" な取り組みについて - コネヒト開発者ブログ ・トピックモデルを活用したレコメンデーションの実装

    - Speaker Deck ・コミュニティサービスにおけるレコメンデーションの変遷とMLパイプラインについて - Speaker Deck ▪ML活用事例:レコメンデーション
  13. 2. 前提知識の共有 オンボーディング コールドスタート問題

  14. オンボーディングって何?

  15. ▪オンボーディングとは 新規ユーザーに対して必要なサポートを行い、ユーザーにプロダクトの 価値を伝えるプロセスのこと → アプリダウンロードからユーザーのアクティブ化への架け橋として 長期的に利用してもらうことがオンボーディングと言える https://apptimize.com/blog/2016/02/80-20-onboarding/

  16. ▪オンボーディングの事例 例えばTwitterでは、Engagementさせるための1つの方法として 「見たいものは何か?」を選ぶフローがあり、ここでユーザーごとに 興味関心のあるトピックを選択することで、パーソナライズを実現し ようとしている

  17. ▪オンボーディングの重要性 ユーザーの離脱に関して以下のような数値が発表されている(※) • 71%ものユーザーが1日で離脱してしまう • 30日後に90%のユーザーが離脱し、90日以内には96%が離脱する このような数値からも、サービスを使い始めたばかりのユーザーに対 して、順当にユーザーの興味関心に適合した情報を提供することで、 サービスへの信頼性を高める戦略をとることは非常に重要 ※

    7 Reasons Why Mobile Onboarding Is Your App’s 80/20 | Apptimize https://apptimize.com/blog/2016/02/80-20-onboarding/
  18. コールドスタート問題って何?

  19. ▪コールドスタート問題とは • サービス内でのユーザーやアイテムに関する情報が少ないケース、 特に新規ユーザーや新規アイテムについて適切に推薦を行うことが 難しい問題のこと • 初対面の人の趣味や好みが分からないのと一緒なイメージ

  20. 3. オンボーディング改善に取り組んだ背景 前提知識が共有できたところで...

  21. ▪背景 これまでのママリでは、新規ユーザーに対してはお子さんの年齢や妊 娠週数別にルールベースでアイテムの推薦を行っていた いくつか課題はあったが、中でも新規ユーザーの興味関心が不明瞭な ことによる体験の損失が大きいと考えていた

  22. ▪背景 例えば妊娠初期のユーザーでも興味関心は1人1人異なる • 妊娠中、母体に訪れる症状(例:つわりなど)に関心のあるユー ザー • 仕事関連(例:産休など)に関心のあるユーザー • お金関連(例:出産にかかる費用や保険など)に関心のあるユー ザー

    etc
  23. ▪背景 このような興味関心は今までのルールベースの推薦では考慮できてお らず、同じ属性(妊娠初期など)の新規ユーザーには一様なアイテム が推薦されている状態だった このような課題を解消するためにオンボーディングの改善を実施

  24. ▪このあと話すことはざっくり以下2点 • ユーザーが興味関心のあるトピック候補をどのように選定するか →トピックモデリングを活用 • 上記で選択したトピックに関連のあるアイテムをどう計算するか →node2vecを用いたベクトルを活用

  25. 4. トピックモデリングを活用した オンボーディング改善

  26. トピックモデリングとは

  27. ▪トピックモデリングとは 文書が複数の潜在的なトピックから確率的に生成されると仮定したモ デル ここでいう「トピック」とは話の主題のことで、同じ話題について話 していても、人によって解釈が変わることもある

  28. ▪トピックモデリングの特徴 トピックモデルの「トピックの数」と「出力されたトピックのラベル」 は人間が決める必要がある 下記例だとTopic1:スポーツ、2:経済、3:エンタメ、と解釈できる

  29. オンボーディングへの活用方法 トピックモデリングを どのようにオンボーディングに活かしていくか

  30. ▪オンボーディングへの活用方法 いきなりですが、ここに表示するアイテム、どうやって決めますか?

  31. ▪オンボーディングへの活用方法 いくつか方法が思い浮かぶ • 社内で保持しているタグorカテゴリデータを使用する • 検索のログを分析して頻繁に検索されているワードを使用する etc … 例えば、検索のログなどは一般的に、顕在化されている関心であること が多く潜在的な関心を拾うのは難しい

    → アイテムのクリックログから、潜在的なニーズを探るために   トピックモデリングを活用
  32. トピックモデリングの実装例

  33. ▪トピックモデリングの実装例 各アイテムの自然言語をトークナイズしたデータを準備

  34. ▪トピックモデリングの実装例 gensimを利用すれば以下のように実装するだけで学習できる ありがとう、gensim🙏

  35. ▪トピックモデリングの実装例 前述したように学習後のトピックに対する意味付けは人間が行う必要 があるため、以下のように可視化すると各トピックがどのような意味 を持つのかが理解しやすい

  36. ▪可視化して各トピックの意味を解釈する

  37. ▪最適なトピック数にあたりをつける トピック数は、一般的にCoherenceとPerplexityの値から、 最適なトピック数に当たりをつけることができる

  38. プロダクトへの導入

  39. ▪プロダクトへの導入 トピックモデリングで分析した結果などを参考に、PdMと議論しなが ら最終的にユーザーに表示する興味トピックを選定

  40. ▪プロダクトへの導入 トピックモデリングで分析した結果などを参考に、PdMと議論しなが ら最終的にユーザーに表示するトピックを選定 ここまでで、オンボーディング時に 表示するトピックの選定は行えた

  41. ▪プロダクトへの導入 トピックモデリングで分析した結果などを参考に、PdMと議論しなが ら最終的にユーザーに表示するトピックを選定 では、ユーザーが選択した トピックと関連性の高いアイテムを どのように計算するか? 例えば、興味選択で”つわり”を選択したユーザーに 推薦するアイテムはどのように計算する?

  42. ▪プロダクトへの導入 トピックモデリングで分析した結果などを参考に、PdMと議論しなが ら最終的にユーザーに表示するトピックを選定 よし、機械学習で解決するぞ! の前に...

  43. ▪機械学習で解決するぞ!の前に... • 一般的に、機械学習をプロダクトへ導入する際、まずはシンプル なベースラインを作成してそこから徐々に改善していく、という アプローチが良いと言われている • 今回も例に漏れず、まずはルールベースのアプローチでベースラ インを作成

  44. ▪ルールベースによる推薦 • オンボーディング時に選択したトピックに対して、そのタグが付 与されているアイテムを新着順に推薦する、というもの • 例えば「保育園」を選択したユーザーに対しては、「保育園」 タグが付与されているアイテムを新しい順に推薦する タグ

  45. ▪ルールベースによる推薦 • オンボーディング時に選択したトピックに対して、そのタグが付 与されているアイテムを新着順に推薦する、というもの • 例えば「保育園」を選択したユーザーに対しては、「保育園」 タグが付与されているアイテムを新しい順に推薦する タグ シンプルなロジックで実装コストも低い だが、これにはいくつか課題もあった

  46. ▪ルールベースによる推薦の課題 • 画像の文章を見ていただくと分かるように、このアイテムの主題 は「保育園」ではなく「仕事」にある。このアイテムが「保育 園」に興味のあるユーザーに推薦された場合のユーザー体験は、 あまり良くない。 • このようなことを改善すべく機械学習を用いたアプローチを検証

  47. 5. node2vecを活用した推薦アイテムの計算

  48. ▪node2vecを活用した推薦アイテムの計算 • 各タグのEmbeddingが計算できれば、タグ同士の類似度やタグと アイテムとの類似性も良いものが計算できるのではないか、とい う仮説のもと、Graph Embedding(node2vec)を用いて検証 • Embeddingはレコメンデーションをはじめとして、活用できる幅 が広いというのも採用理由の1つ 離乳食

    じゃがいも タンパク タグ:N アイテム:1
  49. Graph Embeddingとは

  50. ▪Graph Embeddingとは グラフをベクトル空間に落とし込む手法のことで、埋め込みの手法は 大きく以下の2つに分けられる • ノード埋め込み • グラフ埋め込み 今回は「node2vec: Scalable

    Feature Learning for Networks」とい う論文で提案されたnode2vecというアプローチを用いて、前述した 「タグ」の埋め込み表現を計算した 参考論文:node2vec: Scalable Feature Learning for Networks 参考文献:Graph Embeddings — The Summary.
  51. ▪node2vecの概略 今回の提案手法では、大きく分けて以下のステップでノードのベクト ルを計算している 1. グラフ上をランダムウォークし、シークエンスデータを生成する 2. 生成したシークエンスデータを学習データとして、教師なし学習 を行う 3. 学習した結果からノードのベクトルを取得する

    https://towardsdatascience.com/graph-embeddings-the-summary-cc6075aba007
  52. node2vecを実装してみる

  53. ▪使用したデータ 今回使用したデータは右図のような形式 • id:アイテムID • tag_id:タグID • tag:タグの名称

  54. ▪node2vecの実装手順 以下の手順で実装 1. 無向グラフを生成 2. 無向グラフをランダムウォークし、シーケンスデータを生成 3. 教師なし学習でノード(=タグ)のベクトルを計算 4. ベクトルの類似度を定性的にチェック

  55. 無向グラフの生成

  56. ▪無向グラフの生成プロセス • 無向グラフとは、各ノードの始点と終点の区別をつけないグラフ のこと • 「タグ」をノードとしてNetworkXを用いてグラフを生成する • 同じアイテムに紐づくタグがある場合は、それらのノードとし て、エッジで接続してグラフを生成していく •

    ただし、関連性の薄い(自己相互情報量が少ない)タグ同士につ いてはグラフに追加しないように調整する
  57. ▪無向グラフのイメージ

  58. ▪無向グラフのイメージ

  59. ▪無向グラフのイメージ 離乳食を媒介として、近傍に関連性 の高いタグが存在している

  60. ▪無向グラフの実装例

  61. ▪無向グラフの実装例 各タグ同士の重み(共通し て付与されているアイテム の数)を計算

  62. ▪無向グラフの実装例 タグのペアをループしながら、 関係性の強いタグのみを用いて グラフを生成

  63. ランダムウォークし、シーケンスデータを生成

  64. ▪ランダムウォークし、シーケンスデータを生成 • 作成した無向グラフを、前述したnode2vecで提案された手法でラ ンダムウォークし、シークエンスデータを生成する ◦ 考え方:あるノードを起点に考えたとき、エッジ重みを考慮し てステップ数kでランダムウォークさせる(=重いほどつなが りが強い→よく通るように確率を設定)これを試行数r回繰り 返すと、シーエンス数kのデータがr個生成できる

  65. ▪ランダムウォークし、シーケンスデータを生成 • ランダムウォークは2種類のケースが考えられ、BFS(breadth first search)とDFS(depth first search)が存在する ◦ BFSは幅優先探索で、ノードuと接続しているノードを優先的 に探索(サンプリング)する

    ◦ DFSは深さ優先探索で、ノードuからできるだけ離れたノード に到達するように探索する
  66. ▪ランダムウォークし、シーケンスデータを生成 • 提案手法ではpとqというパラメータが導入されており、このパタ メータの値によりBFSとDFSの塩梅を調節できる ◦ pが小さくqが大きい時はBFSとなる ◦ pが大きくqが小さい時はDFSとなる ※興味がある方は元論文を読んでみてください

  67. ▪実装例

  68. ▪実装例 先ほど紹介したパラメータpとq によって次に進むノードを選択

  69. ▪実装例 ステップ数:num_steps 試行回数:num_walks でランダムウォークすることで、 シーエンス数num_stepsのデータ をnum_walks個生成(これが全 ノードを起点として生成される)

  70. ▪取得できるシーケンスデータの例 関連性の高いタグが近傍に存在しているシーケンスデータになってい そう

  71. 教師なし学習でノード(=タグ)のベクトルを計算

  72. ▪教師なし学習の実装例 gensimを用いて、自然言語処理ではおなじみのskip-gramという手法 でベクトル化 ありがとう、gensim🙏

  73. ベクトルの類似度を定性的にチェック

  74. ▪ベクトルの定性チェック gensimのmost_similarメソッドを用いて定性チェック

  75. ▪ベクトルの定性チェック gensimのmost_similarメソッドを用いて定性チェック よさそう🎉🎉🎉

  76. ▪ベクトルの定性チェック gensimのmost_similarメソッドを用いて定性チェック タグのベクトルは計算できたので このベクトルからアイテムのベクトルを計算する

  77. アイテムのベクトル計算

  78. ▪アイテムのベクトル計算 • アイテムのベクトル計算にはSWEMを利用し、アイテムに紐づく タグベクトルから、アイテムのベクトルを算出(下図参照) • 最後にタグとアイテムの類似度を計算し、オンボーディングで選択した 興味トピック(≒タグ)に対して、どのアイテムを推薦するか算出

  79. ▪実際の推薦イメージ 例えば「つわり」を選択したユーザーには以下のようなアイテムが 推薦されるイメージ

  80. ▪実際の推薦イメージ 例えば「つわり」を選択したユーザーには以下のようなアイテムが 推薦される ロジックはできたが これでユーザー体験はよくなるのだろうか?

  81. ▪実際の推薦イメージ 例えば「つわり」を選択したユーザーには以下のようなアイテムが 推薦される データを泥臭くチェックしていった

  82. ▪推薦結果の定性チェック • PdMとデータを泥臭く見ながらパラメータを調整 ◦ パラメータとは、node2vecのロジックで使用するパラメータの 他に、前処理や後処理で行っているものも含まれる • パラメータごとに、どのトピックを選んだ時にどんなアイテムが 推薦されるかをスプレッドシートに吐き出し、1個1個チェックしな がら、どのパラメータが一番良い体験を与えられそうか検証

  83. ▪推薦結果の定性チェック こんな感じのスプレッドシートを数枚チェックした後、最善なパラ メータでABテストを実施

  84. 5. 本施策の結果

  85. ▪本施策の結果 • ルールベースのロジックと、node2vecのロジックで1週間程度AB テストを実施 • 結果node2vecロジックのRelative CTRが1.5倍程度向上🎉 • 特に問題もなかったので、そのまま100%リリースへ!

  86. ▪本施策の結果 • ルールベースのロジックと、node2vecのロジックで1週間程度AB テストを実施 • 結果、node2vecロジックのRelative CTRが1.5倍程度向上 • 特に問題もなかったので、そのまま100%リリースへ 泥臭く検証した甲斐あってよかった〜🙌🙌🙌

  87. 6. まとめと今後の展望

  88. ▪まとめと今後の展望 • オンボーディング改善施策に機械学習を活用 ◦ トピックモデリングによるユーザー興味の抽出 ◦ node2vecによる推薦アイテムの計算 • ABテストの結果、ルールベースと比較してRelative CTRが1.5倍程

    度向上し100%リリースへ • 今後は、新鮮なアイテムを重み付けしたロジックの検証や、興味 タグを既存のレコメンデーションロジックに組み込む検証などを 実施したい
  89. ▪参考文献 • 7 Reasons Why Mobile Onboarding Is Your App’s

    80/20 | Apptimize ◦ https://apptimize.com/blog/2016/02/80-20-onboarding/ • node2vec: Scalable Feature Learning for Networks ◦ https://arxiv.org/abs/1607.00653 • Graph Embeddings — The Summary ◦ https://towardsdatascience.com/graph-embeddings-the-summary-c c6075aba007 • Baseline Needs More Love: On Simple Word-Embedding-Based Models and Associated Pooling Mechanisms ◦ https://arxiv.org/abs/1805.09843 • node2vecの論文紹介 ◦ https://recruit.gmo.jp/engineer/jisedai/blog/node2vec/
  90. 最後に

  91. ▪We’re Hiring! 弊社ではMLエンジニアを絶賛募集中です! • ライフイベント/ライフスタイルの課題解決をするサービスに興味がある方 • MLプロダクト開発に興味のある方 機械学習への取り組み事例や、今後やっていきたいことなどをまとめた資料も あるので、興味ある方はこちらもご覧いただけると嬉しいです! →

    https://tech.connehito.com/entry/ml_data_info コネヒト 機械学習 詳しくは で検索!
  92. おわり ご清聴ありがとうございました󰢛