DSB2019 4th place solution まとめ
はじめに
DSB2019の4th place solutionまとめました。
結論
- なんかすごく読みにくい英語だと思ったらロシアの人だった。
- まぁ、自分も英語まともに書けないから言えないけど。
- というか間違って訳しているかも...。
- まぁ、自分も英語まともに書けないから言えないけど。
- RNN(codeみたらBidirectional GRUっぽい)を用いているってところが肝なんだろうな。
以下、solutionまとめ
- 一時ソース
- * 以下、拙訳ですので気になるところは1次ソースを見てね。
summary
- best submitはNNのblending
- private: 0.561
- public: 0.571
- second submitは3-levelのstacking
- private: 0.560
- public: 0.566
- *stackingは、意外に使われないことおおいよね。
Some ideas first
- trainと同じ手順でラベルされたtest setは、trainに用いることができる。
- events sequenceのtfidf
- それぞれのevent_idは、title + event_code + correct + incorrectであらわすことができる
- その後、installation_idのhistoryをsequenceとして見て、それをtfidf化したものを学習する。
- *学習前に上記変形を適用したってことかな?
- *最初 actual sequenceのactualを「実際の」だと訳して、tfidf化する前のものかと思ったけど、「現実の」とか「現在の」みたいな使われ方なんだろうな
- いくつかのclipsとtitleはassesmentにおけるaccuracyの予想にとても重要である。おそらく、これらの順番はそれほど重要ではないが、RNNでは、user historyにおけるこれらをうまく扱うことができる。
- *RNNは順番が重要だからじゃないのって思うけど...?
- 少量のデータしかないため、安定性は実際のスコアよりも重要である。もし、行を入れ替えるとスコアが悪くなるなら、それは何か間違ったことをしている
- *うーん、しっくりこない。順番が大事なものと大事じゃないものがある気がするけど...。
Models
Neural network
tf-idf features + RNN (featureとしてtitle sequenceと以下を追加した。)
- 次元数7でのtitleの埋め込みベクトル
- 各titleにおけるcorrectの数
- 各titleにおけるincorrectの数
- 上記、2と3の比
- 各titleにおける経過時間のlog
- 前のtitleにおけるcorrectの数
- 前のtitleにおけるincorrectの数
- *ラグ特徴量みたいにしたってことかな?
- 上記、7と6の比
- モデル内にcounterを含めたかったが、最終的に断念した。しかし、これらのモデルはprivate LBでよい結果をだした。
- ほとんどのsingle networkは0.56程度であった。おもしろかったことは、privateとpublicのscoreが同じであったことである。
- *あれ?最初に書かれているところでは、score微妙に違う気がするけど...?
- *counterっていうのは、何のcounterのことなんだろう?
- *2位の人も一緒だったけど、結構同じになる人もいるんだなぁ。
- ほとんどのsingle networkは0.56程度であった。おもしろかったことは、privateとpublicのscoreが同じであったことである。
Tree based models
Lightgbm, Xgb, Catboost. (will be soonらしい)
Stack
- 0 level) NN , lgbm, catboost.
- 1st level) MLP, Lightgbm.
- 2nd level) Ridge.
- https://www.kaggle.com/c/data-science-bowl-2019/discussion/127312 から抜粋
- 全てのモデルは回帰モデルで学習した。
- 木系はtest dataを直接用いると悪く働く。
- 以下は効果がなかった。
- counters, assesment単体等のtfidf
- world, succsessful attempts等
Validation
- いろいろ考えたけど、結局sinpleなものを使用したよということらしい。
- *普通のKFoldってことかな?
What doesn’t work for us
- Transformers, GPT-2 , BERT, Graph NN.
- *Graph NN やってみたい!
- *とりあえず、BERTが適用できるか何らか試すっていうのは、いろんなタスクで行われるようになっている気がする。ちゃんと理解していると、うまく転用できるんだろうな。