F@N Ad-Tech Blog

株式会社ファンコミュニケーションズ nend・nex8のエンジニア・技術ブログ

『ユーザの平均継続期間が「1/解約率」』であるための十分条件について

 こんにちは、サービス開発部情報科学技術研究所所属のk_oomoriです。先日、
migi.hatenablog.com
というブログが公開され、アドテク界隈で話題になったようです。私も読ませていただきましたが、平易に書かれていてとても良い記事だと思いました。僭越ながら要約させていただくと、

  1. ある段階でのユーザ数をUとし、その後の流入は考えない
  2. 毎月の解約率(常に一定で変わらないとする!)はC

という仮定をおくとnか月後のユーザ数はU(1-C)^nとなり、それを0から\inftyまで足しあげた延べ継続期間が
\displaystyle
\sum_{n=0}^{\infty}U(1-C)^n=\frac{U}{C}
となるため、平均継続期間=ユーザの延べ継続期間/ユーザ数 として定義した平均継続時間が1/解約率で与えられることが示された、というものです。
 似たような問題は実は他の文脈でも現れます。例えば原子核物理学の分野で不安定な原子核の放射性崩壊という現象があり、ある時刻t=0における不安定原子核の数をN_0崩壊率あるいは崩壊定数(崩壊のしやすさ、詳しくは後ほど説明します)を\lambdaとしたときに、時刻tにおいて崩壊せずに残っている原子核数N(t)N_0\lambdaを用いて表すことができます。この場合、1個の原子核が平均的にどのくらい生き延びるか?という問題を考えることができ、平均寿命と呼ばれています。これを先ほどのユーザの解約問題と比較すると、

  • 解約率 ⇔ 崩壊率 (どちらも減る割合を表す。以後まとめて減衰率と表現することにする)
  • 平均継続期間 ⇔ 平均寿命 (解約/崩壊せずに生き残る時間間隔)

によって対応付けできるため、数学的には同種の問題とみなすことができます。(離散、連続の違いはありますが)

平均寿命の計算(数学が苦手な方はスキップ可)

 ではN(t)を求めてみましょう。tt+\Delta t (\Delta tは微小)の間に崩壊して減少する原子核数-\Delta Nはその時点で存在する原子核数Nと時間間隔\Delta tの積に比例するので、比例定数を\lambdaとして
-\Delta N=\lambda N \Delta t
と表せます。この\lambdaが崩壊率の定義で、時間の逆数の次元をもちます。両辺を-\Delta tで割って\Delta t\to 0の極限を取ると
\displaystyle
\frac{dN(t)}{dt}=-\lambda N(t)
となり、この微分方程式を解くとN(t)=N_0 e^{-\lambda t}が得られます(t=0N(0)=N_0となることを使いました)。時刻tまで生き残る原子核数はN(t)個あるため、平均寿命は加重平均として
\displaystyle
\langle t\rangle = \frac{\displaystyle\int_0^{\infty}tN(t)dt}{\displaystyle\int_0^{\infty}N(t)dt}=
\frac{\displaystyle\int_0^{\infty}te^{-\lambda t}dt}{\displaystyle\int_0^{\infty}e^{-\lambda t}dt}=
\frac{1/\lambda^2}{1/\lambda}=\frac{1}{\lambda}
と求めることができます(確率分布p(x)のもとでのxの平均値が\displaystyle\langle x\rangle= \int xp(x)dxで与えられるのと同じ考え方です)。

結果の解釈

 以上の結果を整理すると、不安定原子核の平均寿命は1/\lambdaとなり、崩壊率(減衰率)の逆数で与えられることがわかりました。これはユーザ解約問題において平均継続時間が1/解約率で与えられることと符合します!
 具体的な状況は全く異なるにもかかわらず、平均生存時間が減衰率の逆数で与えられるという同じ結論に辿り着いた本質は何であったかと考えると、それは減衰率(解約率・崩壊率)が一定である(時間によらない)という仮定です。この仮定により、nか月後の残存ユーザの割合は(1-C)^n、時間t経過後の原子核残存率は(e^{-\lambda})^tと指数関数の形になります。指数関数a^xをいくつかのa (0\lt a\lt 1)に対してプロットすると
f:id:fan_k_oomori:20170310132100p:plain
のようになります。まずパラメータが一つしかない関数なので、減衰率を決めてしまうとそれに応じてどのくらいの広がり(図中に模式的に矢印で示しました)を持つのかが決まってしまい、さらに指数関数という関数の性質としてこの幅が1/減衰率に対応するということなのです。

ではその仮定は正しいの?

 減衰率が時間によらず一定であることの帰結として平均生存時間が減衰率の逆数になるという結論が得られるということを述べました。原子核の崩壊率に関しては、量子力学によって支配された確率過程によるものなので、必ず一定となります。しかしサービスの解約率は、サービスの運営状況によって変わりうるものです。解約率がどんどん低下していく、そんなサービスを作りたいものですね!(なんだこの締め)