u++の備忘録

Kaggle Jigsawコンペ32位でした

KaggleのJigsawコンペにチーム参加して、32位で銀メダルでした。public 58位からは上昇しましたが、金メダル圏内にはもうひと押し足らずという結果でした。

f:id:upura:20190719104759p:plain

www.kaggle.com

discussionにチームメイトのKazSappさんが投稿した通り、解法は6モデルの重み付き平均です。

1. bert base uncased
2. rnn
3. rnn (data augmented by translation)
4. rnn (data augmented by old toxic competition)
5. bert base cased
6. bert base multilingual cased
w = [0.39193463, 0.14464678, 0.03892303, 0.06871146, 0.317778, 0.038006]

重みは、Kaggle Tokyo Meetup #5 の「Home Credit Default Risk - 2nd place solutions」で知った Scipy Nelder-Mead を用いて CV 最適化しています。

public kernel含めて多くのチームはidentity_columnsの欠損値を0で穴埋めしていたと思いますが、僕らのチームに特徴的なアプローチとしてRNNで予測した値で欠損値を補完していました。今回のデータセットにおける identity_columns の欠損値は単にアノテータ(評価者)がいなかったという意味で、必ずしも0を意味しないと考えたからです。このアイディアはKazSappさんが思いついたもので、こういった自分の手持ちにはなかった手法に辿りつけるのがチーム戦の良いところだなと改めて感じました。

同じくチームメイトのtakuokoさんも、embeddingに関する知見をdiscussion投稿しています。

金メダルを取れなかった点は悔やまれますが、Bertの強さを身に沁みて実感するなど、学びが多いコンペでした。