俵言

しがない社会人が書く、勉強とかのこと。最近は機械学習や kaggle 関連がメイン。

Kaggle * Master になりました

はじめに

この度、全てのカテゴリ(Competitions, Notebooks, Datasets, Discussion)で Master に昇格し、遂に Kaggle 4x Master になりました!

f:id:Tawara:20210607200053p:plain
どのカテゴリでも Master なので * 表記でいいかもしれない

Competitions Master になって以来 Community への貢献もして行こうと頑張ってきたので、それが目に見える形になって嬉しいです。

因みに、Ranking*1 で確認した限りでは全カテゴリで Master 以上の tier を持っている Kaggler は世界に6人しかいません*2。希少性と僕の ML の実力が釣り合っているかはさておき、これだけレアだと何か嬉しいですね。


一区切りと言うことでこの記事では各カテゴリについて軽く振り返ろうかと思います。


目次

カテゴリごとの振り返り

昇格時の Tweet と一緒にご覧ください。

Competitions Master (2020-03)


昇格の嬉しさのあまり異常なテンションで書いたポエム*3は今ではすっかり黒歴史ですが、過去のコンペで積み重ねてきたことが活きて Master になれたという思いは変わっていません。

Kaggleに参加する前からMLのプロだった人、そのコンペのドメインのプロの人、あるいは異常者(※褒め言葉)でない限り、初心者が金メダルを獲得するまでの道のりはかなり遠いです*4。 一つ一つのコンペをちゃんとやりきって積み重ねて来た人がその集大成として取れるものだと思っていて、そうあって欲しいなと願っています。

因みにこれは完全に個人的な意見ですが、「あとメダル一個で Master だから」みたいな感じで順位やメダルだけを目的にコンペに参加すると碌なことがありません。コンペの内容そのものに興味がないと途中で失速してしまうのを何度か経験してきました。

コンペの問題設定を見て明確にやりたいことが浮かび、試行錯誤している間にやりたいことが増えて、試している間に順位も上がって行って、最終的に結果が残るのが理想だと思っています。まあネタ切れになって後半が辛くなることがしばしばですが...

Datasets Master (2020-12)


取れると思ってなかったのでびっくりしました。ちょっとおねだりしてしまいましたが。

Datasets はシステム的な問題でメダルが取りにくく、他のカテゴリとは別の意味で Master になりにくいです。作っただけだと人の目に触れず、主張しないと認知すらされません(したがって upvote もされない)。
必然的に Notebooks や Discussion で他の Kaggler に紹介することになりますが、有用と思ってもらえても Dataset のページに行かないと upvote 出来ないので step が一つ多くなってしまいます。

僕の場合は、①参加者にとって重い前処理を適用済みのデータセットを用意し② Discussion で共有した上で③それを使った Baseline Notebook を公開する という三段階を経てある程度 upvote をもらいました。

作成した Dataset への動線を用意した上で更に有用性を示さないとメダルが取りにくいため、現時点で Master 以上が 35人しかいないのもなるほどなという感じです。

Notebooks Master (2021-02)


Datasets Master になったときに「もしかして全カテゴリで Master 目指せるのでは?」となり、次に目指していたカテゴリです。

基本的にはコンペで Baseline を公開することで Medal をもらっていましたが、Simple Baseline に関しては速攻で最高レベルのものを出す方がいらっしゃるのもあって少し捻ろうとすることが多かったです。

また、個人的な信条として以下のようなことを心がけていました。

  • 冒頭に何をやっているのか(実験設定やパラメータなど)をまとめる
  • 公開済みの Baseline を参考にしているなら差分を明示する
  • 公開済みの Notebook でやられていないこと(データの処理, モデルの変更, etc.) をやる
  • 現時点での Public Best を更新する(出来ない場合はユニークさを強調する)

