Abnormally Distributed

統計解析担当のライフサイエンス研究者 -> データサイエンティスト@コンサル

Coursera:AI for Medicine Specializationの受講記録②

AI for Medicine Specializationの2つ目のコースも受講完了したのでレビューしてみる。

Course2. AI for Medical Prognosis

Prognosisは日本語だと「予後」であり、病気の今後の見通しといった意味になる。予後を予測することで、病気のリスクが分かり、予防医療が可能になる。
まずコース全体で取り上げられるキーワードを羅列してみる。

  • 線形モデルランダムフォレスト
  • 生存関数・ハザード関数
  • カプラン・マイヤー法
  • Cox比例ハザードモデル
  • Survival forest

Week1

患者の属性、生活習慣、病歴や検診結果などを説明変数として、線形モデルによりリスクスコアを算出しますという話。 例えば、心房細動の患者が1年以内に脳卒中を発症するリスクを示すCHA2DS2-VASc scoreといった指標が紹介されている。 CHA2DS2–VASc score - Wikipedia

スコア具体的な確率などを表すものではなく、相対的に比較する程度の用途のよう。 一般的に使われているくらいなので、それなりにエビデンスがあるのだろうが、説明変数の線形和でリスクを求めるというのは結構単純だなと感じてしまう。

あとは交互作用 (interaction) や、C-indexという評価指標について解説がある。 C-indexはモデルが出力するリスクと実際の結果が一致している(リスクが高い人の方が、病気を発症している)割合を示す指標。

Week2

Week2では、決定木、ランダムフォレストを用いて予後予測モデルを構築する。
ランダムフォレストの仕組みを理解している人にとっては、モデリングの観点では特に真新しい内容はなさそう。

もう1つ、実際の分析の際にも有用なテーマとして、欠損値の話がある。
欠損がランダムではない場合、欠損があるデータを単純に除外して学習しまうと、バイアスのあるモデルになる可能性があるので注意が必要。

例えば、モデル構築に用いたデータでは、40歳以下の患者で血圧の測定値がほとんど欠損しているとする。ここで、単純に欠損値を含むデータを除外して学習したとする。 一方、新しいテストデータでは、血圧の欠損値がないとする。すると、モデル構築時に用いたデータと新しいテストデータでは年齢の分布が異なることになってしまい、新しいテストデータでは予測性能が悪化してしまう可能性がある。

講義では、欠損値の3つのパターンを説明している。 1. Missing completely at random 患者の属性等に関係なく、完全にランダムに欠損する場合。この場合、単純に欠損のあるレコードを除外してもバイアスは発生しない。

  1. Missing at random" 例えば患者が40歳以下の場合のみ、一定の確率で欠損するような場合。欠損のあるレコードを除外すると、バイアスが発生してしまう。

  2. Missing not at random 観測されていない変数(例えば検査時に機器が故障していたかどうか)に基づき、欠損するかどうかが決まる場合。
    この場合、欠損のあるレコードを除外しても、観測された変数の分布が変わるとは限らない。

データを確認しただけでは、どのカテゴリに属する欠損値か判断することは難しいが、欠損のメカニズムが複数考えられることを認識しておくのが重要だとしている。
また、欠損値補完の話題もあり、平均値補完の他、他の変数との回帰モデルによる補完も紹介されている。欠損値の処理は実務でも注意すべき事項なので、有意義と感じた。

Week3

ここから、いわゆる生存時間解析がテーマになる。個人的には興味があった領域。
Week2までは、固定の期間、例えば1年後に病気を発症するかどうかという二値分類がタスクだったが、生存時間分析では事象の発生までの時間を対象として分析を行う。 Week3ではまず生存関数にいて説明し、生存時間分析に特有の打ち切りデータの取り扱いについて詳しく解説している。 その後、この週の主題となる生存関数の推定量であるカプラン・マイヤー推定量を説明している。

Week4

Week4ではまず、ハザード関数、累積ハザード関数を導入している。 そして患者の属性によるハザードの違いを説明できるCox比例ハザードモデルを解説している。 ただし、個人差を考慮できるといってもハザード関数の形自体は一定のまま、共変量に応じて増減させるだけなので、依然かなり単純なモデルだとは思う。

そこで、非線形の手法として、survival treeというモデルを解説している。Rのパッケージを使ったコードも掲載されているが、プログラミング課題とはなっておらず、参考に紹介している程度。

最後に、生存時間分析モデルの評価方法として、Harrell's C-indexを紹介している。

所感

生存時間分析は少し独特な分野だが、医療だけでなく、マーケティング等の領域でも利用されることがある。
初めて生存時間分析を学ぶ人にも分かりやすいように、丁寧に解説されているように感じたので、医療の分析に限らず生存時間分析に興味がある人にはおすすめ。

ただ、最初の2週間は機械学習を少しやったことがある人なら、いささか簡単すぎる嫌いはある。医療の文脈でのモデリングの紹介としては良いと思うが。。 生存時間分析については、別の記事を書くことにする。