かえるのプログラミングブログ

プログラミングでつまずいたところとその解決策などを書いていきます。

atmaCup#10 で念願の物理メダル獲得した

こんばんは、kaerururu です。

先日終了した atmaCup#10 にて、念願の nyk510 賞 (物理メダル) を獲得したので、喜びが新しいうちに思ったことなどを書き残していこうと思っています。

ちなみに順位は private 12位 (public 16位) と一時 top3 が見えていた (入ってはいない...) こともあり少々悔しい結果になりましたが、まあよしとしてます。

solution は こちら


もくじ

  1. nyk510 賞とは

  2. 心がけていたこと

  3. おわりに


1. nyk510 賞とは

ディスカッション1 にて最もいいねをもらった投稿の主に与えられる賞のことで、回によって賞品があったり栄誉のみが与えられたり、ある場合は現金や物理メダル2 が進呈されるなど内容が異なるという特徴があります。

2. 心がけていたこと

先にも述べたように、今回は nyk510 賞が物理メダル対象かつ自然言語データが含まれていました。

前職 (最近だと現職でも) では自然言語処理を扱う会社にいた & 初心者歓迎コンペ ということもあり、何かしらテキストデータに不慣れな人に向けてテキストデータを特徴量に変換できるような手助けができればいいなと思い、何かしら書こうと思いました。

実際に投稿したポストはこちらです。

https://www.guruguru.science/competitions/16/discussions/fb792c87-6bad-445d-aa34-b4118fc378c1/

さて、何かしら書くにあたって気をつけたことですが、

  • スピードを重視

  • 被りがないように

  • コピペで動く

の 3つを意識しました。

1つ目のスピードについては、atmaCup では kaggle などにも普段出ている人を中心にみんなの情報共有意識がめちゃくちゃ高いです。つまり早く出さないと同じアイデアを他の人に出される心配があります。また投稿数が増えていくと自分の投稿が埋もれる心配もあるのでどうせ出すならさっさと出そうと思ってました。

そこで私は、以前から作っていた特徴量変換スニペット をチョチョイといじって開始 15分くらいでポストしました。

投稿自体が 2, 3番目くらいだったのでいいアピールになったと思います。

あまりにもスピード投稿しすぎたために、なんと出てくる自然言語のほとんどがオランダ語であることに気づく前に英語 BERT のポストを投げてしまいました。というともすれば有毒なポストになりかねないと思い、オランダ語、多言語の重みの指定の仕方を追記するという形でことなきをえました。:kusa:

2つ目の被りがないようにというのは、主に運営の講座3 の内容を意識したもので、特徴量作成の基本はここの講座で語られることが多いです。テキスト処理で言う所の基本は、BoW, tfidf, w2v, また特徴量化と言う観点だと長さや単語数とってきたり といった所ですが、やはり講座では tfidf * SVD による特徴量作成法と長さを特徴量にする手法が紹介されていました。

また w2v については、atmaCup ではカテゴリカルデータの埋め込みという文脈で使われることがママあり、これについても誰か投稿するだろうということで見送りました。(案の定共有されていた)

3つめのコピペで動く、については、メタな話になりますが、こと atmaCup ではアイデアのみの共有よりも コピペで動くソースコードつきのポストの方がいいねをもらいやすいです。スターターノートブックなどもいつも多くいいねされていますし、スターターノートブックが nyk510賞をもらった回もあったと思います。

また、自身を振り返って見ても LGBM に特徴量を追加していってスコアが上がっていくのが楽しいフェーズがあり、そのころは以下に特徴量を作ってやろうかといろんな過去コンペやらを回遊しては継ぎ足していっていました。

という訳でコピペで動くようなクラスの提供といった形で共有しました。

3. おわりに

atmaCup での一つの目標としていた "物理メダル" を nyk510 賞という形で獲得 (内定) しました。

またツイッターなどで kaeru BERT 使いやすい!という声や、今回の top3 のチームのうち 1, 2 の方々が kaeru feature 使った!って言ってくれるなどとても喜ばしい声が聞こえてきて喜ばしかったです!(小泉進次郎構文)。(これは実質私も1位のチームメイトと言っても過言ではないのでは... (暗黒微笑))

今度はきちんと top3 に入ってメダルもらえるように張り切っていこうと思います。

ありがとうございました。



  1. 参加者同士がコンペに関する情報を交換しあう掲示板のようなもの。チームを組んでいない参加者同士の情報共有はルールにて禁止されている。

  2. kaggle などのコンペティションサイトだとユーザーページにデジタル上でメダルが表記されているが、atmaCup では中の人が発注したメダルが郵送される (らしい)。獲得権は毎回のコンペの Top3 と nyk510 賞 (ない場合もある) にある。ちなみにコンペで top3 はなかなか難しい。(強くなりたい)

  3. 初心者向け講座と題して、中の人が、EDA ~ 初回サブミットまでのプロセスをめちゃくちゃ丁寧に解説してくれます。