見出し画像

KAGGLE DAYS X Z BY HP WORLD CHAMPIONSHIP FINAL EVENT参加体験記〜第3位入賞した話〜

こんにちは。PKSHA Technologyでアルゴリズムエンジニアをしてます、岩井 智夢です。この度、10/28〜29にバルセロナにて開催されたKaggle Days x Z  by HP World Championship Final Eventに招待され、参加したので体験記を報告します。

岩井智夢 | アルゴリズムソリューション事業本部 アルゴリズムエンジニア
大学院修士課程(慶應義塾大学大学院理工学研究科開放環境科学専攻)にて深層学習モデルを利用した情報匿名化について研究。外資系の投資銀行を経て、PKSHA Technologyにアルゴリズムエンジニアとして入社。金融・保険領域を中心に、様々な業界の課題を解決する機械学習/深層学習ソリューションの開発を担当。Kaggleでは3枚の金メダルを保有しており、Kaggle Competitions Master。

KAGGLE DAYS X Z BY HP WORLD CHAMPIONSHIPとは?

Kaggle Days x Z by HP World Championshipとは、Logic AIとKaggleが主催しているイベントです。Meetupと呼ばれる全12回の予選大会(参加者数5,321名)と、Final Event(参加者数77名)と呼ばれる本戦大会で構成される大規模な大会です。参加者はMeetupに複数回参加可能で、各Meetupで開催されるオンライン機械学習コンペティションにおいて上位3チームがFinal Eventへの出場権を獲得します。

Final Eventへの出場権を獲得すると、バルセロナまでの旅費(航空券と宿泊費)を補助してくれるTravel Grants Programを利用できます。かくいう私も、航空券をTravel Grants Programに、宿泊費を会社に負担してもらいました。また、会社は私がイベントに参加することを今後の事業発展に繋がる良い経験とみなしてくれたため、期間中は業務扱いとなりました。

大会の仕組み 12回のMeetupの上位チームがFinal Eventへの出場権を獲得する

Meetupについて

合計12回のMeetupのうち、7回のMeetupに挑戦しました。Meetupでは、上位3チームにはなかなか入れませんでしたが、チームメイトと2人で挑んだKaggle Days Meetup #9 (Dubai)にてPrivate 全体で8位、既に出場権を獲得したチームを除くと3位となり、Final Eventへの参加権を獲得できました。

Meetupでの成績 順位が「-」の箇所は参加なし

Final Eventについて

ホームページの画像より引用

HPのバルセロナオフィスで開催されたFinal Eventには、各Meetupを勝ち抜いた総勢77名が集結していました。Final Eventは全2日構成のイベントで、メインのコンペは2日目に予定されてました。

イベント1日目

イベント初日はKaggle CEOやKaggle Grandmasterによる登壇、ワークショップ、ハンズオンなど盛沢山な内容が用意されていました。Presentation以外の各セッションには事前申請することで参加が可能で、私はPresentation以外にも「Brainstorming Session1: Harnessing machine learning to fight hunger crisis」に参加しました。

1日目のアジェンダ

Opening Remarks by LogicAI and Kaggle

最初に、全員参加のPresentation Sessionで主催のLogicAIとKaggleより開会の挨拶がされました。Opening Remarksの序盤では、Meetupの総括や、Final Eventの概要などについて説明がされました。

開会の挨拶

特に印象的だったのがKaggle CEOのD. Sculleyによる挨拶で、Kaggleというプラットフォームの存在意義についてのプレゼンでした。
NeurIPSを例に、年々増加する機械学習関連の論文投稿数について触れながらも、近年の機械学習研究にはPositve Result BiasやSingle Benchmark Biasなど、様々なバイアスが存在している点を指摘していました。そして、Kaggleはそういったいくつかのバイアスを取り除き、機械学習の研究と実社会への応用の循環を早める触媒となるようなプラットフォームであると語っていました。

Kaggle CEOのスピーチ

Harnessing machine learning to fight hunger crisis

続いて参加したのが、Brainstoriming Sessionです。このBrainstorming Sessionは、制限時間40分で、飢餓問題を機械学習でどの様に解決できるかについて発表するセッションでした。40分の中でチームビルディングからアイディア出し、発表資料作成まで行う必要があり、難易度の高い課題でした。

Brainstorming Sessionの説明資料

タイトなスケジュールの中、私は日本人参加者2名とチームを組み、「Food Allocation Optimization Solution(食料配置最適化ソリューション)」について発表をしました。機械学習を使って地域ごとの未来の需給を予測し、配置最適化を実現するという内容で、審査員にアルゴリズムの詳細な課題設定が評価され、優勝することができました。日々業務で取り組んでいるアルゴリズムの社会実装経験が活きた瞬間でもあり、良い評価をもらえたことはとても嬉しかったです。

