Wolfram Computation Meets Knowledge

機械学習機能を利用した心不全による死亡のリスク予測

機械学習機能を利用した心不全による死亡のリスク予測

心臓病学のような医療分野でも,Wolfram言語は新たな知見獲得や臨床現場における予測に役立っています.最近,金沢大学先進予防医学研究科の中嶋憲一教授がリードする,Wolfram言語の機械学習機能を用いた心不全による死亡リスク予測の研究に参加し,論文が出版されましたのでその概略を紹介します.そこでは,末期心不全(HFD)と重度の不整脈/突然死(ArE)によって引き起こされる心臓死の確率を区別できる分類器を構築することを目指しました.

現在の高齢化社会における深刻な健康問題である慢性心不全の治療においては,適切な治療法を選択するために,信頼性の高いリスク層別化モデルが切望されています. 薬理学的治療やさまざまな装置の大幅な進歩にもかかわらず,死亡率は依然として高いままです. 高リスク患者の治療管理も非常に困難で,植込み型除細動器や心臓再同期療法などにより費用も高額になりがちです.そこで,Wolfram言語を利用して,慢性心不全患者におけるHFDとArEのリスクを区別するための機械学習技術の適用可能性を調べました.

各出力クラスの意義と重要なパラメータ

われわれが実施した教師あり学習では,入力は年齢,性別,心不全の重症度(ニューヨーク心臓協会NYHAによって定義された機能クラス)などの13の臨床変数,出力は(1)心不全死(HFD),(2)致命的な不整脈イベント(ArE),および(3)2年間の追跡期間中の生存(alive)の3つのクラスで構成されています.

末期の慢性心不全患者が死亡すると,HFDに分類されます. 通常,高齢で心臓疾患をもつそのような患者では,ポンプ能力が低下しており,心室駆出率が低い状態です. ArEによる死亡は突然の心停止で構成され,生命を脅かす不整脈イベントに対する除細動器の適切な作用も含まれます.というのは,除細動器の機能なしには治療不可能な結果が不可避であったと考えられるからです.

結果を示す前に,I-メタヨードベンジルグアニジン(MIBG)シンチグラフィとそれによって得られる指標について簡単に触れておきます.シンチグラフィとは,特定の臓器に蓄積する物質を放射性同位元素でラベルづけし,放出されるガンマ線の分布を検出して画像(シンチグラム)を形成する診断テストのひとつです.I-MIBGから計算される心臓と縦隔の比率(HMR)は,他の臨床パラメーターと組み合わせると,心疾患による死亡リスクの有用な指標になり得ることが知られています.したがって,HFD,ArE,生存の3つのクラスに対する確率をI-MIBG HMRの関数として示すことができるような分類器の構築を目指すことになります.とは言え,HMRだけでは満足いく分類はできないので,他に12個のパラメータを予測変数のセットに組み込みます.

HMRは,比率Ch / Cmとして計算されます.ここで,ChとCmは,それぞれI-MIBG画像の心臓と縦隔の上部に対応する領域の平均ピクセル値です.縦隔とは,おおまかに言ってふたつの肺に囲まれた領域のことです. シンチグラム画像内の器官の輪郭はぼやけているので,対象となる領域をあいまいさなく選択してピクセル値を計算することは一般に難しい作業となります.ここに示すのは,領域の選択とHMRや他のインデックスの自動評価を容易にするためのWolfram言語アプリの例です.このようなアプリは,シンチグラム中での自動領域選択のような機能が実装されれば,医療関係者に広く使われるようになるかもしれません.

このサンプルアプリは,特定のDICOM画像の心臓(円)と縦隔(長方形)に対応する領域を選択できるGUIを提供し,それらの領域のピクセル値を使った計算結果を同時に表示します.

img = CloudGet
&#10005

img = CloudGet[$Failed]*1000; igs = ImageAdjust[img]

dk = ColorNegate
&#10005

