NLPを活用したオンボーディング改善とコールドスタート問題への対策
by
Takanobu Nozawa
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
NLPを活用したオンボーディング改善と コールドスタート問題への対策 Takanobo Nozawa 2022.10.14 PyCon JP 2022
Slide 2
Slide 2 text
■アジェンダ 1. 自己紹介・コネヒトやプロダクトの紹介 2. 前提知識の共有 → オンボーディングやコールドスタート問題など 3. オンボーディング改善に取り組んだ背景 4. トピックモデリングを活用したオンボーディング改善 5. node2vecを活用した推薦アイテムの計算 6. 本施策の結果 7. まとめと今後の展望
Slide 3
Slide 3 text
1. 自己紹介・コネヒトやプロダクトの紹介
Slide 4
Slide 4 text
自己紹介
Slide 5
Slide 5 text
■自己紹介 名前:野澤 哲照(Nozawa Takanobu) 所属:コネヒト株式会社 :たかぱい@takapy0210 ● ML Engineer, ML PdM(見習い)として、機械学習のサービス導入を 軸に、機械学習基盤や機械学習モデル, APIの開発をしたりしています ● ビジネスと機械学習を紐付けながら、どのようにインパクトを出すか に興味があります ● 友人とPodcast配信してます wipfm
Slide 6
Slide 6 text
コネヒトという会社について プロダクトや機械学習活用事例も 簡単に紹介させてください
Slide 7
Slide 7 text
■コネヒトのVISION ありとあらゆる価値観が見つめ直され、 それぞれに思い描く家族の姿はどんどん変わっている 家族の数だけ形があって、つくりたい未来がある 私たちコネヒトは「家族像」というテーマに向き合う会社です
Slide 8
Slide 8 text
■コネヒトの事業 「あなたの家族像が実現できる社会をつくる」 というVISIONに基づく中期的な目標として 子どもを望む家族像の多様性を実現するために日々取り組んでいます サービス | コネヒト株式会社
Slide 9
Slide 9 text
■ママリについて 家族に向き合うママの毎日は、新しい選択の連続。慌ただ しい日々の中で、正解のない選択をし続けることは容易な ことではありません 「ママの一歩を支える」をミッションに、悩みの「解消」 と「共感」を軸に、妊活中女性・プレママ・ママに寄り添 うコミュニティを運営しています 子どもを出産したママの3人に1人(※)が利用するアプリ に加え、Instagram、LINE、Twitter、facebookといった SNS、情報サイトを通じて、ママが日々の選択に自信を もって一歩を踏み出せるよう取り組んでいます ※「ママリ」で2019年内に出産予定と設定したユーザー数と、厚生労 働省発表「人口動態統計」の出生数から算出
Slide 10
Slide 10 text
■家族ノートについて 家族ノートでは、一般的なアンケート調査とは異なり、 日々の暮らしの中で無意識的に行っている「検索」や「質 問/回答」の中に現れる、家族の心の動きや真の欲求を知 ることができます ママの3人に1人(※1)が利用するアプリ「ママリ」の月 間400万検索、130万投稿(※2)もの活発な利用の中 で、家族が今悩んでいることや、求めている商品・サービ スがタイムリーに反映され、アンケート調査等では踏み込 めないリアルな課題や態度変容が映し出されています 家族ノートを通して、家族の悩みを社会に届け、志を共に するパートナーのみなさんとともに「あなたの家族像が実 現できる社会」の実現に取り組んでいます ※1:「ママリ」で2019年内に出産予定と設定したユーザー数と、厚生労働省発表「人 口動態統計」の出生数から算出。 ※2:2021年3月現在。
Slide 11
Slide 11 text
Trust&Safetyなコミュニティを維持するための検閲モデル モデルが不適切な投稿と判断したデータに対して、人間が目視チェックを行う ことでHuman in the loopを実現し、コスト削減に寄与 関連記事: ・コネヒトの機械学習プロジェクトにおける構想フェーズ・PoCフェーズの進め方 - コネヒト開発者ブログ ・機械学習と人が協力してママリのコミュニティを支えているよ、という話をしました - コネヒト開発者ブログ ■ML活用事例:コミュニティの自動検閲
Slide 12
Slide 12 text
ユーザーの行動ログから興味のあるコンテンツを予測し優先的に表示 することで、UX向上に寄与 関連記事: ・レコメンデーション機能を実装するまでの "not 技術的" な取り組みについて - コネヒト開発者ブログ ・トピックモデルを活用したレコメンデーションの実装 - Speaker Deck ・コミュニティサービスにおけるレコメンデーションの変遷とMLパイプラインについて - Speaker Deck ■ML活用事例:レコメンデーション
Slide 13
Slide 13 text
2. 前提知識の共有 オンボーディング コールドスタート問題
Slide 14
Slide 14 text
オンボーディングって何?
Slide 15
Slide 15 text
■オンボーディングとは 新規ユーザーに対して必要なサポートを行い、ユーザーにプロダクトの 価値を伝えるプロセスのこと → アプリダウンロードからユーザーのアクティブ化への架け橋として 長期的に利用してもらうことがオンボーディングと言える https://apptimize.com/blog/2016/02/80-20-onboarding/
Slide 16
Slide 16 text
■オンボーディングの事例 例えばTwitterでは、Engagementさせるための1つの方法として 「見たいものは何か?」を選ぶフローがあり、ここでユーザーごとに 興味関心のあるトピックを選択することで、パーソナライズを実現し ようとしている
Slide 17
Slide 17 text
■オンボーディングの重要性 ユーザーの離脱に関して以下のような数値が発表されている(※) ● 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/
Slide 18
Slide 18 text
コールドスタート問題って何?
Slide 19
Slide 19 text
■コールドスタート問題とは ● サービス内でのユーザーやアイテムに関する情報が少ないケース、 特に新規ユーザーや新規アイテムについて適切に推薦を行うことが 難しい問題のこと ● 初対面の人の趣味や好みが分からないのと一緒なイメージ
Slide 20
Slide 20 text
3. オンボーディング改善に取り組んだ背景 前提知識が共有できたところで...
Slide 21
Slide 21 text
■背景 これまでのママリでは、新規ユーザーに対してはお子さんの年齢や妊 娠週数別にルールベースでアイテムの推薦を行っていた いくつか課題はあったが、中でも新規ユーザーの興味関心が不明瞭な ことによる体験の損失が大きいと考えていた
Slide 22
Slide 22 text
■背景 例えば妊娠初期のユーザーでも興味関心は1人1人異なる ● 妊娠中、母体に訪れる症状(例:つわりなど)に関心のあるユー ザー ● 仕事関連(例:産休など)に関心のあるユーザー ● お金関連(例:出産にかかる費用や保険など)に関心のあるユー ザー etc
Slide 23
Slide 23 text
■背景 このような興味関心は今までのルールベースの推薦では考慮できてお らず、同じ属性(妊娠初期など)の新規ユーザーには一様なアイテム が推薦されている状態だった このような課題を解消するためにオンボーディングの改善を実施
Slide 24
Slide 24 text
■このあと話すことはざっくり以下2点 ● ユーザーが興味関心のあるトピック候補をどのように選定するか →トピックモデリングを活用 ● 上記で選択したトピックに関連のあるアイテムをどう計算するか →node2vecを用いたベクトルを活用
Slide 25
Slide 25 text
4. トピックモデリングを活用した オンボーディング改善
Slide 26
Slide 26 text
トピックモデリングとは
Slide 27
Slide 27 text
■トピックモデリングとは 文書が複数の潜在的なトピックから確率的に生成されると仮定したモ デル ここでいう「トピック」とは話の主題のことで、同じ話題について話 していても、人によって解釈が変わることもある
Slide 28
Slide 28 text
■トピックモデリングの特徴 トピックモデルの「トピックの数」と「出力されたトピックのラベル」 は人間が決める必要がある 下記例だとTopic1:スポーツ、2:経済、3:エンタメ、と解釈できる
Slide 29
Slide 29 text
オンボーディングへの活用方法 トピックモデリングを どのようにオンボーディングに活かしていくか
Slide 30
Slide 30 text
■オンボーディングへの活用方法 いきなりですが、ここに表示するアイテム、どうやって決めますか?
Slide 31
Slide 31 text
■オンボーディングへの活用方法 いくつか方法が思い浮かぶ ● 社内で保持しているタグorカテゴリデータを使用する ● 検索のログを分析して頻繁に検索されているワードを使用する etc … 例えば、検索のログなどは一般的に、顕在化されている関心であること が多く潜在的な関心を拾うのは難しい → アイテムのクリックログから、潜在的なニーズを探るために トピックモデリングを活用
Slide 32
Slide 32 text
トピックモデリングの実装例
Slide 33
Slide 33 text
■トピックモデリングの実装例 各アイテムの自然言語をトークナイズしたデータを準備
Slide 34
Slide 34 text
■トピックモデリングの実装例 gensimを利用すれば以下のように実装するだけで学習できる ありがとう、gensim🙏
Slide 35
Slide 35 text
■トピックモデリングの実装例 前述したように学習後のトピックに対する意味付けは人間が行う必要 があるため、以下のように可視化すると各トピックがどのような意味 を持つのかが理解しやすい
Slide 36
Slide 36 text
■可視化して各トピックの意味を解釈する
Slide 37
Slide 37 text
■最適なトピック数にあたりをつける トピック数は、一般的にCoherenceとPerplexityの値から、 最適なトピック数に当たりをつけることができる
Slide 38
Slide 38 text
プロダクトへの導入
Slide 39
Slide 39 text
■プロダクトへの導入 トピックモデリングで分析した結果などを参考に、PdMと議論しなが ら最終的にユーザーに表示する興味トピックを選定
Slide 40
Slide 40 text
■プロダクトへの導入 トピックモデリングで分析した結果などを参考に、PdMと議論しなが ら最終的にユーザーに表示するトピックを選定 ここまでで、オンボーディング時に 表示するトピックの選定は行えた
Slide 41
Slide 41 text
■プロダクトへの導入 トピックモデリングで分析した結果などを参考に、PdMと議論しなが ら最終的にユーザーに表示するトピックを選定 では、ユーザーが選択した トピックと関連性の高いアイテムを どのように計算するか? 例えば、興味選択で”つわり”を選択したユーザーに 推薦するアイテムはどのように計算する?
Slide 42
Slide 42 text
■プロダクトへの導入 トピックモデリングで分析した結果などを参考に、PdMと議論しなが ら最終的にユーザーに表示するトピックを選定 よし、機械学習で解決するぞ! の前に...
Slide 43
Slide 43 text
■機械学習で解決するぞ!の前に... ● 一般的に、機械学習をプロダクトへ導入する際、まずはシンプル なベースラインを作成してそこから徐々に改善していく、という アプローチが良いと言われている ● 今回も例に漏れず、まずはルールベースのアプローチでベースラ インを作成
Slide 44
Slide 44 text
■ルールベースによる推薦 ● オンボーディング時に選択したトピックに対して、そのタグが付 与されているアイテムを新着順に推薦する、というもの ● 例えば「保育園」を選択したユーザーに対しては、「保育園」 タグが付与されているアイテムを新しい順に推薦する タグ
Slide 45
Slide 45 text
■ルールベースによる推薦 ● オンボーディング時に選択したトピックに対して、そのタグが付 与されているアイテムを新着順に推薦する、というもの ● 例えば「保育園」を選択したユーザーに対しては、「保育園」 タグが付与されているアイテムを新しい順に推薦する タグ シンプルなロジックで実装コストも低い だが、これにはいくつか課題もあった
Slide 46
Slide 46 text
■ルールベースによる推薦の課題 ● 画像の文章を見ていただくと分かるように、このアイテムの主題 は「保育園」ではなく「仕事」にある。このアイテムが「保育 園」に興味のあるユーザーに推薦された場合のユーザー体験は、 あまり良くない。 ● このようなことを改善すべく機械学習を用いたアプローチを検証
Slide 47
Slide 47 text
5. node2vecを活用した推薦アイテムの計算
Slide 48
Slide 48 text
■node2vecを活用した推薦アイテムの計算 ● 各タグのEmbeddingが計算できれば、タグ同士の類似度やタグと アイテムとの類似性も良いものが計算できるのではないか、とい う仮説のもと、Graph Embedding(node2vec)を用いて検証 ● Embeddingはレコメンデーションをはじめとして、活用できる幅 が広いというのも採用理由の1つ 離乳食 じゃがいも タンパク タグ:N アイテム:1
Slide 49
Slide 49 text
Graph Embeddingとは
Slide 50
Slide 50 text
■Graph Embeddingとは グラフをベクトル空間に落とし込む手法のことで、埋め込みの手法は 大きく以下の2つに分けられる ● ノード埋め込み ● グラフ埋め込み 今回は「node2vec: Scalable Feature Learning for Networks」とい う論文で提案されたnode2vecというアプローチを用いて、前述した 「タグ」の埋め込み表現を計算した 参考論文:node2vec: Scalable Feature Learning for Networks 参考文献:Graph Embeddings — The Summary.
Slide 51
Slide 51 text
■node2vecの概略 今回の提案手法では、大きく分けて以下のステップでノードのベクト ルを計算している 1. グラフ上をランダムウォークし、シークエンスデータを生成する 2. 生成したシークエンスデータを学習データとして、教師なし学習 を行う 3. 学習した結果からノードのベクトルを取得する https://towardsdatascience.com/graph-embeddings-the-summary-cc6075aba007
Slide 52
Slide 52 text
node2vecを実装してみる
Slide 53
Slide 53 text
■使用したデータ 今回使用したデータは右図のような形式 ● id:アイテムID ● tag_id:タグID ● tag:タグの名称
Slide 54
Slide 54 text
■node2vecの実装手順 以下の手順で実装 1. 無向グラフを生成 2. 無向グラフをランダムウォークし、シーケンスデータを生成 3. 教師なし学習でノード(=タグ)のベクトルを計算 4. ベクトルの類似度を定性的にチェック
Slide 55
Slide 55 text
無向グラフの生成
Slide 56
Slide 56 text
■無向グラフの生成プロセス ● 無向グラフとは、各ノードの始点と終点の区別をつけないグラフ のこと ● 「タグ」をノードとしてNetworkXを用いてグラフを生成する ● 同じアイテムに紐づくタグがある場合は、それらのノードとし て、エッジで接続してグラフを生成していく ● ただし、関連性の薄い(自己相互情報量が少ない)タグ同士につ いてはグラフに追加しないように調整する
Slide 57
Slide 57 text
■無向グラフのイメージ
Slide 58
Slide 58 text
■無向グラフのイメージ
Slide 59
Slide 59 text
■無向グラフのイメージ 離乳食を媒介として、近傍に関連性 の高いタグが存在している
Slide 60
Slide 60 text
■無向グラフの実装例
Slide 61
Slide 61 text
■無向グラフの実装例 各タグ同士の重み(共通し て付与されているアイテム の数)を計算
Slide 62
Slide 62 text
■無向グラフの実装例 タグのペアをループしながら、 関係性の強いタグのみを用いて グラフを生成
Slide 63
Slide 63 text
ランダムウォークし、シーケンスデータを生成
Slide 64
Slide 64 text
■ランダムウォークし、シーケンスデータを生成 ● 作成した無向グラフを、前述したnode2vecで提案された手法でラ ンダムウォークし、シークエンスデータを生成する ○ 考え方:あるノードを起点に考えたとき、エッジ重みを考慮し てステップ数kでランダムウォークさせる(=重いほどつなが りが強い→よく通るように確率を設定)これを試行数r回繰り 返すと、シーエンス数kのデータがr個生成できる
Slide 65
Slide 65 text
■ランダムウォークし、シーケンスデータを生成 ● ランダムウォークは2種類のケースが考えられ、BFS(breadth first search)とDFS(depth first search)が存在する ○ BFSは幅優先探索で、ノードuと接続しているノードを優先的 に探索(サンプリング)する ○ DFSは深さ優先探索で、ノードuからできるだけ離れたノード に到達するように探索する
Slide 66
Slide 66 text
■ランダムウォークし、シーケンスデータを生成 ● 提案手法ではpとqというパラメータが導入されており、このパタ メータの値によりBFSとDFSの塩梅を調節できる ○ pが小さくqが大きい時はBFSとなる ○ pが大きくqが小さい時はDFSとなる ※興味がある方は元論文を読んでみてください
Slide 67
Slide 67 text
■実装例
Slide 68
Slide 68 text
■実装例 先ほど紹介したパラメータpとq によって次に進むノードを選択
Slide 69
Slide 69 text
■実装例 ステップ数:num_steps 試行回数:num_walks でランダムウォークすることで、 シーエンス数num_stepsのデータ をnum_walks個生成(これが全 ノードを起点として生成される)
Slide 70
Slide 70 text
■取得できるシーケンスデータの例 関連性の高いタグが近傍に存在しているシーケンスデータになってい そう
Slide 71
Slide 71 text
教師なし学習でノード(=タグ)のベクトルを計算
Slide 72
Slide 72 text
■教師なし学習の実装例 gensimを用いて、自然言語処理ではおなじみのskip-gramという手法 でベクトル化 ありがとう、gensim🙏
Slide 73
Slide 73 text
ベクトルの類似度を定性的にチェック
Slide 74
Slide 74 text
■ベクトルの定性チェック gensimのmost_similarメソッドを用いて定性チェック
Slide 75
Slide 75 text
■ベクトルの定性チェック gensimのmost_similarメソッドを用いて定性チェック よさそう🎉🎉🎉
Slide 76
Slide 76 text
■ベクトルの定性チェック gensimのmost_similarメソッドを用いて定性チェック タグのベクトルは計算できたので このベクトルからアイテムのベクトルを計算する
Slide 77
Slide 77 text
アイテムのベクトル計算
Slide 78
Slide 78 text
■アイテムのベクトル計算 ● アイテムのベクトル計算にはSWEMを利用し、アイテムに紐づく タグベクトルから、アイテムのベクトルを算出(下図参照) ● 最後にタグとアイテムの類似度を計算し、オンボーディングで選択した 興味トピック(≒タグ)に対して、どのアイテムを推薦するか算出
Slide 79
Slide 79 text
■実際の推薦イメージ 例えば「つわり」を選択したユーザーには以下のようなアイテムが 推薦されるイメージ
Slide 80
Slide 80 text
■実際の推薦イメージ 例えば「つわり」を選択したユーザーには以下のようなアイテムが 推薦される ロジックはできたが これでユーザー体験はよくなるのだろうか?
Slide 81
Slide 81 text
■実際の推薦イメージ 例えば「つわり」を選択したユーザーには以下のようなアイテムが 推薦される データを泥臭くチェックしていった
Slide 82
Slide 82 text
■推薦結果の定性チェック ● PdMとデータを泥臭く見ながらパラメータを調整 ○ パラメータとは、node2vecのロジックで使用するパラメータの 他に、前処理や後処理で行っているものも含まれる ● パラメータごとに、どのトピックを選んだ時にどんなアイテムが 推薦されるかをスプレッドシートに吐き出し、1個1個チェックしな がら、どのパラメータが一番良い体験を与えられそうか検証
Slide 83
Slide 83 text
■推薦結果の定性チェック こんな感じのスプレッドシートを数枚チェックした後、最善なパラ メータでABテストを実施
Slide 84
Slide 84 text
5. 本施策の結果
Slide 85
Slide 85 text
■本施策の結果 ● ルールベースのロジックと、node2vecのロジックで1週間程度AB テストを実施 ● 結果node2vecロジックのRelative CTRが1.5倍程度向上🎉 ● 特に問題もなかったので、そのまま100%リリースへ!
Slide 86
Slide 86 text
■本施策の結果 ● ルールベースのロジックと、node2vecのロジックで1週間程度AB テストを実施 ● 結果、node2vecロジックのRelative CTRが1.5倍程度向上 ● 特に問題もなかったので、そのまま100%リリースへ 泥臭く検証した甲斐あってよかった〜🙌🙌🙌
Slide 87
Slide 87 text
6. まとめと今後の展望
Slide 88
Slide 88 text
■まとめと今後の展望 ● オンボーディング改善施策に機械学習を活用 ○ トピックモデリングによるユーザー興味の抽出 ○ node2vecによる推薦アイテムの計算 ● ABテストの結果、ルールベースと比較してRelative CTRが1.5倍程 度向上し100%リリースへ ● 今後は、新鮮なアイテムを重み付けしたロジックの検証や、興味 タグを既存のレコメンデーションロジックに組み込む検証などを 実施したい
Slide 89
Slide 89 text
■参考文献 ● 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/
Slide 90
Slide 90 text
最後に
Slide 91
Slide 91 text
■We’re Hiring! 弊社ではMLエンジニアを絶賛募集中です! ● ライフイベント/ライフスタイルの課題解決をするサービスに興味がある方 ● MLプロダクト開発に興味のある方 機械学習への取り組み事例や、今後やっていきたいことなどをまとめた資料も あるので、興味ある方はこちらもご覧いただけると嬉しいです! → https://tech.connehito.com/entry/ml_data_info コネヒト 機械学習 詳しくは で検索!
Slide 92
Slide 92 text
おわり ご清聴ありがとうございました