見出し画像

Kaggle Days Championship in Barcelona に参加してきました

バルセロナで開催されたKaggle Days Chapionshipというイベントに参加してきましたので、本記事ではイベント内容やイベントの結果について紹介したいと思います。

Kaggle Days Championshipとは

Kaggle Daysとは、オンライン上で腕を競っているkagglerが一堂に会するオフラインイベントで、これまでに世界各地で開催されてきました。しかし、新型コロナウイルス感染の流行により、しばらくオフラインイベントの開催が見送られてきました。そんな中、2021年10月に、「Kaggle Days Championship」というイベントの開催が発表されました。これは、世界12の地域のタイムゾーンでオンラインコンペを開催し、それぞれの上位入賞者がバルセロナで行われるFinal Eventに集まり、そこで真のチャンピオンを決めるイベントです。私は、短時間のコンペが好きだったのでいくつかの予選に挑戦し、東京大会で優勝することができましたのでFinal Eventに参加してきました。Final Eventに参加するためにバルセロナまでの航空券、宿泊場所を大会側が用意してくれました。

東京大会で優勝

日程

Final Eventは10月28日から29日の2日間開催されました。会場はメインスポンサーのHPのバルセロナオフィスで、1日目はプレゼンテーションやワークショップが行われ、2日目には優勝者を決めるコンペが行われました。

会場のHPオフィス

Day1

イベントは朝早くから行われるのですが、HPのオフィスはバルセロナ郊外にあるため、まだ日が昇る前の時間にバスターミナルに集まり出発しました。日本からバルセロナまで24時間近くかけて移動していることと、宿からバスターミナルまでが結構遠いこともあり、早起きしてヘトヘトな状態で出発しました。

日が昇る前にバスターミナルに集合

初日は、kaggleの偉い方々のお話しや、GrandMasterのプレゼンテーション、kaggleチームへ質問できる場などがありました。kaggleチームへの質問では、「GrandMaster以上のTierを作ってほしい」「Master以上の大会などは検討していないか」「kaggle notebook でもっとGPUを使えるようにしてほしい」といった、流石に強い人たちばかり集まっている場ならではの質問や要望があがっていました。

一日目のメイン会場の様子

1日目の最後には翌日行われるコンペについて少しだけ触れられました。
まず、コンペは2つ行いますと発表がありました。誰も予想していなかったので会場からは驚きの声があがりました。

コンペが2つあることが発表された!

そして、コンペのお題のヒントとなる情報が公開されました。どちらも自然言語コンペで、一方は時系列+欠損があるデータであることがわかりました。

どちらも自然言語コンペ!

自然言語コンペであることがわかったので、帰りのバスはどのチームも作戦会議していました。
私たちのチームも作戦会議や、どんなお題になるのかの予想など行ってい翌日に備えました。

Day2

いよいよコンペ当日です。朝が早く、前日の疲れもとれないまま会場に向かいました。朝食タイムがあってから、コンペの説明が行われました。2コンペ開催することは昨日説明された通りでしたが、上位3位まで入ったチームには「NVIDIA RTX A6000」というハイエンドGPUが副賞として与えられることが発表されました!非常に高額なため、なかなか個人で購入できないものです。私も含めて参加者のモチベーションが一気に上がりました。

そしてお題の発表です。

「Starry Starry Night!」という名前のコンペでは、光害を予測するモデルを作成します。観測場所の緯度経度や標高などの位置情報、観測年月日時分秒、観測時の雲の状態、観測者のコメントなどの情報を使って、指定された地点から何等星の星までが見えるかを予測します。

Starry Starry Night!

もう一つのコンペは「Time isn’t the main thing, it’s the only thing」と名付けられたもので、Kaggle Notebookの実行時間を予測するものでした。与えられている情報としては、Notebookの各セルのコード、使用したデータセットのファイル名や拡張子、カラム数、Notebook作成者のKaggleのTierなどがありました。

