Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MoAコンペで気づいたこと

285cc95c4c9fe056b03afca581533266?s=47 fkubota
December 19, 2020

 MoAコンペで気づいたこと

285cc95c4c9fe056b03afca581533266?s=128

fkubota

December 19, 2020
Tweet

Transcript

  1. MoAコンペで気づいたこと fkubota https://www.kaggle.com/fkubota

  2. さっそくですが モデルの性能をtarget_columnごとで評価したことありますか? 僕はあります。 今回のコンペのmetricを見てみましょう。 これを変形してみます。 https://www.kaggle.com/c/lish-moa/overview/evaluation

  3. row方向 column方向 mのみに依存

  4. 各カラム毎にscoreを出力できた!

  5. ターゲットカラム毎に評価はできました。 1つ1つ結果を確認するのもいいですが、 もう少しおもしろいことをしましょう。

  6. 1の数(n)を数えてみる 17 18 24 190 301 仮説: nが小さいほど(学習が困難になって)lossが大きいのでは? n =

  7. n vs logloss でプロット nが小さいほどうまく学習ができていない? ---> nが小さいほどloglossは大きくなる? 右のグラフを見る限りそうでもない。 仮説は否定された。なんでこうなるの? あと、右上に単調増加する意味ありげな形

    これはなにかあるぞ。。。
  8. そもそも、nが1とかだったら、 モデルに予測させるのではなく、 全部0埋めすればいいのでは? こいつら学習させることで きるんですか?

  9. 0で埋めるのが最適かはわからない。 0に近い値で埋めたほうがいいのは確か。 どの程度の一定値で埋めればいい? n=1, 2, 3, 4, 5のときに、様々な一定値で埋めて score_colを計算した。 横軸は、埋めた一定値の値。

    縦軸はscore_col の値。 最適な一定値はnによって変わる。
  10. 実はこの最適な一定値は解析的に計算できる。 簡単に紹介(自分で計算してみてね)。

  11. score_colを最小とするようなCをC_0とする (記号の雑さ、数学的な厳密性の欠如は今は目を瞑ってください m(_ _)m) これを解くと... 美しい感じの解出た! 直感的!!

  12. 求めた解を使って、nごとにプロットしてみる おっ??

  13. いっしょにプロット おおおおおおお!

  14. つまり? 計算したloglossを赤色でプロットした。 見事に一致している部分が多くある。 赤色と重なっている青い部分はこう解釈できる。 「1は予測できないが、たまに1がtargetにある。すべて0 にpredictしてしまうとペナルティが大きくなってしまうの で、ちょうどいい感じの値を出しておこう」 モデルは、1を頑張って予測しようとしているのではな く、ペナルティが最小限になるような値を出力しているに 過ぎないと言える。

    赤い線に近い値を取っているカラムは 全く学習していない!!!
  15. シェイクの予感 - ほとんどの参加者は、この事に気づいていない - スコアに大きな影響があるのはnが大きいターゲット - おそらくほとんどのモデルはnが小さいターゲットはほとんど学習で きていない - モデルは、nが小さなターゲットではn(1が何個含まれているか?)し

    か見ていない。 - testとtrainでnの数に大きな差があれば性能は極端に落ちる。 nが小さいtargetで性能を出せればシェイクアップはできる!!
  16. コンペ後半は、n<200の部分だけの性能アップに注力 - focal loss - mixup - LabelSmoothing - etc….

    mixupが一番効く!!
  17. cool_rabbitさんによる実験 黄色: mixup なし 青色: mixupあり 良くなってる 悪くなってる アンサンブルの時、 このモデルはN<200

    の部分だけを使うなどの工 夫をした
  18. シェイクアップ!!!!

  19. None