Apache Hadoopを使用してノイズからシグナルを検出:有害薬物イベントの分析

※本コラムは、2011年11月16日にJosh Willsが投稿したブログ記事の翻訳です。※

2011年10月、サンフランシスコで開催された「Web2.0 Summit」において、Cloudera CEOのMike OlsonはClouderaのデータサイエンスチームは、薬物有害事象を分析するために行った成果をいくつか発表しました。この発表は、古い問題を新しいやり方で解決するためにさまざまなオープンソースツール(R, Gephi, and Cloudera’s Distribution Including Apache Hadoop (CDH))をいかに利用すべきかを説明したもので、ここにその発表内容を共有することにします。

背景:有害薬物イベントとは

有害薬物イベント(adverse drug event:ADE)とは、1つもしくは複数の薬剤を正しく使用して起こる不要もしくは意図しない反応を意味します。ADEが引き起こす症状のレベルは、軽度のアレルギー反応から死亡までと幅広く、ある研究では「有害薬物イベントの9.7%が恒常的な障害をもたらす」と推定しています。
別の研究では、ADE経験を持つ各患者が1〜5日間追加入院すると治療費が9000ドルに上ると述べています。

ADEのいくつかは薬の相互作用、2つ以上の薬の処方箋や、薬屋の店頭で買ったものを一緒に服用することで引き起こされます。年齢が上がり、複数の健康障害を持つようになると、薬の相互作用によって引き起こされるADEのリスクが高まるとされています。米国では、ざっと55歳以上の成人の4%は、一般的な薬物の相互作用によるリスクがあると言われています。

臨床試験とは、比較的少数の患者を対象に研究するものなので、薬剤が認可されて市場に出た後は、有害なイベントが発生していないかチェックするために、規制当局と製薬会社が共にデータベースをメンテナンスしています。アメリカ食品医薬品局(FDA)は医療専門家や消費者が、実際に経験したADEを報告できる 「Adverse Event Reporting System(AERS)」と呼ばれるデータベースを利用しています。FDAは、ウェブサイトからダウンロードできるわかりやすい書式のレポートサンプルを作成し、あらゆるデータサイエンティストの利益に貢献しています。

方法論

ADEの特定とは、主に「シグナル検出問題」です。われわれは、複数の属性(この場合、患者が服用した薬品)を持ち、複数の症状(患者が体験した有害反応)を持つイベントを収集しました。ここから、どの属性がどのように症状に関連しているかを調べたいと思います。こうした関連性を分析するシンプルな方法の1つは、2×2の分割表を利用することです。

For All Drugs/Reactions:

Reaction = Rj Reaction != Rj Total

Drug = Di

A B A + B

Drug != Di

C D C + D
Total A + C B + D

A + B + C + D

 

表のセルにある値に基づいて、さまざまな不比例尺度を計算し、薬物を個々に服用した場合よりも頻繁に起きると予想できる薬物反応のペアを見つけ出します。

このプロジェクトのため、私たちは、DuMouchelおよびPregibonの論文に書かれている分割表メソッドを汎用化した「複数項目の関連性に対する経験的ベイズスクリーニング」を用いて、複数の薬剤が関与する相互作用を分析しました。このモデルは、薬物と結果の組み合わせごとにマルチアイテムガンマ – ポアソン収縮(MGPS)推定量を計算し、特定の組み合わせ結果を少ししか持っていないケースに対しても、統計的にしっかりした不比例尺度を示しました。このMGPSモデルは、詐欺電話の特定やマーケットバスケット分析、そして自動車の欠陥分析など、あらゆる産業にまたがるさまざまなシグナル特定問題のために利用されています。

Apache Hadoopで困難な問題を解決

FDAが毎年受け取る100万レポートがあるので、一見すると、ADEを分析するためのラップトップ以外には何も必要なかったように思われます。しかしレポートの調査を始めると、かつてコンピュータにチェスを教えようとした時に起こったのと似た問題があることがわかりました。それは、想定しなければならない膨大な数の薬物相互作用がもたらす「組み合わせ爆発」です。薬の組み合わせ分析のためにどれだけ制限をかけようと、AERSのデータセットには、「薬-薬-反応」の3軸をかけあわせると、3000億以上の組み合わせポテンシャルがあり、そのうち数千万の3軸組み合わせがあることを実際にこの目で見ました。MGPSモデルを適合するためにわれわれが使った反復型期待値最大化アルゴリズムを用いても、分析の実行時間総計は、さまざまな相互作用の発生頻度をカウントする処理だけに費やされたのです。

