この世に存在する全ての薬は「本当に有効であるか?」という臨床研究を行った上で販売されます。
ということは「有効である」と判断することは非常に大事です。
判断材料として「偏りのない一定数のサンプルで交絡因子がないような環境で統計学の一定基準を満たして偶然に起こり得ない有効性か?」というような疑問に答えねばなりません。
#臨床試験には、1期から3期の試験があります。ヒトを対象とした試験ですので、倫理的にも科学的にも、厳格なルールのもとに実施しなければなりません。
しかし疑問に思いませんか?
抗がん剤などでは「この薬は効く人と効かない人がいる」と平気で言っている人がいます。それって腫瘍に多様性がある以前に、「その薬が効果がある」という検証が甘すぎる可能性があると思いませんか?
また統計学って恐ろしいですよ。有意の判定が5%で行なっている現代において、100人中5人は予定通りに薬が反応しないわけです。しかし医者は100人中1人もアクシデントによって殺してはいけないのです。それゆえに人工知能という分野に対し、医師は感度と特異度、何のデータで学習したか。ここに注意を払わなければなりません。
今回はその代表格であるハザードモデルについて紹介です。面白い論文が5月31日に公開されました。みんな大好きBengio先生の論文。(深層学習では大家と言われている人です)
[1705.10245] Deep Learning for Patient-Specific Kidney Graft Survival Analysis
概要をざっくり言えば「Cox比例ハザードモデルは人間の生存期間を規定するのに不十分なモデル。深層学習を使ったらもっと正確になった」という話です。
ちなみに統計と機械学習の違いは何か?と疑問に思ったあなた。簡単に述べます。
統計学はデータを「説明」することにより重きを置く
機械学習はデータから「予測」することにより重きを置く
そもそも医学統計に詳しい人でCox比例ハザードモデルないと聞いたことがないと思います。
前提知識がない方への説明もから含めて始めます。まずハザードについて述べます。
ハザードとは「時間tまで生存」の条件がある時、その次の瞬間死亡する確率です。
その確率を表した関数をハザード関数H(t)と呼びます
(生存関数がS(t)です。これは時間tの時に生きている確率です)
臨床研究ではこのハザード関数の推定を行い、介入した群とコントロール群でハザードの比率を見ます。ここで重要なのは、両群でハザードの比率が時間tに依存しないで常に一定という強い仮定があることです。
そして比率だけに注目しているモデルのため、介入群とコントロール群でそれぞれH(t)を推定しなくてもよく、比率だけ求めることで有効かどうかの判定をしています。
(カプランマイヤー法って何なの?と思った方、カプランマイヤーは変数がアウトカムと従属変数だけで、多変量を考慮しないCox回帰よりシンプルなものだと思ってください)
さてここから本論文の内容です。
問題提起と結果
そもそもハザード関数というのは研究者が勝手に決めた期間に想定されうる起きたことをカウントするというかなり強引な手法です。
観察期間以外に起こるイベントは考慮されないですし、想定外のイベントも含めません。またせっかく回帰モデルなのですが、個々人の生存期間を予測するほど正確な予測はこのモデルではできません。
またそもそもcox比例ハザードモデルに限らず医学統計では変数の重要度が時間ごとに変化しません。これらについて生存関数を深層学習で置き換えることでロバストなモデルができ、更にC-index指標では既存のモデルより正確に予測することができたと発表しました。
#C-indexとは何ぞやという方へ
C-indexはモデルから予測される生存時間と、実際の生存時間の大小関係がどの程度一致しているかを表すノンパラメトリックな指標です。(順番の合計というW検定量というものです)
#この論文ではCensored dataという言葉が多数みられます。医学統計では「中途打ち切りデータ」のことを言います。例えばもうすぐイベントが起きそうな患者さんがいるのにも関わらず、観察期間が終了したため、その患者のイベントは観察期間内では起きてないことになることです。医学統計ではこの問題は非常に重要なため、Bengioチームも「中途打ち切りをしたかどうか」を考慮しています。ここではright-censoredを考慮しています。
右打切り(right-censored)とは イベント発生時点はある観察時点よりも上(右)であることはわかるが、正確にいつであるかはわからない。生存時間は少なくともX日より長いという状態のこと。
使用したデータセット
今回は腎移植した患者がそれぞれ死亡するかどうかのイベントを予測します。いたってモデルは簡単です。生存期間を今回は5期間に分類し、その中でいつ一番死にやすいか?という深層学習のモデルを立てます。データは131,709個ありました。
提案手法
ここで面白いのが損失の立て方です。普通の深層学習ならば、出力値と正解値の誤差を伝搬させていきます。しかし今回のモデルでは二つの損失関数を定義しています。まずcoxの部分尤度のような考え方で損失を出し、次にランキングによる損失を出します。
なぜただの深層学習ではダメなのか?
理由は二つあります。まず医学では「なぜそうなったか」というデータやモデルに対する説明を求めます。最初から最後まで深層学習でぶん投げると何が何だかわかりません。
そして二つ目ですが、入力する特徴量が少ない場合やデータ量が少ない場合、深層学習が適さないケースが往々にしてあります。
私の感想
「Cox比例ハザードモデルより良いモデルができた! Cox不要じゃん!」と思われるかもしれませんが、そうも行きません。この論文では腎移植以外のデータセットでしっかり検証していますが、最低でもサンプル数が900あります。あなたの臨床研究のデータは900件もあるでしょうか?
この研究は大規模な研究を見直す良い研究だと思います。しかし少ないデータでは効果を発揮しないと思います。
面白いデータがありました。
各疾患ごとに平均してどの程度の人数で臨床研究が行われているかです。
心血管系の疾患=>275人 / がん => 20人 / うつ病 => 70人 / 糖尿病 => 100人
ということですね。
あと査読っぽくコメントをするとするならば、誰しもCox比例ハザードモデルに関する問題意識は持っています。よってcox比例ハザードモデルに関する研究は現在も盛んです。例えばStratified Cox Model*1と言われるような比例ハザードでは有意に差が出ない場合、層別に分けて尤度を計算して後で合計したものとを比較するモデルです。これらのモデルとの比較を行うべきだと思います。現在この論文はNIPS2017*2に投稿中ですので採択されるかはまだわかっていません。
他にもBenigoはDietNetworkと呼ばれるバイオインフォマティックス特有の問題を深層学習で解決しようと試みた論文があります。
[1611.09340] Diet Networks: Thin Parameters for Fat Genomics
何かご依頼やご質問があればこちらまで!