こんばんは。「AIの文章と人間の文章を見分けるコンペ」も、いよいよ明日の朝が締め切りです。私はすでに最後のsubmitも使い果たし、あとはどのバージョンを最終提出版とするか決めるだけになっています。スコアは0.973で打ち止め。パブリックLBでの順位はじりじりと下がって今は21位。残念ながら金メダル圏内にはとどまれませんでした。まあ、それでも初参加にしては上出来だったかな。
LBスコアの推移
ここまでのLBスコアの推移を振り返ってみます。1/6に参加を決めて、初回にスコア0.96のNotebookでエントリーを開始。そこから諸々の改良を加えながらLBスコアを伸ばしてきました。グラフの横軸はSubmitの回数です。Submitは1日5回までなので、横軸の数値を5で割ればだいたい参加からの日数が分かります。グラフを見ると、時々数値を乱高下させながらも、じわりじわりとLBスコアを伸ばしてきた様子が分かります。
最初の2~3日は、まだ感覚がつかめてなくて、「正常動作させる」ことにも一苦労していました。投稿後のOut of Memoryエラーによるノースコアに泣かされていたのもこの頃です。また、張り切って追加した特徴量やロジックの改造なども逆効果になって、LBスコアを大幅に下げてしまうこともたびたびありました。
5日目くらいから、ちょっと慎重にパラメータ選択をやるようになって、少しコツをつかんできた感じです。着実にLBスコアを刻み始め、ランキングをぐんぐん上昇させることができました。今振り返ると、この頃は非常に楽しかったですねえ。
そして10日目あたりから、再びメモリの壁にぶち当たりました。これまで行ってきた精度改善方法がスケールしなくなり、新たな方策を模索する必要が出てきました。また、この頃から「LBよりもAUCを優先したチューニング」を志向するようになってきました。そのあたりの方針転換と試行錯誤の跡がLBスコアのダウンという形で見えていますね。
そして最後の3日間くらいは、「運営が仕込んだノイズへの対応策」などで右往左往していたため、LBスコア的には停滞していました。この頃はデータの前処理に、仕込まれたノイズを除去するロジックを実装しながら「俺は一体、何をやらされているんだろう」と、モチベーション的にもかなり停滞していました。
当初は「ベースラインにしたNotebookからまったく精度が上がらない」事態もありうると想定していましたが、結果的に、0.96⇒0.973と、0.013ポイント、なんとか自力でアップできて良かったです。
AUCの推移
Submit前に手元データをtrainとtestに分割し、Save&Run環境で走らせた時のAUCの推移は下記のグラフのようになっています。最初の数日間は、この「ローカルでの検証精度」も計測していなくて、いきなりぶっつけ本番でSubmitしていたため、AUCのスコアが残っているのは20回目くらいのSubmitからです。今思えば、もっと早くから手元でAUCを評価・記録しておけばよかった。
先日、「AUCの値がどうどうめぐりしていた」とお伝えした通り、わき目もふらずLBスコアを改善していた頃(10日目あたりまで)は、AUCの値は0.999付近で行ったり来たりしていました。で、そこから頭を切り替えて、AUCの方をチューニングしていき、最終的には0.9997あたりまで向上させることができました。9が並びすぎて、過学習かデータリークを疑うレベルなのですが、自信をもって状況を改善できる策もなく、そのまま突き進んできました。ええい、ままよ。
LBスコアとAUCの分布
LBスコアとAUCを散布図にしてみると、下記のようになります。大きな外れ値が2、3ありましたので、それらは除外しています。相関係数は0.4くらいで、それほど強い相関は見られません。ただ、AUCを高めていこうとすると、ちょっと負の相関っぽい傾向が見えてきます。そのため、10日目くらいまでは「AUCが高くない!これはLBスコアが期待できる!」とまで思い込んだりしていました。そのため、AUCがどうどうめぐりをしていたわけです。
10日目以降、ソースコードをLBスコア追及用、AUC追及用と、2つに分けて、別々の指標でチューニングしていったので、LBスコア追及用はAUCが0.9990あたりに落ち着くかなと思っていました。しかし、結果的に、LBスコア追及用でも0.9995を超えるAUCが出せたので満足です。最終的に、赤丸で囲ってある3つを最終版として提出することにしました。これら3つのバージョンは、(A)LBスコア最高版、(B)AUC最高版、(C)AUC最高版に運営のノイズ対策を施した版となりました。どれも、それぞれに思い入れの強いバージョンです。プライベートLBでも、ぜひ、健闘して欲しいものです。
また結果が出たら、詳しいロジックや手法などもお話しようと思います。まずは、Kaggle初参加のコンペを完走できたことに感謝です!