Re:ゼロから始めるML生活

どちらかといえばエミリア派です

Push通知改善に関して調べたことをまとめる

最近Push通知についてあれこれ考えたり調べたりすることがあったんですが、これについて何の気無しにTweetしたら、普段より多めの反応がありました。

思いの外反応が多く、記事にして残しておくニーズを感じたので、今回調べたり勉強したことを書き残していこうと思います。

Push通知とは?

Push通知がどんな機能であるか、サラッと確認します。

プッシュ通知とは、アプリが自動的にお知らせを通知する機能です。着信音が鳴ったり、ステータスバーに表示されるなどモバイルマーケティングにおいて活用されています。すでにプッシュ通知を導入し、大きな成果につなげている企業も増えています。 プッシュ通知とは?導入するメリットや方法・効果的な使い方を徹底解説|Rtoaster - Webもアプリもパーソナライズ(アールトースター)

Push通知のイメージ

iOS/Android等のモバイルデバイスにはだいたい機能として組み込まれているのではないでしょうか。

特徴

何も考えずにPush通知の特徴を書き出すと、こんな感じでしょうか。

  1. アプリを開いていなくてもユーザーに訴求できる
    • アプリを開いていないユーザーに対して、アプリを使用を訴求する情報を提供できる
  2. 時間や位置情報、アプリの使用時など、通知トリガーを工夫できる
    • 毎日定時に通知する事ができる(例: ニュースアプリなど)
    • 位置情報をもとに通知する事ができる(例: 地震速報通知、クーポン配信の通知など)
    • アプリに復帰したタイミングで通知することができる(例: 「前回途中まで読んだところから始める」などの機能)

その他、特筆すべき点としては、iOSには通知要約という機能があります。

通知要約のイメージ

Push通知を送っているエンジニアとしては、通知を送信したらユーザーはその通知を少なくとも認知していると考えてしまいがちですが、通知要約の機能で通知が送信されたタイミングにユーザーは通知を認識していない(後で要約として見る)といったことが発生したりします。 通知要約内の順位が下の方であると、場合によってはせっかく送った通知を全く認知していない、なんてことも起こりえます。

Push通知の頻度に関する最適化

ざっくりPush通知の特徴を紹介したところで、エンジニア視点で次に気になる点としては、効果的にPush通知を配信するにはどうしたらよいかという点ではないでしょうか?

「何を通知するか」についても議論の余地はありますが、今回は通知する内容は決められているものとして「どれくらいの頻度で通知するか」にフォーカスして見ていきたいと思います。

通知頻度のトレードオフ: 短期でのエンゲージメントと長期での離脱

一般論として、Push通知の頻度が多いとユーザーは短期的にはアプリを使用してくれますが、長期的にはユーザー体験を損なってしまい解約・アンインストールや通知を受信停止してしまう可能性も高まります。

アクティブユーザー数などの指標を改善することを考えると、通知頻度を多くした場合、短期的には指標は良くなります。 しかし、DAUの指標向上の裏ではユーザーは通知を停止したりアプリをアンインストールしているかもしれず、こうした事態は時間をかけてじわじわと影響していくため、短期的にDAUに中止している際には往々にして見過ごされがちです。

これに関連する内容に関する調査として、Metaのブログが参考になりそうです。

medium.com

この調査では、ごく少数のユーザーにとって非常に関連がある(5段階評価で最高)通知だけを通知することでユーザーの満足と使用率を改善することができたと報告されています。

通常のA/Bテストではテスト期間が短すぎて、通知頻度の長期的な介入効果を測定することができません。 そこで、通知回数の少ない群を用意し、何ヶ月〜何年といった非常に長い期間A/Bテストを行うことで、長期的介入効果を測定したそうです。

すると、最初は通知回数が少ないことによってアプリの使用頻度は少なくなりますが、次第に回復し、最後には通知回数が少ないユーザーのほうがリテンションが高まったと言います。 つまり、短期的な結果と長期的な結果が反転し、本当に重要な通知だけごく少数通知したほうがむしろリテンションが高まる可能性が示唆されています。

上記の調査は、あくまでFacebookのアプリ内通知の話ではありますが、Push通知に関しても同様の傾向を示すであろうことは想像に難くありません。

新規ユーザーにフォーカスした事例

SmartNewsのtech blogでは、新規ユーザーに対象を限定して上記の問題に対して対処しているようです。

medium.com

