概要編2018-02-28|基礎編,機械学習scoutyの高濱です。本記事では、インターンの田村くんと協力してscoutyでの転職可能性予測ロジックに組み込んだ生存時間解析に関する基礎的な事項の説明を行います。転職可能性予測は、こちらの記事の通り、候補者の現在の転職の可能性を推定して提示し、スカウトメールを送るか否かの判断を助けます。生存時間解析は、予測ロジックのコンポーネントのひとつとして、経歴などの情報から候補者が現職を退職する時期(月単位)を予測するために利用されています。生存時間解析とは生存時間解析とは、生物の死亡や機械系の故障など、一つまたは複数の事象(イベント)が起こるまでの予想される時間を分析するための一般化線形モデルの一分野です。具体的には、各分野で以下のような時間に関する分析を与える際に生存時間解析が用いられます。就職してから離職に至るまでの時間。機械が使われ始めてから正常に動作しなくなるまでの時間。ある疾患と診断されてから死亡するまでの時間。会員登録から離脱までの時間。このうち、最初に挙げた「就職してから離職に至るまでの時間」は、scoutyで転職可能性予測を行う際にまさに分析の対象としたいものに該当します。本記事では、生存時間解析の基礎に関する解説を行います。関する関数は生存時間解析のモデルを決定づけるもので、このうち一つでも定まればその他の関数を比較的容易に導出することができます。そのため、生存時間をモデリングする場合は通常、生存(死亡)関数もしくはハザード関数を仮定したのち、パラメータ推定に必要なその他の関数を計算するという手順を踏みます。生存時間の確率密度関数を表します。用いて以下のように定義されます。動かしたもの)は以下のようになります。パラメータ推定などの式変形には現れませんが、モデリングする際のドメイン知識の埋め込みに有効である場合があります。ある機械はその使用年月に応じて疲労が蓄積するため、故障の確率は徐々に高まっていくことが知られていたとします。この機械に対する生存時間分析を行う際には、単調増加なハザード関数を仮定することで故障に関する知見をモデリングに反映することができます。以下のように定義されます。動かしたもの)は以下のようになります。図2は図1に対応しています。大きくなればなるほど死亡しやすさが大きくなると解釈できるので、生存関数は早い段階で0に近づきます。上下反転させた形になります。このうち一つが決定されるとその他の関数を容易に導出することができます。これらの関数に関してよく用いられる関係式を記載します。(censoring)生存時間解析では、しばしば打切りが発生したデータを扱います。がん患者の生存時間を調査するとき、実際にデータ収集を行う場合を考えると、現実的には調査対象の患者の状態を永久に追跡し続けることは不可能であるため、調査期間が限定されてしまう状況を想定するのが自然です。そのため、収集されたデータには、調査期間中に死亡する患者に関するデータと、調査期間が終了するまでに死亡しなかった患者に関するデータが共に存在することになります。)の観察期間中にイベント(死亡、退職、故障など)が発生しなかった場合、打切りデータとして記録されます。打切りデータには、以下のような種類があります。観察期間終了までにイベントが発生しなかった場合。観察期間開始前にイベントが発生していた場合。2つの観察期間で挟まれた非観察期間にイベントが発生した場合。扱われるのは右側打切りデータであるため、本記事でも特に断りがない場合は打切りデータとして右側打切りのみを扱うこととします。一般的なデータフォーマット生存時間解析では以下のようなデータフォーマットを扱うことが多いです。False上表に示したデータを用いて、ある群の死亡に関する傾向を発見するのが最も基本的な生存時間解析です。*1など)を考慮した解析を行うように拡張することもできます。含まれているパラメータを最尤推定によって求めることで学習を行います。仮定する関数形によって推定の手順が変化しますが、本節ではどのモデルの最尤推定でも共通して必要な(対数)尤度関数の定義について述べます。一般的な最尤推定と異なり、生存時間解析では用いるデータに打切りが存在することを容認するため、尤度関数が多少複雑になります。先に述べた右側打切りを考慮した尤度関数の定義は以下のようになります。)\end{align*}$$ここで、式中の各変数が表す内容は以下のようになります。