dk = ColorNegate[Graphics@Disk[]];
p10 = {155, 120}; p11 = {160, 138};
p20 = {123, 160}; p21 = {133, 
  180};                                                               \
                                                                      \
         Dynamic[
 trm1rct = 
  ImageTrim[igs, {p10 - Norm[p10 - p11], p10 + Norm[p10 - p11]}];
 (* extract circular region around heart:  trm1*)
 trm1 = ImageMultiply[trm1rct, 
   ImageResize[dk, ImageDimensions[trm1rct][[1]]]]; 
 (* extract rectangular region in mediastinum: trm2 *)
 
 trm2 = ImageTrim[igs, {p20, p21}];
 (* select pixel values that are larger than zero *)
 
 mat1 = Select[Flatten@ImageData[trm1], # > 0 &]; 
 mat2 = Select[Flatten@ImageData[trm2], # > 0 &];
 mean1 = Mean[mat1];
 mean2 = Mean[mat2];
 max1 = Max[mat1]; max2 = Max[mat2];
 min1 = Min[mat1]; min2 = Min[mat2];
 std1 = StandardDeviation[mat1]; std2 = StandardDeviation[mat2];
 Column[{Show[
    HighlightImage[
     Image[igs, 
      ImageSize -> 500], {EdgeForm[{Green, Thickness[Medium]}], 
      Graphics[Rectangle[p20, p21]]}], 
    Graphics[{Line[{p10, p11}], {White, Thickness[Small], 
       Circle[p10, Norm[p10 - p11]]}, 
      Locator[Dynamic[p10], Appearance -> Small, 
       Background -> LightPink], 
      Locator[Dynamic[p11], Appearance -> Small, 
       Background -> LightBlue], 
      Locator[Dynamic[p20], Appearance -> Small, 
       Background -> LightPink], 
      Locator[Dynamic[p21], Appearance -> Small, 
       Background -> LightBlue]}, PlotRange -> {0, 152}, 
     ImageSize -> 600]], 
   Grid[{{"", "Mean", "Std dev", "Max", "Min"}, {"Heart", mean1, std1,
       max1, min1}, {"Mediastinum", mean2, std2, max2, 
      min2}, {"H/M Ratio", mean1/mean2, "", "", ""}}, Frame -> All]}]]

機械学習の適用

ROC分析を実行して,リスク評価をモデル化するための適切な方法を選択しました.全データの75%を訓練用データ,残り25%を検証用データとしたAUC(area under the curve)解析の結果,本研究においてはロジスティック回帰が最適であることがわかりました.

メソッドとしてロジスティック回帰を選択したので,残りは単にWolfram言語の
Classify
[]による分類器の生成です.教師データは次の形式のリストの集合です:

{var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, \
var12, var13, outcome}
&#10005

{var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, \
var12, var13, outcome}

たとえば,

{62, m, 2, 87, 40, 1.62, 35, 0, 1, 11.2, 1, 0, 0, 0, ArE},{52, m, 1, 70, 28, 2.29, 30, 0, 0, 15.6, 0, 0, 0, 1, HFD},{69, f, 1, 40, 48, 1.16, 31, 1, 0, 13.7, 4, 1, 0, 0, Alive},...
&#10005

{62, m, 2, 87, 40, 1.62, 35, 0, 1, 11.2, 1, 0, 0, 0, ArE},{52, m, 1, 70, 28, 2.29, 30, 0, 0, 15.6, 0, 0, 0, 1, HFD},{69, f, 1, 40, 48, 1.16, 31, 1, 0, 13.7, 4, 1, 0, 0, Alive},...

のようなデータです.

ここでは日本の慢性心不全患者のコホートから,HFDについての105例とArEの37例のデータを使用しました.ランダムに選択されたデータの75%をトレーニングセット(変数名trainingSet)として設定した後は,以下のようにすることでトレーニングが自動的に実行されます:

cs = Classify
&#10005

cs = Classify[trainingSet, Method -> "LogisticRegression", 
  ValidationSet -> testSet]

ここで,testSetは残りの25%のデータを使ったテストセットです.(注: 実データは開示できないので,ここでは研究に使われた手法だけを紹介します).

ロス関数の値や「学習曲線」などの詳しい情報は,以下のようにして確認することができます.

Information
&#10005

Information[cs]

訓練が終わったら,テストセットを用いて正解率(accuracy)などの分類器についての指標を評価できます:

measTestc = ClassifierMeasurements
&#10005

measTestc = ClassifierMeasurements[cs, testSet]
measTestc[{"Accuracy", "AreaUnderROCCurve"}]

同じClassifierMeasurements関数をトレーニングセットに適用すると:

alt

となり,上の結果と比べても過学習(overfitting)の程度はそれほど強くないことがわかり,実際,テストセットに対する正解率0.827はかなり優秀と言えるものです.人間の目によるシンチグラフィをもとにした測定においては判定のブレが不可避となりますが,より多くの臨床データを積み上げれば,より客観的な定量評価を行える可能性があることも機械学習利用の利点となります.

下の図は,上で得られた分類器を用いI-MIBG HMRの関数として計算された各クラスの確率をプロットしたものの例です.他のパラメータは左側のボタンとして表示されています.

Manipulate
&#10005

Manipulate[
 Plot[{cs[{age, sex, nyha, gfr, ef, hx, wr, hd, isc, hb, bnp, ht, dm},
     "Probability" -> "Alive"], 
   cs[{age, sex, nyha, gfr, ef, hx, wr, hd, isc, hb, bnp, ht, dm}, 
    "Probability" -> "HFD"], 
   cs[{age, sex, nyha, gfr, ef, hx, wr, hd, isc, hb, bnp, ht, dm}, 
    "Probability" -> "ArE"]}, {hx, 1, 3}, PlotRange -> {0, 1}, 
  PlotLegends -> {"Surviving", "HFD", "ArE"}, GridLines -> Automatic, 
  AspectRatio -> 1, 
  LabelStyle -> Directive[Black, 14, ImageResolution -> 480], 
  AxesLabel -> {"MIBG HMR", "Probability"}, 
  PlotStyle -> {Purple, Blue, Red}, 
  ImageSize -> Medium], {{age, 60.}, {50., 60., 70., 80.}}, {{sex, 
   "m"}, {"f", "m"}}, {{nyha, 3}, {1., 2., 3., 4.}}, {{gfr, 
   45.}, {30., 45., 60.}}, {{ef, 35.}, {20., 35., 50.}}, {{wr, 
   20.}, {0., 20., 40.}}, {{hd, 0.}, {0., 1.}}, {{isc, 1.}, {0., 
   1.}}, {{hb, 10.}, {8., 10., 12.}}, {{bnp, 1}, {0., 1., 2., 3., 
   4.}}, {{ht, 0.}, {0., 1.}}, {{dm, 0.}, {0., 1.}}]

ここで見られる注目すべき特徴は,ArEに相当する確率カーブが中程度のHMR値においてピークを有していることです.この傾向はすでに経験的には知られていたものですが,われわれの今回の分析がそれをデータ上で裏付けたことになります.しかも,これまで知られていなかった,この山型の確率分布が現れる条件までもが,この結果により定量的に調べることが可能となることになります.たとえば,NYHAの重症度分類で見ると中程度の患者においてこの分布が見られやすいことがわれわれの結果からわかりますが,これは米国におけるNYHAクラス4レベル中2,および3の症例についての複数の機関による研究とも合致します.

展望

Wolfram言語では,データの扱いだけでなく,機械学習やその結果の可視化までもをスムーズに簡単に行うことができます.こうした利点を活用し,心不全死,重篤な不整脈による突然死のリスク評価モデルを構築しました.そして,致命的な不整脈イベントの,特にI-MIBG HMRに対するリスクの評価を今回初めて行うことができました.

機械学習の結果としてのモデルはアプリとして手軽にエクスポートすることもできるため,診断や治療法選択の決断などに関わる方々にWolfram言語ベースのアプリやツールをさらにお使いいただける環境づくりができればと思います.

本研究についてのより詳しい情報,解析内容をご覧になりたい方は,論文をご参照ください.

すぐに活かせる機械学習の教材Wolfram Uでも多数ご覧いただけます.Wolfram言語をお試しになりたい場合は,MathematicaWolfram|Oneの評価版を無料でご利用になれます.

Comments

Join the discussion

!Please enter your comment (at least 5 characters).

!Please enter your name.

!Please enter a valid email address.