$30 off During Our Annual Pro Sale. View Details »

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

    View Slide

  2. ■アジェンダ
    1. 自己紹介・コネヒトやプロダクトの紹介
    2. 前提知識の共有
    → オンボーディングやコールドスタート問題など
    3. オンボーディング改善に取り組んだ背景
    4. トピックモデリングを活用したオンボーディング改善
    5. node2vecを活用した推薦アイテムの計算
    6. 本施策の結果
    7. まとめと今後の展望

    View Slide

  3. 1. 自己紹介・コネヒトやプロダクトの紹介

    View Slide

  4. 自己紹介

    View Slide

  5. ■自己紹介
    名前:野澤 哲照(Nozawa Takanobu)
    所属:コネヒト株式会社
      :たかぱい@takapy0210
    ● ML Engineer, ML PdM(見習い)として、機械学習のサービス導入を
    軸に、機械学習基盤や機械学習モデル, APIの開発をしたりしています
    ● ビジネスと機械学習を紐付けながら、どのようにインパクトを出すか
    に興味があります
    ● 友人とPodcast配信してます wipfm

    View Slide

  6. コネヒトという会社について
    プロダクトや機械学習活用事例も
    簡単に紹介させてください

    View Slide

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

    View Slide

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

    View Slide

  9. ■ママリについて
    家族に向き合うママの毎日は、新しい選択の連続。慌ただ
    しい日々の中で、正解のない選択をし続けることは容易な
    ことではありません
    「ママの一歩を支える」をミッションに、悩みの「解消」
    と「共感」を軸に、妊活中女性・プレママ・ママに寄り添
    うコミュニティを運営しています
    子どもを出産したママの3人に1人(※)が利用するアプリ
    に加え、Instagram、LINE、Twitter、facebookといった
    SNS、情報サイトを通じて、ママが日々の選択に自信を
    もって一歩を踏み出せるよう取り組んでいます
    ※「ママリ」で2019年内に出産予定と設定したユーザー数と、厚生労
    働省発表「人口動態統計」の出生数から算出

    View Slide

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

    View Slide

  11. Trust&Safetyなコミュニティを維持するための検閲モデル
    モデルが不適切な投稿と判断したデータに対して、人間が目視チェックを行う
    ことでHuman in the loopを実現し、コスト削減に寄与
    関連記事:
    ・コネヒトの機械学習プロジェクトにおける構想フェーズ・PoCフェーズの進め方 - コネヒト開発者ブログ
    ・機械学習と人が協力してママリのコミュニティを支えているよ、という話をしました - コネヒト開発者ブログ
    ■ML活用事例:コミュニティの自動検閲

    View Slide

  12. ユーザーの行動ログから興味のあるコンテンツを予測し優先的に表示
    することで、UX向上に寄与
    関連記事:
    ・レコメンデーション機能を実装するまでの "not 技術的" な取り組みについて - コネヒト開発者ブログ
    ・トピックモデルを活用したレコメンデーションの実装 - Speaker Deck
    ・コミュニティサービスにおけるレコメンデーションの変遷とMLパイプラインについて - Speaker Deck
    ■ML活用事例:レコメンデーション

    View Slide

  13. 2. 前提知識の共有
    オンボーディング
    コールドスタート問題

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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/

    View Slide

  18. コールドスタート問題って何?

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  32. トピックモデリングの実装例

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  38. プロダクトへの導入

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  49. Graph Embeddingとは

    View Slide

  50. ■Graph Embeddingとは
    グラフをベクトル空間に落とし込む手法のことで、埋め込みの手法は
    大きく以下の2つに分けられる
    ● ノード埋め込み
    ● グラフ埋め込み
    今回は「node2vec: Scalable Feature Learning for Networks」とい
    う論文で提案されたnode2vecというアプローチを用いて、前述した
    「タグ」の埋め込み表現を計算した
    参考論文:node2vec: Scalable Feature Learning for Networks
    参考文献:Graph Embeddings — The Summary.

    View Slide

  51. ■node2vecの概略
    今回の提案手法では、大きく分けて以下のステップでノードのベクト
    ルを計算している
    1. グラフ上をランダムウォークし、シークエンスデータを生成する
    2. 生成したシークエンスデータを学習データとして、教師なし学習
    を行う
    3. 学習した結果からノードのベクトルを取得する
    https://towardsdatascience.com/graph-embeddings-the-summary-cc6075aba007

    View Slide

  52. node2vecを実装してみる

    View Slide

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

    View Slide

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

    View Slide

  55. 無向グラフの生成

    View Slide

  56. ■無向グラフの生成プロセス
    ● 無向グラフとは、各ノードの始点と終点の区別をつけないグラフ
    のこと
    ● 「タグ」をノードとしてNetworkXを用いてグラフを生成する
    ● 同じアイテムに紐づくタグがある場合は、それらのノードとし
    て、エッジで接続してグラフを生成していく
    ● ただし、関連性の薄い(自己相互情報量が少ない)タグ同士につ
    いてはグラフに追加しないように調整する

    View Slide

  57. ■無向グラフのイメージ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  65. ■ランダムウォークし、シーケンスデータを生成
    ● ランダムウォークは2種類のケースが考えられ、BFS(breadth first
    search)とDFS(depth first search)が存在する
    ○ BFSは幅優先探索で、ノードuと接続しているノードを優先的
    に探索(サンプリング)する
    ○ DFSは深さ優先探索で、ノードuからできるだけ離れたノード
    に到達するように探索する

    View Slide

  66. ■ランダムウォークし、シーケンスデータを生成
    ● 提案手法ではpとqというパラメータが導入されており、このパタ
    メータの値によりBFSとDFSの塩梅を調節できる
    ○ pが小さくqが大きい時はBFSとなる
    ○ pが大きくqが小さい時はDFSとなる
    ※興味がある方は元論文を読んでみてください

    View Slide

  67. ■実装例

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  84. 5. 本施策の結果

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  88. ■まとめと今後の展望
    ● オンボーディング改善施策に機械学習を活用
    ○ トピックモデリングによるユーザー興味の抽出
    ○ node2vecによる推薦アイテムの計算
    ● ABテストの結果、ルールベースと比較してRelative CTRが1.5倍程
    度向上し100%リリースへ
    ● 今後は、新鮮なアイテムを重み付けしたロジックの検証や、興味
    タグを既存のレコメンデーションロジックに組み込む検証などを
    実施したい

    View Slide

  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/

    View Slide

  90. 最後に

    View Slide

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

    View Slide

  92. おわり
    ご清聴ありがとうございました󰢛

    View Slide