ここで、良いニュースがあります。Hadoopクラスタ上でMapReduceを走らせてみると、これが問題解決の理想であることがわかりました。データクリーニング、データ集計、そしてデータ結合を行うMapReduceジョブのパイプラインを作成し、実行時間をリニアにスピードアップできるよう複数マシンを揃え、その上でカウント処理を並列処理できるようになりました。より速くなった個々の分析の実行時間により、より小さなモデルで高速に反復できるようになり、これまでだれも見たことがない薬物相互作用のより大きな問題に取り組めるようになります。

結果の可視化

今回の分析結果は、非常に大きな不比例スコアを持つ「薬-薬-反応」の3軸分析の集大成です。しかし、みなさんご存じのとおり、相関関係と因果関係は違います。この分析結果は、専門分野の方のフィルタリングと評価を受けなければなりませんが、制御実験を利用したより詳細な研究基礎として有用な情報を提供してくれます。

これをひとまず念頭に置いて、今回の分析により、いくつかの薬品の組み合わせが、学術論文を検索しても見当たらない有害なイベントと、驚くほど関係性が高いことがわかりました。具体的には、「けいれん/疼痛治療薬のガバペンチンは、ヒドロコドン(麻酔薬)/パラセタモール(鎮痛剤)と併用した場合、記憶障害との関連性が高くなること」、また「抗精神薬のハロペリドールと精神安定剤のロラゼパムを一緒に服用すると、昏睡状態を起こす可能性が高い」といったことがわかったのです。

この「薬-薬-反応」の3軸分析に制限的なフィルターを適用しても、より詳細な調査をするのに十分なほどのハイスコアを持つ組み合わせはまだ数万ほどあります。さらに、個々の3軸分析結果をよく見ると、マクロレベルなデータ構造を調査するためにGephiのようなグラフ可視化ツールを使うことも可能です。Gephiは、データポイントの未分化の質量構造を作成できる強力なレイアウトアルゴリズムとフィルタリングツールを多数備えています。下記がそのグラフ例です。頂点が薬で、縁の太さは、薬物のペアによって起こる有害反応のスコアの高さを表しています。


さらに、グラフの別の領域をズームし、薬品の相互作用クラスタをハイライトできます。下記にHIVの治療に使われる薬物のクラスタを挙げておきます。

A cluster of HIV-related drugs


これは、がん治療薬物のクラスタです。

A cluster of cancer-related drugs


Apache Hadoop、R、そしてGephiの組み合わせは、新しい有害薬物イベントの分析法を変えるものです。ほんのひと握りの分析結果に焦点を当てる代わりに、データセットにおけるすべてのイベントを同時に処理できます。また、記録のクリーニング、観察結果をクラスタへの観察結果の階層化、薬物反応の組み合わせのスコアリングなど、数百もの異なる戦略に挑んだ結果、すべての処理を並列に走らせ、従来のスーパーコンピュータの数分の一のコストでデータ分析できることがわかりました。私たちは、専門分野の方が使う可視化ツールを使って、彼らが探そうとも思わなかったデータ内にある有害薬物イベントの関連性を探索した分析結果をここに提出します。探索および実験コストが劇的に削減されることで、革新そして発見を促す環境を育てていくことがでできるでしょう。

オープンデータ、オープンアナリシス

このプロジェクトは「FDA’s Center for Drug Evaluation and Research」が、誰でもダウンロードできるようにデータの一部を公開してくれたからこそ実現できました。私たちは、データ分析にしようしたコードのコメントバージョンをさらに改良し、Java、Pig、R、Pythonを合体させて、Apache Licenseの下、Cloudera github repositoryでリリースできるようにしていきたいと考えています。また私たちは、このプロジェクトで、非常に利用価値が高いPig関数の開発に貢献しました。この関数は、数値ストリームにおいておおよその分位を計算するもので、LinkedInのdatafuライブラリに利用されています。そして私たちは、時間をかけてモデルを改善するために、コミュニティと協力し、学生や研究者、そしてデータ科学者のためのリソースを開発していきたいと考えています。


Contact us

製品やサービス、サポート、トレーニングについてのより詳しい情報は、下記までお問い合わせください。

Cloudera全般(日本語)
info-jp@cloudera.com
二ユースレター購読 (日本語)
Clouderaからの日本語での二ユースレター購読希望の方は
info-jp@cloudera.com
件名: ML_SUBSCRIBE
でメールをお送りください