はじめに
2020年8月5日(水)〜2020年8月26日(水)に開催されたSIGNATE Student Cup 2020の予測部門に,8月10日くらいから参加してました.
参加レポートは以前に書いたのですが,そのあと多くの方がsolutionをまとめていたので,この記事でスライド,ソースコード,解法解説記事などのリンクと,個人的なメモをまとめておきたいと思います.
SIGNATE Student Cup 2020 [予測部門] 参加レポート
1st Place Solution
BorderCollie さん
ざっくりまとめ
・前処理:メルカリコンペのkernelを参考にスペース置換等の処理
・モデル:under-sampling + bagging 100 roberta models
・温度スケーリング?:softmaxの温度をoof predを用いて最適化し,カリブレーション
・ラベル最適化:MIP solverで提出ラベルを最適化(argmaxの代わり)
~個人的なメモ~
ちょっと勉強不足で,後半部分が理解しきれてないですが,この部分が重要なのは明らかなので,時間あるときに勉強したいと思います.
モデルは,シンプル?に不均衡データ対策のunder-samplingとモデルに多様性を持たせるためのbaggingで100 RoBERTa models.(パワフルな感じ)
後半部分は,mosamos さんが記事を書いてくれているので,合わせてしっかり読んで理解したいです.
SIGNATE StudentCup 2020 1st place solutionの後半部分(multiclassラベルのpostprocess)を読んでみる
2st Place Solution
yCarbon さん
ざっくりまとめ
・RoBERTa x 6,LightGBM,CatBoostをEnsemble
・モデルの多様性を意識
・Weighted Cross Entropy (test / train weight)
・再翻訳によるData Augmentation
~個人的なメモ~
自分自身は学習済みモデルはBERTを試しただけで満足してたけど,1位,2位ともにRoBERTa使ってること考えると,不十分なんだなと思いました.
test / train でのweightはなるほどなーと思いました.
3st Place Solution
まっち~~さん,9shiki さん
ざっくりまとめ
・トピックモデルで推定した潜在トピックを入力に使う
・trainとtestでトピックの分布が違うことから,trainとtestの分布が異なると予想
・職種分類+トピック確率予測のマルチタスク学習
~個人的なメモ~
個人的に,トピックモデルを活用していて,NLP感が強くてとても勉強になりました.
「トピックモデル=教師なし学習で,分類されてないものを分類するもの」くらいに考えていましたが,こんな感じで使えることが知れて,参加してよかったなと思いました.
入力に使うのは,以前にそういう論文を読んだことがあったので知っていたのですが,トピックモデルでtrainとtestの違いに気づいたり,マルチタスク学習に使ったりとなるほどと思うことだらけでした.
解法スライドや参加記事一覧
あくまで自分が見つけられたものです. 後から見つけることができたら,その都度追加していきます.
abap さん
~一言メモ~
XLNet使ったことないので,今度ちゃんと調べたい.
rinchi さん
~一言メモ~
BERTは全部の層をfine-tuningしているので,自分も全層のfine-tuningを試すべきだったなと思いました.(まともなGPU環境ほしい)
mosamosa さん
SIGNATE Student Cup 2020 [予測部門] 参加記
~一言メモ~
参加記にいろいろ書いてあり,スライドもあるため学びが多かったです.
Masanory さん
~一言メモ~
CV戦略でstratified group k fold使ってて,このあたり自分自身データによって使い分けがまだできてないので,しっかり学んでいきたいなと思っています.
チズチズさん,藤戸さん
~一言メモ~
順位尺度として4!パターン,回帰でやっているあたり面白いなと思いました.
pop-ketle さん
SIGNATE Student Cup 2020【予測部門】参加記(pop-ketle版)
~一言メモ~
Pseudo-Labeling,adversarial validationなどの手法は,これまで自分自身もうまく利用できたことがないので,いい影響を与えたコンペを回って,いい影響を与える条件みたいなものをまとめていきたいなと思いました.
おわりに
時間ない中でまとめたため,名前間違ってたり,解釈が間違っているかもしれないので,もし何か間違っているようであればコメントで教えてもらえると幸いです.
まだまだ,知らないことや実装したことないものが多いので,上記の記事を参考に,ひとつひとつ勉強していけたらと思います.
最後まで読んでいただきありがとうございました.