elsur.jpn.org >

« 読了: Lewis-Beck & Stegmaier (2011) vote expectationはそこそこ当たるよ (UK編) | メイン | 読了: Freitas, Langsam, Clark, & Moeller (2008): 解釈レベルと自己概念関連処理 »

2015年3月18日 (水)

Ishwaran, H., Kogalur, U.B., Blackstone, E.H., Lauer, M.S. (2008) Random survival forest. The Annalys of Applied Statistics. 2(3), 841-860.
 生存時間の予測手法としてランダム・サバイバル・フォレストをご提案します、という論文。RのrandomForestSRCパッケージ (旧randomSurvivalForestパッケージ)の開発チームによるもの。パッケージを本格的に使う前になにか論文を読まないと不安なので、ざっと目を通した。
 ランダム・サバイバル・フォレストというと... もちろんサバイバル・データのランダム・フォレストということなんだけど... 日本語に訳すと、偶然的生存の森、だろうか。ホラー映画みたいだなあ。

 提案アルゴリズムは以下の通り。

  1. オリジナルのデータからB個のブートストラップ標本をとってくる。抽出に際して、平均して37%のデータには手をつけない(out-of-bagデータ, またの名をOOBデータ)。
  2. それぞれの標本に関して生存木を成長させる。それぞれの節ノードにおいてp個の候補変数をランダムに選択、娘ノードの生存の差を最大化する変数を使って二分する。[←ちゃんと読んでないからだろうけど、生存の差をどうやって測るのかよくわからなかった。ログランク検定みたいなものだと思えばいいのだろうか?]
  3. ノードが持つユニークな死者の数が $d_0$ (>0) 個より大であるという制約のもとで、最大の木へと成長させる。
  4. それぞれの木において累積ハザード関数(CHF)を求め、木を通して平均する。これをアンサンブルCHFと呼ぶ。
  5. OOBデータをつかって、アンサンブルCHFの予測誤差を算出する。

 記号の準備。本文よりちょっと簡略に書く。
 ある飽和した木のある末端ノード$h$について、ケース$i$の観察された生存時間を$T_{ih}$, 打ち切り有無を表す変数を$\delta_{ih}$とする(死亡が観察されたときに1, 打ち切りのときに0とする)。そのノードが持っている離散的時点を過去から順に$t_{1h}, t_{2h}, ..., t_{N(h) h}$とする [←なぜノードによって時点の数を買えてるんだろう...?]。時点$t_{lh}$における死亡数を$d_{lh}$, リスク集合のサイズを$Y_{lh}$とする。CHFの推定値はネルソン-アーラン推定量でもって
 $\hat{H}_h (t) = \sum_{t_{lh} \leq t} (d_{lh})/(Y_{lh})$
とする。
 ケース$i$は長さ$d$の共変量ベクトル$x_i$を持つとしよう。さて、ケースのCHFはノードのCHFの推定量だということにする。つまり、ケース$i$のCHFを$H(t|x_i)$と書くとして、彼が落ちたノードが$h$だったら
 $H(t | x_i) = \hat{H}_h (t)$
とするわけである。
 ここまではいいっすね。

 さて、アンサンブルCHFをどうやって求めるか。
 ひとつのアイデアは、ブートストラップ試行のうち、そのケースがOOBに含まれていた試行だけに注目してCHFを平均するやりかた。これをOOBアンサンブルCHFという。$i$がブートストラップ標本$b$でのOOBに含まれていることを$I_{ib}=1$、いないことを$I_{ib}=0$と書く。この標本で作った木から得られる、任意の共変量$x$を持つケースのCHFを$H^*_b(t | x)$と書く。OOBアンサンブルCHFは
 $H^{**}_e(t|x_i) = \sum_{b=1}^B I_{ib} H^*_b(t|x_i)/ \sum^B_{b=1} I_{ib}$
一見恐ろしげだけど、よくみると単純なことしかしていない。そうなのか、単純にハザードを平均しちゃっていいのか...意外...
 もうひとつのアイデアはブートストラップ・アンサンブルCHF。委細構わずに
 $H^*_e(t|x_i) = (1/B) \sum_{b=1}^B I_{ib} H^*_b (t|x_i)$
としちゃう。
 同じロジックで、2種類のmortality(ある期間中の期待死亡率)を定義することもできる由。
 なお、予測誤差の評価はOOBで予測したときのC指標を使うと良い(いわゆるAUCのことだと思う)。

 他の手法と比較する実験もやっているけど、パス。
 変数重要性(VIMP)も出せるけど、解釈には気を付けるように。たとえば2つの変数がどちらも予測に効き、かつ相関があるとしよう。かたっぽ抜いても分類エラーは増えないから、VIMPは低くなる。云々。

 後半では、欠損の扱いについて新しい手法を提案しているけど(adaptive tree imputationというそうだ)、パス。最後に実データの解析例、これも読み飛ばした。

論文:データ解析 - 読了:Ishwaran, Kogalur, Blackstone, Lauer (2008) 偶然的生存の森