2016年12月13日火曜日

症状から病名を診断すること

症状から受診すべき診療科を決めることはどのくらい難しいのだろうか。今回の卒業研究報告会に人工知能を使ってそれを実現するという内容の発表があった。しかし,どこで人工知能を使っているのか,また,その人工知能の手法(機械学習のアルゴリズムなど)については何の説明もなかった。ただ,IBMのWatosonを使っているとだけ言っていた。発表だけからは詳しいことはわからないが,①医学書を用いて各々の疾患にはどのような症状が出るかを調べた,②病院のホームページを調べて診療科リストとそれぞれの診療科で扱う疾患を調べた,③そして患者の症状から①によって疾患を求め,②によって診療科を決定するという内容のように理解した。しかし,症状から疾患は一意に決まるのだろうか。仮に一意でない場合,どうやって疾患を絞り込むのだろう。たとえば「発熱」は多くの疾患の症状として現れるだろう。また,診療科によって扱う疾患は決まるのだろうか。同じ疾患であっても外科的なアプローチと内科的なアプローチはあるだろう。

この手法の問題点は,症状→疾患→診療科という三段論法で診療科が決まるというあまりに非現実的で安易なモデル設定にある。現実には,症状から疾患を特定することはできない。できることは候補を確率をつけてリストアップすることくらいだろう。今はやりの人工知能がやっているのもそれに過ぎない。どんなに情報を集めても確定診断などできるはずがない。

では,どうやって症状から確率付きで疾患を割り出せばよいのか。それこそがWatsonなどの人工知能がやっていることである。人工知能は客観的な事実を収集し,得られた情報から結論を確率的に導く。Watsonは深層学習というものを使っているらしい。

学習アルゴリズムには数々の手法が提案されているが,もっとも直感的で実装が簡単な割にそこそこの精度があるナイーブベイズという手法がある。これは収集した情報から事前確率を計算し,手元にある事実から事後確率(つまり,条件付確率)を計算し,それを使って意思決定を行うというものである。

ナイーブベイズの理論的な土台はベイズの定理である。ベイズの定理は次のように定式化される。

$ P(Y|X)=\frac{P(Y)P(X|Y)}{P(X)} $

これは,事象$X$,$Y$が起きる確率をそれぞれ$P(X)$,$P(Y)$とし,事象$Y$のもとで事象$X$が起きる確率(これを尤度という)を$P(X|Y)$とした場合,事象$X$のもとで事象$Y$が起きる確率$P(Y|X)$を求める公式である。たとえば,$X$を症状,$Y$を疾患と考えた場合,この式は罹患率$P(Y)$と疾患$Y$を発症したときに症状$X$が現れる確率$P(X|Y)$から,症状$X$が出たときに疾患$Y$である確率$P(Y|X)$を求める計算式となる。

これは,見方を変えれば,事前確率から事後確率を求める計算式でもある。事前確率は,何も情報を持ち合わせていないときの確率で,ベイズの定理は,入手した事実によって事前確率を更新し,事後確率を得るという枠組みを示している。

つまり,患者の症状を知らない状況ではその患者がどのような疾患にかかっているかを判定するには罹患率$P(Y)$しかない。けれども,その患者の症状がわかれば,尤度$P(X|Y)$を使って症状を織り込み済みの罹患率(これが$P(Y|X)$)が得られるのである。こうして,症状織り込み済みの罹患率(事後確率)の大きい順に疾患をリストすればその患者の疾患候補を確度の高い順に並べることができるのである。

さて,では, $P(Y)$や$P(X|Y)$はどのようにして計算すればよいのだろう。これを医学的に(以後,医学モデルと呼ぶ)求めるのは医学の知識がない者には無理である。そこで,知識を医学文書(あるいは文献)に求めることを考える(以後,これを文書モデルと呼ぶ)。すなわち,入手可能な文献から疾患$Y$と症状$X$の関係性を求めるというやり方である。文献も一種の知識であるから,これはもっともな手法と考えてよい。

そこで,症状と疾患について書かれた文書$D_{i}$を収集する。たとえば「疾患$Y$には$X$の症状が現れる」といった文書である(このような記述は医学事典に豊富にあるだろう)。 次に,事前確率$P(Y)$と尤度$P(X|Y)$を求める。事前確率$P(Y)$は,全文書中の疾患$Y$について書かれた文書の割合とする。本来,事前確率$P(Y)$は罹患率であるが,文書モデルではその疾患についての文書がどのくらい頻繁にみられるかという程度を示している。しかし,ここに問題がある。文書の収集は恣意的である。必ずしも母集団から無作為に選んでいるわけではないだろう。言ってしまえば集めやすいものを集めているだけである。であれば,各々の疾患についての文書は等しく集めるのが無難だろう。そうすれば事前確率$P(Y)$は考えなくてよくなる。

次に尤度$P(X|Y)$であるが,これはその疾患について記述した文書の中で,その症状がどのくらい出やすいかを示すもので,疾患$Y$の文書に出てくる症状$X$の回数を,その疾患の文書に出てくる症状の総数で割ることにより求められる。

実際には症状は$X_{1},X_{2},...$と複数ある。したがって求める尤度は

$\prod_{i}P(X_{i}|Y)$

である。事前確率$P(Y)$は等しくなるようにデータを収集するので,求める事後確率$P(Y|X)$は上記の尤度に比例する。

具体例を考えよう。いま,「腰痛」「排便通」という症状からこれが「子宮内膜症」なのか「子宮筋腫」かを判別する問題を考える。「子宮内膜症」について書かれた文書には全部で症状が100個あり,そのうち,「腰痛」,「排便通」の出現数はそれぞれ30個,20個とする。同様に,「子宮筋腫」の場合は全部で80個の症状が書かれてあり,そのうち「腰痛」,「排便通」の出現数はそれぞれ10個,40個とする。すると, 「子宮内膜症」である事後確率は$0.3\times0.2=0.06$,「子宮筋腫」である事後確率は$\frac{10}{80}\times\frac{40}{80}=0.0625$となって,「子宮筋腫」であると判定できる。

  1. ナイーブベイズを用いたテキスト分類
  2. ナイーブベイズ分類器でTwitterの男女判別!
  3. MathJax

0 件のコメント:

コメントを投稿