DOORS DX

ベストなDXへの入り口が
見つかるメディア

新卒1年目データサイエンティストがKaggleコンペに挑戦した話

執筆者
公開日
2024.07.22
更新日
2024.07.25
<データサイエンティストブログ> 新卒1年目データサイエンティストがKaggleコンペに挑戦した話

ブレインパッドの入社一年目のデータサイエンティストが、KaggleのHMS – Harmful Brain Activity Classificationコンペに参加して、2,767チーム中44位(上位約1.6%)になり、銀メダル獲得と健闘しました。
本記事では今回のコンペの概要とアプローチ手法や技術視点の学びなどをご紹介します。

こんにちは。アナリティクスコンサルティングユニットの広瀬です。

ブレインパッドのデータサイエンティストは仕事以外でも様々な活動や取り組みをしている方が多く、自由に好きな勉強・技術キャッチアップ等に取り組んで社内へ知見を共有するかたもいらっしゃいます。
そんな中、私、広瀬はデータサイエンスのコンペティションであるKaggleに参加し、ありがたいことにメダル圏内に入ることができました。
この記事では、そこで得た学びの一部をご紹介いたします。

本記事の執筆者
  • データサイエンティスト
    広瀬 青
    JOE HIROSE
    会社
    株式会社ブレインパッド
    所属
    アナリティクスコンサルティングユニット
    2023年東京工業大学情報理工学院数理・計算科学系修士課程修了。新卒でデータサイエンティストとしてブレインパッドに入社。 入社後は、広告業界や建築業界の効果検証や予測の分析プロジェクトに従事。

参加したコンペについて

HMS – Harmful Brain Activity Classification というコンペに参加いたしました。
大まかな情報は以下に記します。

コンペ基本情報

  • コンペ目的
    EEGとスペクトログラムのデータから、てんかんをはじめとするその他有害な脳活動(6種類、後述)を分類します。
    うまく分類することができるようになれば、医者や研究者がより迅速で正確な治療を提供できます。
  • コンペ開催期間
    2024年1月10日~2024年4月9日
  • 評価関数
    Kullback Leibler divergence

\(K(q|p)=\int q(x)\log\frac{q(x)}{p(x)}dx\)

2つの確率分布が似ているかを表す距離のような指標です。

性質:
\(K(q\|p)\geq 0\ (^\forall q,p)\)(必ず0以上になる)と\(K(q\|q)=0\ (^\forall q)\) (同一分布間の距離は0)が成り立ちます。しかし数学的には距離の公理を満たしません。
\(q, p\)を入れ替えても一般に同じ値にならず、三角不等式も満たしません。従って擬距離と呼ばれることがあります。

予測の文脈では一般に\(q\)にデータ生成分布を当てはめ、\(p\)に予測分布を当てはめて使います。数値が小さい方が精度を高いことを意味します。

余談ですが私は学士修士で統計学を専攻しており、この指標が理論的にどれくらいの値になるかを計算しておりました。この指標は私にとって馴染み深い指標でした。

【参考】HMS – Harmful Brain Activity Classification

データ情報

入力:

  • 200Hz x 50secのEEGデータ
    • EEG(ElectroEncephaloGraphy)脳波記録の時系列データです。
    • テストデータは固定長さでしたが、訓練データはそれよりも長く複数時点からサンプリングをする必要があります。
    • 脳の19か所からとられたデータと1つの心電波形(EKG)の20列分が与えられています。
  • 0.5Hz x 10min のSpectrogramデータ
    • 脳波メルスペクトログラムのデータです。
    • EEGと同様にテストデータは固定長で、訓練データは複数時点からサンプリングする必要があります。
    • 100等分割された周波数帯の強度 x 脳の4帯域の400列分が与えられています。

出力:

それぞれのデータ期間の中央10秒間で発症していた症状の分類確率

  • [seizure, lpd, gpd, lrda, grda, other] の6症状の分類があります。
  • EEGとSpectrogramでデータの時間の長さが異なりますが、EEGデータの中央 0:20~0:30 とSpectrogramの中央 4:55~5:05 が符合します。この10秒間に兆候が見られた症状を分類します。
  • 与えられたデータとしては複数人の専門家による投票形式になっています。
    例えば、あるEEGとSpectrogramを見た3人の専門家が、seizureに2票、lpdaに1票投票すれば、 [2,0,0,1,0,0] という答えが格納されることになります。
    投票数の合計はデータによって異なります。
  • 提出時は合計が1になるようにする必要があります(そうでない場合submission errorが発生)。
    上の例では [0.6667,0,0,0.3333,0,0] とする必要があります。

必ずしも両方のデータ種類を使う必要はなく、EEGだけのデータを使っている上位解法もありました。


解法と工夫

自身が行った工夫や解法について述べます。

コンペで共有された知見

コンペではDiscussionで情報共有が行われています。私が試した知見をいくつか解説します。

EEGデータをSpectrogramに変換する(Spectrogram from EEG)

  • Spectrogramがもともと与えられていますが、EEGから同様のSpectrogramを計算してデータとして利用する手法です。
  • コンペではSpectrogramを画像として用いる手法が主流で、これによりEEGも実質画像として同様の手法で扱えることができます。
  • コンペのSpectrogramやEEGを時系列で使う手法よりも比較的良い精度が得られた印象でした。

