Datathonに参加してきたらキツかったけど楽しかった話
みすてむず いず みすきーしすてむず Advent Calender 2025
この記事は「みすてむず いず みすきーしすてむず Advent Calendar 2025」の 12月13日分の記事として作成しています。
挨拶
いつもお世話になっております。epsilonです。
早いもので今年もまたアドカレの季節になりました。 先日、Datathon Japan 2025というハッカソンイベントに参加してきましたので、そちらの体験談をご報告しようかと思います。
Datathon Japanって何?
詳細はこちら
簡単に説明すると、医療従事者とデータサイエンティストが参加して医療データを解析するハッカソンで、3日間の期間で、データを解析して予測モデルを作ることを目標としています。
今年は12月5日〜7日の日程で、東京科学大学(旧・東京医科歯科大学)で開催されました。
今回は医師40名、医療従事者10名、エンジニア50名の総勢100名の定員で開催され、当日は 病欠などもあったため、80余名の参加者が10チームに分かれて医療ビッグデータの解析、予測モデルの 作成に取り組みました。
今回は、OneICUという、日本の集中治療室に入院している患者のデータを解析対象として、 「ICU入院患者が(急変などのために)再度入室するリスクを予測する」というテーマでイベントが 開催されました。 今回使ったデータセットのOneICUや、解析基盤の技術背景については参考リンクを載せておきますのでご参照ください。
当日の体験談
簡単な「だれ、おまえ」な背景
ここから先は、私の体験談ベースでお話しますが、一応、私のバックグラウンドを説明しておいたほうがよいかなと。 以前、少しお話をしたことがあるのですが、私は元々バイオインフォマティクス方面の研究をしており、 医療データも少し触ったことがある程度の人間です。
少々の医療サイドのドメイン知識はあるものの、救急・集中治療の知識はなく、 データサイエンス領域についても最近はすっかりパワポ職人になってしまってバイオインフォマティクス的なことを何もしなくなってしまっていたのですが、前回の参加者から「初心者歓迎だし、楽しいから行ってみたらいいよ」と聞き、気軽な気持ちで参加してきました。 (まぁ、今となってはちょいと甘かったかな……という気持ちもありますが)
Day -7 〜参加前の不安〜
気軽に申込みはしたものの、参加前日まではめちゃくちゃ不安でした。
私はハッカソンのようなイベントには参加したことがなく、3日間の間に解析から予測モデル作成、発表まで 本当に終えられるのかわかりませんでしたし、自分のスキルも十分なのか不安でした。 一応、参加前に簡単にSQLの復習だけはしましたが、サボっていたので他の用事もあり、 あまり事前学習の時間は割けず。
今となってはもう少しちゃんと勉強しておけば……という反省はある。すごく。
Day -4 〜事前学習〜
開催日が近くなった頃、参加者宛にBigQuery、Google Notebookのリンクが送られてきました。 ファイルはコース0からコース5まであり、それぞれ
- 事前準備
- EDAと研究デザイン
- 特徴量テーブルの作成
- 機械学習モデルの構築
- モデルの評価と再構築
- 発表準備
と分かれており、サンプルコードも充実しているかなりの力作でした。 本番でもこちらのサンプルコードを簡単に手直しすればほぼそのまま使えるレベル。1
事前準備のほうは、Google Notebookにつないでみる程度なので楽勝。 その他のコードは簡単には目を通したものの、「当日みんなでやるので深く読まなくてもいいですよ」 という甘い言葉を信じて精読せず。2
Day1 〜エンジニアが少なくて焦り〜
そんなこんなで当日。午前7時発という非人道的な起床タスクを乗り越えて会場に到着。
Day1の午前中は特別講演+ワークショップなのでお気楽に参加していました。 ワークショップも10コースぐらいあって、第3希望まで出してどこかに割り当てられるスタイル。 私はデータの可視化のワークショップに割当てられました。技術的というよりはアート・ デザインの話が中心で新鮮でした。
ランチョンセミナーを経て、午後からはチームごとに分かれて、いよいよハッカソンパートの始まりです。
私のチームは
- 救急・集中治療・麻酔科医師6名
- コンピューターサイエンス博士課程学生(以下、博士学生さん)
- 変なおじさん(私)
の混成チームでした。
素敵だね。
……はい。このときに割と本気で泣きそうになりました。
正直、エンジニアと医療職が1:1ぐらいの比率になっていて、エンジニア職の人が複数人いると 思っていたのですが、医者の比率が高すぎてデータを触れる人がほぼいない状態。 一応、スタッフ側にもエンジニアが複数いて、いざというときにはヘルプに入ってくれるという 状態ではあったものの、基本的にはチーム内で解決したほうがいいような空気感。
私もSQLは少しわかるものの得意なわけではなく、Pythonもちょいと触れるけども 得意なわけではなく……(どちらかというとRのほうが得意です) 正直、「来る場所間違えた」と思っていました。
また、参加している医師のみなさんは、RはわかるけどもPythonはわからないという人がほとんどで、 1名のみ、Pythonで機械学習までできる方がいらっしゃいましたが、SQLは全くわからんということで、 救急・集中治療の専門医師の皆さんには、医学的に妥当な特徴量を選ぶことに集中してもらい、 データベースからの切り出しは博士学生さん7割、私3割ぐらいの戦力3で頑張る方針に。
私がSQLわからなすぎて、博士学生さんが書いたコードとサンプルコードを微修正しながらポチポチと切り出し作業。泣いた。
その日は懇親会があったり、会場の都合などもあり、18時頃に解散。
Day2 〜無限SQL編〜
Day2は朝から晩までデータ切り出しとモデル構築ができる楽しい1日です。 イベントの開始時間は9時でしたが、それじゃ時間的にきついだろうということで、 メンバーで相談の上、自主的に8時に集合して作業開始しました。
目標としては、この日の午後までに特徴量切り出しを終わらせて、機械学習モデル構築まで 行きたいということで、頑張ってひたすらにSQLを書き続けました。
書くのが難しい部分は博士学生さんにぶん投げ(ごめん)、私は相変わらずサンプルコードの 手直しでなんとかなる部分を延々と書き出しつつ、医師の先生方が出してくる 疑問や特徴量に答えていくという流れ。
特に、今回のモデルでは診断名や治療に使った薬剤が重要であると思っていたので、 そのへんのデータベースを早めに切り出して、実際に見てもらって 「この疾患は関係ないから対象から外して」とか「この薬を使ってないか調べて」とか 「この検査って欠損値多いから使えなさそう」みたいな調整をしていました。
会場の都合で18時で一旦お開きとなり、チームメンバーと近くのレストランで食事をしてからホテルに戻り、 そこから楽しい残業タイムに突入。
この日は本当に延々とSQLを書いていまして、Day1ではこんな感じの素朴なSQLを書いていた私が
SELECT
*
FROM patient_data p
LEFT JOIN drug_data d
ON p.id = d.id(ちゃっぴーの力を借りつつ)こんなコードを必死で叩き始めるようになっていました。
WITH ventilation_check
AS (
SELECT
icu_stay.icu_id,
icu_stay.in_time,
icu_stay.out_time,
venti.start_time AS venti_start,
venti.end_time AS venti_end,
-- 退出時点で人工呼吸を使っているかの判定
IF(
venti.start_time <= icu_stay.out_time AND venti.end_time > icu_stay.out_time,
TRUE,
FALSE
) AS is_ventilated
FROM
icu_stays_selected AS icu_stay
LEFT JOIN
mechanical_ventilations AS venti
USING (icu_id)
)
SELECT
icu_id,
MAX(is_ventilated) AS is_ventilated
FROM ventilation_check
GROUP BY icu_id結局、翌朝6時ぐらいまでかかってようやく前処理終わり(遅い)
冗談じゃなく、一生で一番SQL書いた。
なお、この間に、博士学生さんは当日発表用のスライドとデモ用のスマホアプリ (今回構築したモデルをスマホで動くようにできる)をサクッと作ってたらしいです。神かよ。
Day3 〜モデル構築・発表〜
ここでようやくPythonで機械学習できる状態にまで持っていけたので、 モデル構築の部分を博士学生さんと、Pythonがわかる医師にぶん投げ、 私は半分意識を失ったような顔をして出席。 休んでてもいいとは言われたんですが、機械学習の結果も知りたかったので。 まぁ、徹夜明けの人間なんてほとんど役に立たないわけですが……。
その間も特徴量データの切り出しに見直しが何度か発生し、SQLを叩いてCSVを書き出す作業を繰り返す。
そんなこんなで夕方になり、各班の成果発表。 どの班も完成度がすごく高くて、本格的な分析を行っている班、機械学習ではなくてベイズモデルで 予測してくる班など様々でした。
スマホアプリ開発までしているのは我々の班(というか、この凄腕博士学生さん)だけでしたが、 他の班もWebアプリまでは実装しているところがちらほらあり驚きました。 全体的にすこぶるレベルが高い。
残念ながら私の班は最優秀賞を逃したのですが、3日間で最後までやりきった充実感は何者にも代えがたいものがありました。
感想
参加してみて
ハッカソン的なイベントは初参加でした。
ここまで大規模なデータに集中して向き合ったことは初めてだったので、 それだけでも大変にいい経験になりました。
特に私にとっては、今回のDatathonはSQLブートキャンプみたいな感じで、 実戦形式でSQLを集中して学べる非常に貴重な機会でした。
また、普段の仕事でここまで専門の医師と相談しながら解析を進める機会はなかなかないので、 お互いの疑問をリアルタイムに解決しながら解析を進められるのは新鮮でしたし、 圧倒的なスピード感があって面白かったです。
メンバー構成比
本当はもう少しエンジニアサイドの人を入れるつもりだったらしいんですが、 インフルエンザ流行期にぶち当たった関係で体調不良者が多く、予定よりもエンジニア人材が 少なくなってしまって、運営サイドも焦ってたらしいです。
そのため、急遽技術スタッフを増員して各班のヘルプに入っていただき、 「データベース操作できる人がいないから何もできない」という班はありませんでした。
とはいえ、(少なくとも私の班の場合は)エンジニア比率が低すぎて、 博士学生さんの負担があまりにも大きくなっていたので申し訳なかったです。 機械学習の部分はほぼその学生さん1人でやってくれたので。 ……まぁ、素人が変に口出すより、一人でガーッと処理できたほうが良かったという話もなくはない。
理想をいえば、もう少しSQLが得意な人がメンバーに入っていたら前処理の部分を分担できたり、 医師の先生方にもハンズオン的にデータベースに触れてもらうことができたのかなと思いました。
まとめ
私がこういう大規模データの解析→機械学習に慣れていないこともあり、 戸惑ったところも多かったのですが、これだけ集中してデータベースに向きあえたのは本当に楽しかったです。
また、短期間で、チームで一つのものを作り上げるという体験は、文化祭のノリのようで懐かしく楽しかったですね。
次回同じようなイベントに参加するときには、自分自身のレベルをもっと上げて参加したいと思います。 特に、事前資料がある場合にはあらかじめ自分でちゃんと目を通して、当日は何をやるかをしっかり把握してから参加したほうがよさそう。
また、Datathonではエンジニア職の参加者が少ないようにも感じたので、 大規模データ、医療データ、機械学習などに興味のあるエンジニア様はぜひとも参加してみてはいかがでしょうか。
明日のアドカレはsuquiyaさんです。