Brainstorming Sessionの優勝賞品のスピーカー

Closing Remarks & competition announcements

初日の最後は、全員参加で翌日開催されるコンペの概要紹介についてのセッションでした。本戦大会の最終順位は、2つのコンペの合計成績で決まることが発表されました。私のチームは2人チームだったので、チームメイトと分担してそれぞれ別々でコンペを担当することとなり、覚悟を決め臨むことにしました。2コンペ並列開催は不意を突かれた様な内容だったので、当時はかなり焦りました。

2日目開催のコンペの概要
総合スコアの計算方法

イベント2日目

イベント2日目は、本大会のメインである機械学習コンペティションでした。Meetupを勝ち抜いた参加者の集大成とも言えるセッションで、会場は朝から緊張感に包まれていました。

2日目のアジェンダ

コンペ概要

初日のClosing remarksにもあった通り、イベント2日目は11時間で2つのコンペに挑むものでした。最初にチームメイトとどのコンペを担当するかについて相談し、私は「Starry, Starry, Night!」というコンペに参加することになりました。

【コンペ1: Starry, Starry, Night!
データ形式: テキスト+テーブル
概要: ある地域/時刻における限界等級(空に観測される光の度合い)の予測

【コンペ2: Time isn’t the main thing, it’s the only thing
データ形式: テキスト
概要: Kaggle Notebook内のコードから、各Notebookの実行時間の予測

チーム戦略・解法

私のチームで最も重視していたのは、「両方向のタスク理解」と「時間の効率的な使い方」です。2人チームだったので、基本的にはチームメイトと分担して各コンペをソロで戦う必要がありました。しかし、担当していないコンペにおいても、アイディア出しにはせめて参加できるようにしたいという強い思いがありました。それを実現するために、それぞれが担当コンペのEDAを実施した後に、パソコンを閉じて相手のコンペのタスク理解とアイディア出しをする時間をしっかりと取りました。序盤に「両方向のタスク理解」を深める時間を設けたことで、その後も互いのコンペのアイディア出しが可能となり、効率的なアイディア出しとアイディア選定ができたと考えています。

私のチームが辿ったタイムライン

ここでは、私の担当したコンペについて軽く触れようと思います。最初の初期戦略は下記の通りでした。

  • テーブルデータにはあまり情報量がなさそうなので、加工と解析に時間を使わない。

  • 自然言語データは情報量が多そうなので、加工と解析に時間を使う。

  • train/test間で日付/地理情報の重複があるので、重複情報をできる限り特徴量化する。

train/test内のデータ日付の分布

特に重要だったのが、テキストデータの導入で、fine-tuneしたDeberta-v3-baseの中間層を特徴量としてLightGBMへ与えた結果、スコアが大きく伸びました。また、少しでもスコアを伸ばすために勇気を出してフランス人の2人チームに声をかけ、チームマージとアンサンブルができたこともスコア上昇に大きく貢献しました。

私が構築したモデルの概略

「Starry, Starry, Night!」の具体的な解法については、Discussionに投稿したので参照いただけると幸いです。もう一つのコンペについてもDiscussionに上位チームが解法を掲載してくれているので、興味のある方は是非ご参照下さい。

結果

結果としては、私の担当したコンペはPrivate 2位、もう一つのコンペはPrivate 10位で総合最終順位は第3位となり、入賞することができました。運も味方してくれてシェイクアップ(Private Leaderboardの順位のほうがPublic Leaderboardの順位よりも高かった)が起きたこともあっての結果ですが、猛者ばかりが揃った大会でこの様に成績を残せたことは大変嬉しかったです。

各コンペのPrivate Leaderboard

入賞賞品は、なんと「RTX A6000」というGPUでした。その後、社内の有志のメンバーと自作PC製作会を開き、現在は我が家で元気に稼働しています。

3位入賞時の様子

最後に

長い記事となりましたが、ここまで読んでくださりありがとうございます。
イベントの後は数日間に渡って、バルセロナやマドリード、トレドで観光を楽しみ、充実した時間を過ごすことができました。

イベントで良い成績を収めることができたことも喜ばしかったですが、何より多数のKagglerとオフラインでお会いでき、繋がることができたことが嬉しかったです。大会を設営してくれた運営やスポンサーの方々や、参加に向けてサポートしてくれた会社、一緒にチームで戦ってくれたチームメイトには、大変感謝しています。

最後に、弊社PKSHA Technologyでは、機械学習を含めたアルゴリズムを一緒に社会に実装してくれる仲間を募集しています。多数のKagglerも在籍しており、頻繁に社内チームを組んでコンペにも挑戦しています。
機械学習コンペ等で身につけた技術を社会に実装することにご興味のある方は、是非カジュアル面談しましょう。下記TwitterまでDMください。

※ 会場の資料は、運営が作成したもので、写真は運営の許諾を得て利用しています。