こんにちは、サービス開発部情報科学技術研究所所属のk_oomoriです。先日、
migi.hatenablog.com
というブログが公開され、アドテク界隈で話題になったようです。私も読ませていただきましたが、平易に書かれていてとても良い記事だと思いました。僭越ながら要約させていただくと、
- ある段階でのユーザ数を
とし、その後の流入は考えない
- 毎月の解約率(常に一定で変わらないとする!)は
という仮定をおくとか月後のユーザ数は
となり、それを
から
まで足しあげた延べ継続期間が
となるため、平均継続期間=ユーザの延べ継続期間/ユーザ数 として定義した平均継続時間が1/解約率で与えられることが示された、というものです。
似たような問題は実は他の文脈でも現れます。例えば原子核物理学の分野で不安定な原子核の放射性崩壊という現象があり、ある時刻における不安定原子核の数を
、崩壊率あるいは崩壊定数(崩壊のしやすさ、詳しくは後ほど説明します)を
としたときに、時刻
において崩壊せずに残っている原子核数
を
と
を用いて表すことができます。この場合、1個の原子核が平均的にどのくらい生き延びるか?という問題を考えることができ、平均寿命と呼ばれています。これを先ほどのユーザの解約問題と比較すると、
- 解約率 ⇔ 崩壊率 (どちらも減る割合を表す。以後まとめて減衰率と表現することにする)
- 平均継続期間 ⇔ 平均寿命 (解約/崩壊せずに生き残る時間間隔)
によって対応付けできるため、数学的には同種の問題とみなすことができます。(離散、連続の違いはありますが)
平均寿命の計算(数学が苦手な方はスキップ可)
ではを求めてみましょう。
~
(
は微小)の間に崩壊して減少する原子核数
はその時点で存在する原子核数
と時間間隔
の積に比例するので、比例定数を
として
と表せます。このが崩壊率の定義で、時間の逆数の次元をもちます。両辺を
で割って
の極限を取ると
となり、この微分方程式を解くとが得られます(
で
となることを使いました)。時刻
まで生き残る原子核数は
個あるため、平均寿命は加重平均として
と求めることができます(確率分布のもとでの
の平均値が
で与えられるのと同じ考え方です)。
結果の解釈
以上の結果を整理すると、不安定原子核の平均寿命はとなり、崩壊率(減衰率)の逆数で与えられることがわかりました。これはユーザ解約問題において平均継続時間が1/解約率で与えられることと符合します!
具体的な状況は全く異なるにもかかわらず、平均生存時間が減衰率の逆数で与えられるという同じ結論に辿り着いた本質は何であったかと考えると、それは減衰率(解約率・崩壊率)が一定である(時間によらない)という仮定です。この仮定により、か月後の残存ユーザの割合は
、時間
経過後の原子核残存率は
と指数関数の形になります。指数関数
をいくつかの
に対してプロットすると
のようになります。まずパラメータが一つしかない関数なので、減衰率を決めてしまうとそれに応じてどのくらいの広がり(図中に模式的に矢印で示しました)を持つのかが決まってしまい、さらに指数関数という関数の性質としてこの幅が1/減衰率に対応するということなのです。
ではその仮定は正しいの?
減衰率が時間によらず一定であることの帰結として平均生存時間が減衰率の逆数になるという結論が得られるということを述べました。原子核の崩壊率に関しては、量子力学によって支配された確率過程によるものなので、必ず一定となります。しかしサービスの解約率は、サービスの運営状況によって変わりうるものです。解約率がどんどん低下していく、そんなサービスを作りたいものですね!(なんだこの締め)