読者です 読者をやめる 読者になる 読者になる

F@N Ad-Tech Blog

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

ベイズ統計モデリングに触れてみた話

こんにちは、情報科学技術研究所のy_kawasakiです。春になり天気予報が微妙にずれる(時間的に)のが気になる今日このごろです。

  • ベイズ統計モデリングとは
  • 準備
    • ベイズ統計モデリングソフト
    • PyStanのインストール
  • 実例
    • 基礎統計的データ
    • 結果
    • 結果2
    • 今後の課題
  • 参考図書
  • 付録

ベイズ統計モデリングとは

ベイズ統計学による、統計モデリングのことです!それぞれの意味は個々でググってください!

準備

ベイズ統計モデリングソフト

ベイズ統計モデリングをやるには、MCMC(マルコフ連鎖モンテカルロ法)で解く必要があるので様々なパッケージが用意されています。たとえば、BUGS言語を使ったソフトや、Stanというツールなど。ここでは、最近流行りのStanを使うことにします。Pythonから使う必要が(自分には)あるため、PyStanを利用します。

PyStanのインストール


> pip install PyStan

難しいことはありません。

実例

弊社では本社があるビルが手狭になったことから一部の部署が切り出されて、近くのビルに放り出されました(以下、本社とサテライト)。そこで、時々、本社と行き来する必要が発生して、片道どれくらいかかるのかを情報科学技術研究所的には調査する必要性が発生しました。(使命感)

そこで、被験者3名に計測を依頼したところ、A7件、B2件、C4件、計13件の下記の結果を得ることができました。なお、本社、サテライト間には、信号とエレベータが障害として存在しています。

続きを読む

『ユーザの平均継続期間が「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個の原子核が平均的にどのくらい生き延びるか?という問題を考えることができ、平均寿命と呼ばれています。これを先ほどのユーザの解約問題と比較すると、

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

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

続きを読む

アクセスログの残しかた ~ Aerospike×DynamoDB

 こんにちは、k_oomoriです。突然ですが、アクセスログを記録するにあたり、以下の要件を満たすデータベースが必要になりました。

  • ユーザを区別するID(uid)、アクセス時刻、アクセスURL、その他必要に応じて追加される属性を記録する
  • 特定のuidに対して過去のアクセスログをまとめて取得できる
  • 過去400日(約13か月分)のログを蓄積できる

今回は、AerospikeとDynamoDBを比較検討しましたのでその結果をまとめようと思います。

続きを読む