簡単にでもいいので何をやっているか(何が差分なのか)を明示することは本当に重要だと思っています。他の Notebook から fork したのに何を変更したか全然わからない Notebook は本当に勘弁してほしい...*5

Discussion Master (2021-06)


メダルの数が合計で200も必要なこともあり、Notebooks に比べるとかなり大変でした。Discussions でメダルをもらう秘訣については先日 GM になった方CompetitionだけではないKaggleの魅力 という記事の中で紹介しています。

本当に重要だと思っていることは秘匿しつつ、その他の効くかもしれないアイデアを公開すると誰かが実験してくれてその結果を教えてくれることもあります。順位が下がることを恐れずどんどん発言をしていくとDiscussionメダルは稼ぎやすいです。

これを踏まえつつ、僕の場合は以下のようなことを Discussion に書くことが多いです。

  • みんなやっていそうだがまとまった結果が表に出ていない実験
  • Baseline よりも少し発展したアイデア(出来るなら Notebook も一緒に出す)
  • 参加したコンペの Solution (簡易でも良い)

一つ目についてですが、僕の場合コンペ初期にはそのコンペ固有の性質に対応するためのアイデアを考えつつ Basic な設定で複数のモデルを学習させて比較することが多く、その結果をそのまま共有したりします。他の参加者が既に知っていることであってもまとまった比較はありがたがられる場合が多いと感じています。

二つ目については Notebooks の項でも触れた話で、少し変わり種のアイデアを示すと議論が活性化するので楽しいんじゃないでしょうか。 引用した秘訣にも書かれていた通り本当に重要なことを公開するのはまずいですが、ちょっと考えたら気付くような話はガンガン公開した方がお得です。

三つ目はよく言われる話ですが、順位に関わらず Solution を投稿するのは非常に大事です。他の Kaggler から認知され、場合によっては feedback をもらえます。またコンペに参加している段階から Solution を投稿するつもりでいると、自分のアプローチをある程度筋道立てた形で整理する意識が働くのも利点だと思っています。

最後に、いずれの内容の Discussion であっても何かしらの結果を伴って投稿するのがおススメです。Score でも簡単な EDA の結果でも、ただアイデアを言うだけよりも説得力が圧倒的に増しますし、その結果議論の活性化や upvote が望めると思います。

終わりに

一通りカテゴリを振り返ってみました。 Kaggle Master == Competitions Master という印象を持たれがちですが、それ以外のカテゴリが無ければ Competitions で得られるものは半減どころの話ではありません。自分で Discussion や Notebooks を出したことが無い人はこれを機にぜひチャレンジしてみてください!*6。その際には文中で紹介した記事*7がきっと役に立ちます。

さて、お気づきになられた方もいらっしゃるかもしれませんが、実は僕は最初に Master になって以来一度も Competitions の Gold Medal を獲得していません*8。1年3か月も経過してしまっているため、そろそろ次の Gold を獲らないと僕の Competitions Master としての賞味期限がヤバイです。

最近日本人の GM がどんどん増えて来ているのもあり、「一応 Kaggle GM です(キリッ)」が自己紹介で罷り通るようになる前には何とか GM になりたいなーと思っています。とはいえ、途中で述べたように楽しくなかったらやる気をなくしてしまうので、GM を意識し過ぎないように自分のやりたいことを試行錯誤する形で頑張って行きます💪

*1:https://www.kaggle.com/rankings?group=datasets

*2:2021-06-07 現在。主に Datasets のせいで異常に少ない。

*3:https://tawara.hatenablog.com/entry/2020/03/24/084706

*4:たまに shakeup でとっちゃう人も居ますが、実力が伴わないとその後 Master になるまでかなり時間がかかります。

*5:そもそもそういう Notebook はモラル的に結構怪しいですが...

*6:ただし剽窃だけはご勘弁を。

*7:https://zenn.dev/koukyo1994/articles/7b8b06de0680f0

*8:二度ほど機会を逃してしまったのが痛い