新規ユーザーはPush通知の多さに特に敏感で、ユーザーがアプリの価値を十分に理解していない場合には、Push通知の多さにユーザーは興味を失い、不満を感じるようになっていくようです。

新規ユーザーに対する通知頻度の調整として、最初は通知を控えめにして、その後徐々に通知の頻度を上げていく方法が考えられます。 この方法でも、長期的効果は得られたようですが、多くのPush通知を受け取りたいような一方で一部の熱心なユーザーに対しては物足りなくなってしまいます。

そこで、機械学習を使用して各ユーザーにとって最適なPush通知の頻度を推定することを考えます。 ユーザーへの通知量についてバジェットを設定し、これをユーザーごとに調整することでたくさん通知を受け取りたいユーザーと通知を少なくしたいユーザーへの通知を調整します。

Optimizing push frequency for new users | by Devon Bancroft | SmartNews, Inc | Mediumより引用

バジェットbに依存する短期的なエンゲージメントとネガティブインパクトと、長期的なエンゲージメントを予測し、それらを組み合わせた価値関数が最大化するようなバジェットをユーザーごとに設定することでユーザーごとに通知量をコントロールしてエンゲージメントを最大化するようです。 最終的には、もともとよりエンゲージメントが15%向上したとのことで、決して少なくない影響になっていることがわかります。

強化学習を応用して通知を送信するかどうかを決める事例

また、通知量のコントロールに関して別のアプローチも見てみたいと思います。

arxiv.org

こちらはTwitterの事例です。

通常、Push通知はユーザーが積極的に情報を求めていないときに発生します。 そういった状況では、ユーザーは自分に関連がない情報に対して敏感で、興味がない通知は停止したり無視するようになることが一般的です。

しかし、従来の近視眼的な推薦システムでは、こうしたある程度未来のユーザーの行動を最適化するようにはできておらず、短期的なDAU向上を最適化するために迷ったらPush通知を送るという戦略になりがちです。

こちらの論文では、通知量自体をコントロールするのではなく、ユーザーに通知を送るかどうかを最近のログデータを使用して決定する、強化学習的なアプローチをとっています。 ユーザーに対して、通知を送信した結果開封された/されなかったという系列データを用いて、今通知しようとしているものがユーザーに送るべきかどうかを推定し、送信する/しないを決定しています。

結果として、送信数を減らしつつ(関連性の低い通知を減らしつつ)、開封率を向上させ、DAUも向上させることができたとしています。

細かい手法については、論文をご参照いただければと思います。

その他、技術的な話 (通知要約)

Push通知の要約機能はエンジニアとしては厄介で、通知を実際にはユーザーが認知していないということが発生します。 こういったことをなるべく回避するために、要約の通知の上位に通知を表示することは一つポイントになるかもしれません。

この点に関しては下記の記事が参考になります。

techblog.istyle.co.jp

どうやら通知にはInterruption LevelsとRelevance Scoreがあり、

  • Interruption Levels: 通知要約や集中モードを突破して、即時通知するかどうかのレベル
  • Relevance Score: 通知の優先度を表すスコア

のようです。

Interruption Levelsは開発者が設定するもので、極端な話をすればすべての通知をTime Sensitive(即時)に設定すればユーザーはすべての通知を認知することになりますが、その分通知を煩わしく感じて通知を停止してしまうリスクも高くなるので注意が必要そうですね。

Relevance Scoreも開発者が設定するもので、一日に複数件のPush通知を送信する際に通知要約内で通知の表示優先度を定めるために使用されます。 ただし、これはアプリを跨いで影響せず、iOSではAppleの定めたアルゴリズムによってどのアプリの通知を通知要約内で優先度高く表示するかが決められています。 アプリ間での順位は、

画像や動画を使用したリッチ通知をより上位に表示するようにソートする

となっているらしく、よりリッチなPushにしてあるほうがユーザーの目に留まりやすいという事になりそうです。 通知に使用する画像や動画についても注意が必要そうですね。

参考文献

この記事を書くにあたって下記の文献を参考にさせていただきました。

自分が読んだ論文メモはこちら。

github.com

感想

モバイルアプリではPush通知はエンゲージメントを高める重要な機能であることは間違いないですが、使い方を間違うとユーザーの離脱を招いてしまうんですね。 そこに対するアプローチについてもbig tech企業では研究されており、こうした事例は参考になるかもしれませんね。

自分がこの対応をする日が来るかはわかりませんが、勉強になりました。