見出し画像

Kaggleの「Google Brain - Ventilator Pressure Prediction」コンペで、17位となった参加記録

電通デジタルのアドバンストクリエーティブセンターでAIエンジニアをしている村田です。
本記事はDentsu Digital Advent Calendar 2021の21日目の記事です。

この記事では、Kaggleというデータ分析コンペのプラットフォームで開催された、「Google Brain - Ventilator Pressure Prediction」というコンペにおいて、17位で銀メダルとなった、参加記録を書きたいと思います。

Kaggleとは

Kaggleは世界最大のデータ分析のプラットフォームで、年中多くのコンペが開催されています。

コンペは3ヶ月程度の開催期間となっており、参加者は自分の参加したいコンペを選び、データを分析して予測を提出し精度を競います。

自分のチーム以外の人とコンペの情報を交換する時は、Kaggle上の「Notebook」や「Discussion」という公開の場でやりとりするルールとなっています。そこでは分析の仕方などが公開されていて、そこの情報を見るだけでも、とても勉強になる仕組みとなっています。

Kaggleの多くのコンペでは学習データとテストデータが与えられます。学習データは、「ターゲット」と呼ばれる予想したいデータも含まれるデータとなっています。テストデータは、「ターゲット」が含まれないデータとなっています。

参加者は学習データから「ターゲット」を予測するモデルを作成し、テストデータの「ターゲット」の値を予想して提出を行い、その正確さで順位が決まります。

コンペ概要

今回のコンペは、人工呼吸器の人工肺内の吸気フェーズの圧力を予測するという医療ドメインのデータを扱うコンペでした。

具体的には、人工呼吸器には、息を吸うのに当たる「吸気フェーズ」と息を吐き出すのに当たる「呼気フェーズ」があります。

コンペでは、吸気フェーズと呼気フェーズの肺へ送る弁の開き具合に相当する量などが与えられ、それをもとに肺の圧力を予想し、呼気フェーズの圧力の予測値と正解値との差の絶対値の平均値(平均絶対誤差)で評価されます。

与えられるデータ

学習データとして与えられるデータは、1つのデータの組が次のように約3秒間の弁の開き具合と圧力のデータがそれぞれ80点となっており、これが75,450個与えられます。

画像1

テストデータは、次のように、弁の開き具合80点のデータが50,300個与えられ、それぞれの点での肺の圧力を予測し提出するという課題になっています。

画像2

参加の経緯

今回のコンペ開催期間は2021年9月22日から2021年11月3日までの40日間ほどと、通常3ヶ月間開催されるコンペと比べて期間が短かったため参加しやすく、また最近は画像を扱うコンペが増えているなか、珍しい表形式のデータという自分が好きなタイプのコンペであったため参加しました。

参加後すぐに、同じぐらいの順位であったチームとチームマージをして、5人のチームで参加しました。

自チームの解法

LSTM(Long short-term memory)という、時系列を扱うのが得意なネットワークを主に使い、コンペの中盤までは金メダル圏内の順位に入ることができていました。

精度向上のために、「ラグ特徴量」と呼ばれる入力を前後に動かす特徴や、前後の差分をとる特徴など、さまざまな特徴を作りました。最終的には80個程度の特徴をLSTMに入れるのが一番精度が良い結果となりました。

また、当初はネットワークのアウトプットを1とし圧力を直接予測していましたが、学習データのラベル(正解値)が950個に限られていたため、ネットワークのアウトプットを950とし、各ラベルの確率を出力するようにし、その加重平均を予測値とすることで精度が向上しました。

次の図は交差検証での、正解データと、自モデルの予測値を描画したものですが、かなり上手く予想できていることがわかります。

画像3

最終的には、特徴やネットワークのアウトプットを変えた複数の予測値をアンサンブルして、精度を向上させました。

結果と感想

こうした取り組みの結果、自チームの最終順位は、17位となりました。
上位チームとの差としては、次の点などがありました。

・1つ後ろの圧力値との差分など、複数の値をターゲットとして学習して精度を向上させていた。
・公開されていた、人工呼吸器の制御の仕組みを用いて精度を向上させていた。

特にコンペ終盤は、人工呼吸器の制御の仕組みを使って、大きくスコアを向上させるチームが多くいるなか、自チームはアンサンブル等での精度の向上にとどまり、金メダル圏内から落ちてしまいました。
コンペ期間中は、他チームがどのようにスコアを伸ばしているのかがわからない中、スコアの向上のため、色々な仮説検証を繰り返す必要があり、データ分析のコンペは大変だと改めて実感しました。

まとめ

金メダルの獲得を目指しての参加でしたが、今回のコンペでは15位までが金メダルであり、金メダルに届かず残念な結果となりました。

しかし、これまで全く扱ったことがないデータを扱うことができ、また、あまり取り組んだことがなかったLSTMを用いたモデリングをすることができ、とても勉強になりました。

引き続き、金メダルの獲得や、データ分析技術の向上を目指し、Kaggleに取り組んで行きたいと思います。