投票数の多いラベルで学習する

  • コンペ概要でも述べたように、正解ラベルは確率ではなく投票数で与えられています。
    投票数が少ないデータは情報量が相対的に少なくノイズになるので、それを切り捨てて学習することで精度が高まる可能性があるという仮説が考えらます。
  • テストデータが投票数の多いラベルだけで構成されていたためにドメインシフト(学習データとテストデータの分布が異なる状況)が発生していた可能性もあります(テストデータは公開されないので本当の理由はわかりません)。

投票数の少ないラベルを張り替える・または混ぜる

  • いわゆる擬似ラベリングやノイジースチューデントなどの手法を参考にした手法です。
  • 投票数の多いラベルだけで学習する方法は、投票数の少ないのデータが使われずもったいないと言えます。
    そこで投票数の少ないラベルを「投票数の多いラベルだけで学習したモデル」の予測を疑似的に正解として扱い、元の正解ラベル混ぜて学習する手法です。この手法は繰り返し適用することができます。

上位陣の解法

Kaggleでは慣例的にコンペ終了後に(特に上位勢を中心に)解法の共有が行われています。
当然といえばそうかもしれませんが、いわゆるトップランカー(上位勢)の方々も上の手法を使っている印象でした。

複数人のチームの多くは各々の持ち寄ったモデルをアンサンブルしており、ソロ参加者の中には一つの大きなモデルを作っている方がいらっしゃいました。
このコンペは実質画像コンペといっても過言ではなかったのですが、EEG波形をスペクトログラムに変換せずプロットしたものをそのまま画像として使ったり、他にもそれをスペクトログラムと並べて1枚の大きな画像として使ったりする方々がおり、「そういうやり方もあるのか」と学びがありました。

個人の解法

ご参考までに、自分が取り組んだ工夫や解法について述べたいと思います。

最終的にpublicLB(コンペ期間中に確認できる順位表)/privateLB(コンペ終了時に確認できる最終的な順位表、テストデータはpublicLBと異なる)ともに、最良だったのは9つの異なるモデルのアンサンブルの解法でした。

  • モデルごとに使用するデータ種別は限定しました。
    理由としては、
    (1)両方使うと計算に時間がかかるのと、
    (2)最初期で行った実験で、両方使って学習したモデルよりも各々でアンサンブルをとった方が精度が良かったからでした。
    ここはもう少し工夫の余地があったかもしれないと反省しています。
  • 推論の枠組み自体は特に難しいものではなかったため、1つの公開ノートブックのモデル(GRUベースの脳波を時系列として推論するモデル)を除いて基本的には自作のベースラインを利用しました。
  • モデルのアンサンブルは、それぞれのモデルの出力の対数の加重平均の指数をとって正規化する方法をとりました。
    モデルの出力をそのまま普通に重み総和1の加重平均をとれば正規化し直す必要はないですが、対数を取った方が数値にして0.01ほど精度がよくなったのでそのようにしました。
  • 具体的な精度publicLB/privateLB = 0.262/0.325で、最終的なprivateLB順位は44/2,767(銀 上位1.6%くらい)になりました。
    上位パーセントで見ると自己ベストを更新することができました。
  • 画像系のモデルとしてはswin-transformer, (max)vit, efficientnetV2などの最近のコンペでは典型的なものを利用しました。
    またEEGデータに対しては音声系のhubertモデルを利用した解法も利用しました。単体の精度としては画像系には劣りましたが、アンサンブルの最適重みとしてはそれなりに貢献してくれていました。
  • 画像系のモデルの工夫点としてはヘッドをいじったりしました。
    時間的な特徴量をより引き出すためにグローバルプーリング層を畳み込み層で置き換えたりしました。
    脳波のずれがlrda \(\leftrightarrow\) grda、lpd \(\leftrightarrow\) gpdの違いに関係してくることが最初の調査でわかったため、この仮説を反映しました。

最後に

ブレインパッドでは、データ分析技術の自己研鑽としてSIGNATEやKaggleなどの外部コンペの参加が推奨されており、クラウドコンピューティングサービスの利用が可能です(クラウド利用費用も支給されます!私も今回のコンペで使わせていただきました)。

その他、社内では、過去に行われていたコンペのコードを読む輪読会や、実際にコンペに参加した人からの知見共有会なども開催されています。ご興味のある方、ぜひ採用へのご応募お待ちしています!

ブレインパッドの打ち合わせ風景

ブレインパッドでは新卒採用・中途採用共に一緒に働く仲間を募集しています。
ご興味のある方は、ぜひ採用サイトをご覧ください!


このページをシェアする

株式会社ブレインパッドについて

2004年の創業以来、「データ活用の促進を通じて持続可能な未来をつくる」をミッションに掲げ、データの可能性をまっすぐに信じてきたブレインパッドは、データ活用を核としたDX実践経験により、あらゆる社会課題や業界、企業の課題解決に貢献してきました。 そのため、「DXの核心はデータ活用」にあり、日々蓄積されるデータをうまく活用し、データドリブン経営に舵を切ることであると私達は考えています。

メールマガジン

Mail Magazine