この度、データサイエンス系のコンペを主催する Kaggle というプラットフォームで、Kaggle Expert という階級になることができました!
Kaggle のプロフィール(Expert ランクに到達)
アカウント作成時から既に 3 年経ってようやくコンペに参加できるようになりましたが、参加してからはあっという間で、直近に参加した 2 つのコンペでメダルを獲得できました。Kaggle Expert になるだけで既に上位 1 % 付近までいくそうです。
しかし、参加したコンペでは ML (機械学習) はあまり使っていません。その代わりに何を使ったかというとヒューリスティクスです。私は日頃より競技プログラミングを嗜んでおり、日本では有名な競技プログラミングサイトである AtCoder にて AtCoder Heuristic Contest というものに参加しています。ここで得られた知見だけで Kaggle Expert になることができました。
冒頭にもありますが、私は Kaggle に参加しようと思ったのは 3 年も前であるにもかかわらず、ようやくきちんと参加できた身になります。なぜここまで時間がかかったのかというと、これは技術的な知識不足というより、コンペの進行ペースや参加者同士の情報共有の仕組みに慣れていなかったことが大きかったと感じています。日頃から Atcoder Heuristic Contest に参加している方であれば、あとはヒューリスティクスが通用する Kaggle のコンペに登録をし、適度に参加できれば勝てます。
私はこの適度に参加することが今までできませんでしたが、下記の 2 つを行うだけでコンペに適度に参加できるようになりました。
1 つ目はコンペ終盤の二週間前から積極的に参加し始めることです。 まず前提として、Kaggle で開催されるコンペは数カ月といった長期間にわたって開催されており、これに最初からコミットすることは一般的な生活をしている人間にとっては不可能に近いと思います。
また、Kaggle には Discussion というコンペのルールの解釈やデータ不整合、一般的な手法について参加者同士が情報を共有できます。しかし、これにより序盤に自分なりの解法を作っても、他の人 (チーム) が強力な解法を共有すると自身の順位が下がり、やる気を無くすという現象が多々起こりました。 (個人的にはコンペ中に他者の考察や解法が見れるのは、競技としてあまり好みではなく、これが Kaggle への参加が遅れてしまった一つの要因だと感じています。)
しかし、Kaggle には 「ルール的には可能だが、コンペ終盤で今までに公開された解法よりも良いスコアが得られる解法を共有することは NG」 という暗黙の了解があるようです。 (下記はサンタコンペ終盤に公開ノートブックで取得できるスコアが更新された時の Discussion)
これらを考えると、コンペ終盤(終了 2 週間前程度)から積極的に参加し始めることで、比較的参加しやすい期間で、新たに解法が共有されて抜かされる心配が殆ど無い競技性の高いデータサイエンス系コンペとして参加することができます。
Kaggle に参加する際、チームを組むことは非常に有効な戦略です。特に初心者の方にとっては、一人で挑戦するよりもチームで協力することで、多くのメリットが得られます。私自身は大学のプログラミングサークルの仲間とチームを組んで参加しました。
ソロで参加していると、どうしてもやる気が続かなくなってしまうことがあります。しかし、チームメイトがコンペに参加している姿を見ると、自分も参加しようという気持ちが自然と湧き、特にコンペが長期化する場合や、スコアが伸び悩む時期には、チームの存在が大きくなります。また、一人で考えるとどうしても視点が限られてしまい、考察が局所解に陥りがちです。しかし、チーム内で議論することで、さまざまなアイデアが生まれ、より良い解法を見つけることができます。
初心者にとってチームを組むことは、モチベーションの維持や考察の幅の広がりが、チームを組む最大のメリットだと思います。
ここでは私が参加した二つのコンペについて紹介します。 どちらも ML をほぼ使わないコンペになるので、比較的参加しやすいコンペだと思います。
()[https://www.kaggle.com/competitions/santa-2024/overview]
これは毎年 11, 12 月付近から 2 カ月ほどの期間で開催されるクリスマスを題材にした最適化問題のコンペです。競技プログラミング経験者向けに言うと Heuristic コンペです。私は AtCoder で開催される AtCoder Heuristic Contest(AHC)というものに今まで参加しており、AHC に参加している有名な方に毎年サンタコンペに参加されている方を見て、自分も挑戦してみようと思いました。
実際に参加してみると、内容は AHC に非常に近いものでした。大きな違いは、コンペ期間が長いことと、コンペ期間内であればいくらでも計算が回せるので Time Limit が無いことくらいに感じました。
結果として 32nd / 1514 で上位 2 % ほどになり、銀メダルを獲得しました。
これは提出プログラムのサイズが 64 KiB 以内、実行時の RAM 使用量が 5 MiB 以内という厳しい制約の中で動作するチェスの AI を作成するコンペです。
私たちのチームは、最初は自作でゲーム木探索を試みました。しかし、長年の歴史が蓄積されたチェス AI にたった 3 カ月のコンペで素人が対抗できるわけもなく、最終的には既存の優れたチェス AI をいかに強さを維持しながら厳しい制約内に収めることができるかというのがコンペの本筋でした。
結果として 108th / 1127 でギリギリ上位 10 % に入ることができ、銅メダルを獲得しました。
このコンペはそれぞれのチームの対戦履歴の visualizer が閲覧可能
昔から参加しようと思いつつ結局やらなくなってしまう、ということを繰り返していましたが、ようやく Kaggle への参加に取り掛かることができました。
私は今年の 4 月から大学院に進学しますが、大学院卒業までに ML を使うコンペにも挑戦し、Kaggle Master になることを目指して、もっと精進していこうと思います!
チェスコンペの結果が確定し、正式に Kaggle Expert になりました!!やった~
— through (@through__TH__) March 18, 2025
I'm now a Kaggle Competition Expert. Check it out: https://t.co/EL0jQUZztB pic.twitter.com/8nYue7FyAc