2022年の振り返り(kaggle編)

この記事は

今年からkaggleに本格的に取り組み始め、幸運にも1年でKaggle Competitions Masterになることができました。
この記事では、今年参加した3つのコンペについて振り返っていきます。
これからkaggleに参加される方の参考になれば幸いです。

目次

参加したコンペ

Jigsaw Rate Severity of Toxic Comments

www.kaggle.com

NLP×毒性スコア予測のコンペで、データセットを自分で用意する必要がある点が特徴的でした。

途中までソロ参加でしたが、終盤でチームマージのお誘いを頂き、colum2131さん、MSTさん、Naoismさんのチームで参加しました。
チームメイトがみんなつよつよだったので、議論についていくのが精一杯ではありましたが、optunaを使ったアンサンブル手法を提案したり、最終モデルのweightは結構高かったりで、一定の貢献はできたのではと思います。

とはいえpublic LBが崩壊してたりprivateにひどいリークがあったりして、金を取ったからと言って自慢をしづらいコンペになってしまったのは残念なことでした。 *1
コンペ参加中はとても楽しかったのであんまり悪く言いたくはないのですが、早く別のちゃんとしたコンペで金を取りたいという気持ちは、次の金を取るまでは消えないと思います。

U.S. Patent Phrase to Phrase Matching

www.kaggle.com

NLP×数値予測のコンペで、評価指標が相関係数というのが特徴的でした。
銀圏の結構上の方まで行けたので、解法についてドヤりたい気持ちが強いのですが、特別なことはほとんどしておらず、↓の記事を参考に多様性のあるモデルをコツコツ量産してアンサンブルしていました。

qiita.com

画期的な何かを思いつかなかったから金には届かなかったという結果なのですが、逆に考えると、適切な方法でコツコツ取り組んでいれば、特別なスキルがなくても銀圏までは行けることがあるとも言えるので、今後もコツコツ取り組む精神は忘れずに生きていこうと思います。

American Express - Default Prediction

www.kaggle.com

  • 結果: 155位、チーム銀

匿名特徴量のテーブルコンペで、リアル友人のShotaさんとチーム参加しました。

参加時点で残り期間1ヶ月ということもあり、基本戦略として「思想の異なるモデルをそれぞれで作って、最後にアンサンブルしよう」という方針を立てました。

  • Shotaさんはデータサイエンス的にカラムを分析して特徴量を作ったモデル
  • CALPISは機械的に特徴量を量産したモデル

結果として、それぞれのシングルモデルはメダル圏外だったものの、アンサンブルすることで銀圏に届く結果になったので、戦略がうまくハマったのかなと思っています。

反省点としては、私の作ったモデルはCVスコアは高かったものの、LBスコアはPublic, Private共にパッとしないスコアでした。
おそらくTrainデータにoverfitするような特徴量が含まれていたと思われ、例えば2位解法ではpermutation importanceやTime series CVを使って特徴量を選別しているようなので、機械的に特徴量を生成する時は選別をしっかりしないといけないのだなあと気付かされました。*2

休職中にkaggleをやることについて

コンペの振り返りではないのですが、↓の記事の通り、私はメンタル不調で休職中の身でkaggleをやっていました。

c10000.hatenadiary.com

私としては、業務復帰に向けたリハビリのつもりでやっていたという言い分があるのですが、休職している人がkaggleをやってる場合なのか(療養に専念すべきでは)という議論も当然ありうるのかなと思います。
それは確かにその通りで、実際に休職中にkaggleをやってしまった私の意見としては、休職中にkaggleをやることはお薦めしづらいと言えます*3。理由は以下の通りです。

  • 集中力を要するので、神経にかかる負荷が大きい
  • スコアが上がらない時の精神的負担が大きい
  • 他のチームに追い越されないかという不安が常に付き纏う
  • 休職中にkaggleやってる事を知られた場合、「あいつ元気じゃん」と反感を買う可能性がある*4

とにかく競争要素のある娯楽は精神に負担をかけるものなので、kaggleだけでなくスプラトゥーンとかも避けた方がよくて、リハビリとしてやるんだったら読書するとか数独をやるとか、一人で完結するものをやった方が、病気の治りは早かったのかなと反省しています*5

一方で、技術者はスキルアップからは逃げられないものだし、kagglerは競争しないと死んでしまう生き物というのもまた事実なので、全くやらないのはそれはそれでストレスが溜まるかもしれません。
結局のところ、体調面に不安がある時は無理しない範囲で楽しく取り組む(体調不良や精神の乱れを感じたらすぐに中止する)くらいがちょうど良いのではと思います。

終わりに

Kaggle Masterになれば少しは実力に自信がつくのかなと思っていましたが、
全くそんなこともなく、自分の実力不足を改めてひしひしと感じています。
これからもいろんなコンペに参加しつつ、実力をつけていきたいと思います。

最後に、今年チームを組んで頂いた皆様、対戦頂いた皆様、本当にありがとうございました。 来年も対戦よろしくお願いいたします🙇

*1:colum2131さんの解法ツイートがよくまとまっていて、雰囲気が大体わかりますhttps://twitter.com/colum2131/status/1490863925138968578

*2:単にCVの切り方が適切じゃなかった説もある

*3:お前が言うなという話なのですが、体験してみないと分からなかったということで…

*4:この記事も、かなり反感買うんじゃないかとヒヤヒヤしながら書いています

*5:実際、kaggle断ちしている期間の方が、症状の回復スピードは速かった