生存時間分析を使ってみたのでざっくり説明
はじめに
こんにちは、D2Cデータサイエンティストの内野です。
本記事では、自分が生存時間分析に初めて触れた際に欲しかった、噛み砕いた手法の説明と実際に使ってみた使用例をまとめていきたいと思います。
これから何かに生存時間分析を活用してみたい!イベント予測がしたくてどんな手法があるか気になる!というような方の参考になれば幸いです。
生存時間分析とは
生存時間分析の概要
生存時間分析とは、生存時間解析や生存分析とも呼ばれるイベントが発生するまでの時間を解析する手法のことです。
名前だけを聞くと、死亡するまでの時間を解析する手法のように聞こえますが、失病発症までの時間や工業製品の故障発生までの時間、ユーザがサービス離脱するまでの時間などを解析することもできる手法となっております。
基本的な分析内容の説明
生存関数とハザード関数
生存時間分析では、ある時点で解析対象のイベントが発生していない確率を求める「生存関数」と
ある時点で解析対象のイベントが発生する確率を求める「ハザード関数」を使用します。
この関数の双方の関係性から、解析対象がある期間までイベントが発生していないと仮定した場合、その時間にイベントが発生する確率を求めるという方法が生存時間分析のベースとなっています。
打ち切り
生存時間分析には「打ち切り」という概念が存在します。
解析対象データの中には、観測期間からはみ出してイベントが発生していないものやイベント発生とは異なる理由で観測終了となったものなどが出てくると思います。
このようなデータはイベントが発生していない「打ち切りがある」という情報として生存時間分析に使用します。
アルゴリズムの種類
生存時間分析には、統計的手法としてノンパラメトリック・セミパラメトリック・パラメトリックそれぞれの手法から、機械学習手法で拡張したモデルまで様々なものが存在します。
使用できるデータや用途に合わせた柔軟な対応ができそうです。
実際の使用例
冒頭でも触れましたが、以下のような場面で使用されることがあるようです。
- 医療の現場における、患者の生存や疾患発生、治癒完了までの期間を求める
- 工業製品の故障発生までの期間を求める
- アプリ有料サービス等でユーザが契約解除するまでの時間を求める
以下は患者の生存確率を求める際のイメージになります。
実際に使用してみた
広告の摩耗を生存時間分析で予測
広告における「摩耗」※ が発生するタイミングを予測するために生存時間分析を行ってみました。
分析内容のイメージとしては以下のようなものとなっております。
※ ここでの「摩耗」とは、同じ広告がユーザーに見飽きられて広告配信効果が悪化することを指します。
使用した手法は、機械学習手法の「Random Survival Forest」です。
広告配信データ(imp・click・広告画像の特徴量)を説明変数に、対象広告が摩耗するタイミングを予測します。
処理内容
データセット概要
今回は、配信結果の時系列特徴量と広告画像の特徴量を統合したデータセットを作成し、学習してみました。
画像特徴量
上記データセットのうちの画像特徴量の作成については、深層学習手法の「WideResNet」を使用しています。
広告画像を数値化した上で学習済みのモデルに読み込ませる方法と取っており、画像から特徴量を生成して使用しました。
時系列特徴量
また、時系列特徴量の作成には時系列処理ライブラリの「tsfresh」を使用しています。
imp・clickの日ごとの変化から一行の特徴量を生成しました。
分析結果
以下は分析結果の一部を抜粋したものになります。
一般的に生存率が50%を下回った時点で生存していないと判断されるようなのですが、9日目の時点で生存率が50%を下回る形となっており、モデルの予測では、実際の掲載終了日よりも早い段階で摩耗が発生する結果となったことがわかります。
最後に
本記事では、生存時間分析についての噛み砕いた説明をまとめさせていただきました。
何かのお役に立てれば幸いです。
また、生存時間分析はさまざまなところに活用可能な分析手法だと感じつつも時系列解析手法を応用する方法など他にもいろいろなアプローチがあるため、広い視野を持って活用していかなければと思っております。
最後までお読みいただき、ありがとうございました。
参考
株式会社D2C d2c.co.jp のテックブログです。 D2Cは、NTTドコモと電通などの共同出資により設立されたデジタルマーケティング企業です。 ドコモの膨大なデータを活用した最適化を行える広告配信システムの開発をしています。
Discussion