Time isn't the main thing, it's the only thing

私はコード実行時間推論コンペを担当したので、どのようなモデルを作ったか紹介しようと思います。作ったモデルはCodeBERTモデルとLightGBMモデルのふたつです。

CodeBERTモデル

まず、CodeBERTを用いたモデルを作成しようとしました。CodeBERTはBERTベースのプログラミング言語に特化した機械学習モデルであり、コードの処理時間を推測するのに、コード全体を見て複数行の関係を見る必要があるため、CodeBERTのようなアルゴリズムを使うのが有効だと考えました。しかし、期待した結果は得られず、CodeBERTモデルは全くうまくいきませんでした。そこで、普通のBERTを使ったり、notebookのセル単位で予測をするようにしたりと、いろいろ試行錯誤しましたが、全くうまくいきませんでした。そのため、CodeBERTの学習を続けながら、LightGBMモデルの作成に取り掛かりました。

LightGBMモデル

ソースコードをTF-IDFでベクトル化したモデルを作成しました。このモデルの精度がCodeBERTで作っていたモデルよりもよかったため、LightGBMモデルの改善に時間を費やした。

最終的なモデルは、LightGBMモデルの9モデルアンサンブルで構成されています。それぞれのモデルには、多少の違いがありますが、共通して使用された特徴量は次のとおりです。

  • ソースコードをCountVectorizerでベクトル化

    • TF-IDFでないのはソースコード中に占める単語の割合よりも、出現回数のほうが重要と考えたため

  • ソースコードをUniversal Sentence Encoderでベクトル化

  • ソースコードをCodeBERTの事前学習済みモデルを使ってベクトル化​​​​​​​

  • notebookで使っているファイルのサイズや拡張子

  • notebook作成者のTier

アンサンブルを作成する際、Stackingと単純平均の2つを検討しました。Stackingのほうが精度が良かったのですが、testデータが1500件と少なかったため、Overfittingしてしまう可能性があると考えたため、単純平均のアンサンブルも提出しました。(コンペ終了後PrivateLBの結果を確認したところ、実際に単純平均モデルのほうが精度が良かったことが分かりました。)

コンペ結果

コンペ終了時点でのPublicLBの順位は15位と7位でした。正直あまり良い順ではありませんが、コード実行時間推論コンペはtestデータが約1500件と少なくshapke upの可能性も十分に考えられまました。
そして結果は。。。

15位と8位でした

「Starry Starry Night!」は15位、「Time isn't the main thing, it's the only thing」は8位という結果でした。24チーム中3位までには全く届きませんでした。 猛者揃いのコンペで8位という順位に留まれたことは素直に良かったと思いますが、本気で優勝したいと思っていたので、悔しい思いもあります。

Closing Party

コンペのあとは、Closing Partyがありここでは、他のチームがコンペにどのように取り組んだか、どういう解法を用いたかなどを話しました。普段オンラインコンペではよく見かける強いKagglerばかりなので、そんな方々と交流ができてよかったです。ちなみに、この場で聞いた話では、他のチームもコード実行時間推論コンペにおいてCodeBERTのアプローチがうまくいかなかったようでした。

Closing Partyの様子

最後に

これまでコンペが楽しくて、もっと強くなりたいという思いでネットゲーム感覚でkaggleを続けて来ました。短時間コンペが好きだったこともあり、今回のKaggle Days Championship の予選に参加したわけですが、結果的にバルセロナまで行いくことができたので、kaggleを続けていて本当によかったと思います。

今回のKaggle Days Championshipでは、残念ながら優勝できませんでしたが、これからもKaggleを続けていくつもりです。そのため、機会があればまたチャレンジしたいと思っています。特にこれまではKaggle Masterを目指してメダルが取りやすそうなコンペばかり参加してきましたが、これからは苦手な分野のコンペにも積極的に参加し、データサイエンスの知識の幅を広げていきたいと考えています。

いいなと思ったら応援しよう!