OMSCS 2024 Fall (秋学期) においては、二つの授業を履修したため、こちらでは Big Data for Health Informatics に関してまとめた。
Overall
病院で取得された患者のデータなど、医療業界でのビッグデータ解析が主題の講義である。 患者の診断履歴などのビッグデータを効率的に扱うため、Haddop や Spark に関して学べることを期待し受講した。結果として、ビッグデータの加工から機械学習を用いた予測と一連の流れを経験することができた。 最終プロジェクトでは、既に発表されている医療業界でのデータ活用の論文を選択し、提案された手法の実装、検証結果の再現を行った。
CSE 6250: Big Data for Health Informatics
この授業で主に扱ったデータは MIMIC III と呼ばれるものであり、患者が ICU 入室中に取得した実データである。 こちらに関しては、申請は必要であるが無料で利用可能なオープンデータとなっている。
Content
成績に関しては、個人で行う課題 4 つ、ペアになって医療業界でのデータ分析に関する論文の再現を行うプロジェクト、期末テストによって評価される。 OMSCS において、グループワークに関しては賛否あるようだが、せっかく海外の大学院であることから挑戦してみようと思い、初めてグループワークがある講義を選択した。
授業は過去の講義の動画と、Lab と呼ばれる実習が主である。毎週 1, 2 の授業の動画と Lab を進めるようなスケジュールとなっていた。Lab に関しては Hadoop, Spark などを docker 上で稼働させて手を動かしていくものになっている。 しかし、Lab 上では scala がメインに利用されているが、実際の課題では pyspark で行うことが求められているので、概念としては参考になるものであったが scala の解釈に時間はそこまで割かなくても良いと思われる。 少し前までは課題も scala ベースで、課題数も 5 つとかなり負荷の高い授業であったが、近年変化があったようである。 なお、負荷が高めの授業であることは把握しており、Lab に関しては授業の開始前からアクセスできたため、先回りしてほとんど完了させておいた。 そのおかげで、授業が開始してからは比較的課題や講義に集中することができた。
HW01
実際の患者のデータを扱うため申請が必要になるということで、それに対する準備も HW01 に含まれていた。 医療データを扱う際の倫理を学ぶため、オンラインの資料を読み、テストはパスする必要があった。現在存在するルールやそれが制定された原因となる事件など、かなりの量があり時間を要した。
その他には、Python を用いて MIMIC III に近しいフォーマットのデータを扱い、データの ETL を行い、前処理から scikit-learn を利用して分類を行う課題であった。
HW02
内容としては HW01 に近く、MIMIC III のデータを加工して、予測を行うものであったが、Colab 上で pyspark を利用してデータを扱った点が異なっていた。 そのため、pyspark での実装を行う必要があり、独特の構文に慣れる必要があった。 加えて、勾配降下法と確率的勾配降下法に関して定義式から変形して実装を行い、Logistic Regression による分類をした。
HW03
HW02 に引き続き Colab において pypark で実装を進め、Health データに基づく patient’s phenotypes が題材であった。phenotypes に関しては、医療系の用語らしくいまいちイメージが湧かないが、表現型とも言われているようで、患者の分類に近しい様子である。 患者の観測データを基に理論的に構築された分類方法と、クラスタリング方法での比較を行う内容であった。
HW04
Neural Network を主題としたした課題であり、MIMIC III の一部データを利用して、RNN などを実装して患者の状態予測を行うものであった。この課題を通して、受講生のみの Kaggel が開催されており、予測精度が上位のモデルを提出した学生には Extra Credit (授業の評定に可算されるボーナスポイント) がもらえた。順位に関しては、常に公開されており自分の順位が確認できるが、締め切りの当時になると一気に提出が増え大きく順位を落とした。直前になって追い込む学生が多いのは、どこでも同じであると感じる一方で、ボーナスがもらえないかもしれないギリギリのラインであったため、締め切り前に私も改めて試行錯誤し始めて、結局締め切り直前は慌ただしかった。
Exam
中間テストはなく、期末テストのみが実施された。10 週ほどの内容が一度のテスト範囲であったので、かなり範囲が広かった。加えて、問題数も 20 問と少ないことから、概念を問うような内容が多かった。 テストの受験が可能になって比較的すぐに私は受験したため、他の授業でも利用されるテスト監視システムが有効化されていなかった。そのため、私がカンニングなどしていないことを証明することはできないことから、最悪テスト結果が無効になるのではないかと懸念された。最終的には、他の受講生も同じような状況であり、その旨を TA に伝えたところ、テスト結果は受け入れられたので一安心であった。
Project
プロジェクトに関しては、受講生同士でペアを組み、候補となる論文の中から再現を行うものを選択する内容であった。 受講者自身でペアを組む必要があるため、時差の近い人に声をかけた。リストにある論文から再現を行うものを選択するが、ここでの選択がプロジェクトの負荷を大きく影響を与えるため、現実的なものを選択した。ペアが非常に優秀であったこともあり、大きな問題なくプロジェクトを終えることができた。最後のひと月は講義も落ち着いており、ほぼプロジェクトに時間を割くことができた。 最終的な成果物としては、レポートと内容を発表したプレゼンテーション動画が要求されたため、計画的に実施することが重要であったと思う。 私達のチームが選択した論文は、MIMIC-III を利用して、ICU の滞在に関する予測を LSTM と CNN を用いたモデルで行うものであった。
Reflection
ビッグデータ解析のため Hadoop や Spark の経験を得たいと思ってこの授業を選択したが、それぞの動作の概要と pyspark での実装を経験することができた点は満足であった。グループワークに関しては初の試みであったが、優秀なペアであったので無事お互いに協力して終われたのは一安心である。
論文の再現に関して今回経験することができたが、上手く終わらせられたのはペアのおかげであったと言える。現時点で一人で論文を読み、内容を再現できる自信はないが、他の授業で行う際にはこの経験を生かして挑戦していきたい。また、deep learning モデルの利用に関しては、そこまで経験がなかったことから学べたのは良い経験であるが、できればもっとデータ分析基盤の動作などに特化した内容を学びたかったと思う。
今期は初めて二つの授業を受講したが、恐れていたほど追い込まれることはなかったと思う。夏休みがあったりなど、比較的業務が落ち着いていたことが原因であったと思う。 奇跡的に二つの授業の課題の締め切りが重なることは少なく、交互に締め切りが週末に来るような状況であった。結果として、毎週課題の締め切りが来るような状況であったが、重なるよりかは良かっただろう。また、事前の準備が非常に重要であったと実感する。BDH の Lab だけでも事前に実施できていたので、何とか無事にどちらも終えることができたと思う。