u++の備忘録

Kaggleコンペでは忘れずに「Final Submission」を選ぼう

f:id:upura:20190406092846p:plain

Santander Customer Transaction Prediction」コンペが、残り5日になりました。過去最多だった7,198 teams参加の「Home Credit Default Risk」コンペを超え、現時点でも8,650 teams参加と過去最多になっています。

このコンペが「メダルが獲得できるKaggleコンペ初参戦」という方も多いかもしれません。本記事では、最終的な成績を決める際に使われる自分の提出を選ぶ方法を説明します。

「Final Submission」とは?

Kaggleでは、1日当たりコンペごとに定められた回数の提出(submit)を実施することができます。そのたびに「Score」が付けられ順位表に反映されますが、こちらはあくまで「public Leaderboard(LB)」に関する情報です。一般にtestデータはpublic/privateに二分割されており、最終的な成績はprivate部分の結果で判定されます。

f:id:upura:20181225141306p:plain

では自分が日々提出したもののうち、全てでPrivate部分の結果が計算されるかというと、そうではありません。全提出の中からコンペごとに定められた個数の提出のみを選ぶ必要があります。この情報は「Rules」タブ「My Submissions」タブに記載があるので、ご確認ください。

例えば、「Santander Customer Transaction Prediction」コンペでは次のような情報が書かれています(和訳は筆者)。

You may select up to 2 submissions to be used to count towards your final leaderboard score. If 2 submissions are not selected, they will be automatically chosen based on your best submission scores on the public leaderboard. In the event that automatic selection is not suitable, manual selection instructions will be provided in the competition rules or by official forum announcement.

(あなたは、最終的なLBに使われるスコアを計算するための提出(submit)を2つまで選択できます。 2つが選択されていない場合は、public LBでのScore上位が自動的に選択されます。)


Your final score may not be based on the same exact subset of data as the public leaderboard, but rather a different private data subset of your full submission — your public score is only a rough indication of what your final score is.

(最終成績は、public LBではなく、private LBに基づいて決まります。public LBのScoreは、大まかな指標にすぎません)


You should thus choose submissions that will most likely be best overall, and not necessarily on the public subset.

(したがって、public LBのScoreだけではなく、より汎用的にベストな可能性が高い提出を選択すべきです)

どうやる?

f:id:upura:20190406092527p:plain

https://www.kaggle.com/c/santander-customer-transaction-prediction/submissions

方法は簡単です。該当コンペの「My Submissions」タブを開き、「Use for Final Score」のチェックを入れるだけです。

上記のスクリーンショットでは、私がこのコンペに一度も提出していないので「No submissions to show」と表示されています。提出をしている人の画面は次のようになっているはずで、2つまで*1チェックを入れられます。

f:id:upura:20190406110907p:plain

なお当然ですが、チェックを入れられるのはコンペ終了時点までです。午前9時終了のコンペの場合は、午前8時半などに改めて意図した「Final Submission」になっているか確認すると良いかと思います。

何を基準に決める?

これは非常に奥深い話で、議論は尽きません。

一般には「Trust CV」という標語が掲げられています。簡単に説明すると「public LBのスコアではなく、自分のCross Validationの値を信じよう」という意味です。最終成績はpublic LBではなくprivate LBに基づいて決まるので、private部分での性能を測るためにはCross Validationの値の方がより汎用的な指標になるという話です*2

最近はほぼ全てのコンペで、終盤になると「何をFinal Submissionに選ぶか?」というdiscussionが投稿され、活発に議論されている印象があります。コンペの特性に応じた議論が交わされているので、このような投稿も参照して「Final Submission」を選ぶと良いかと思います。

おわりに

本記事では、最終的な成績を決める際に使われる自分の提出を選ぶ方法を説明しました。

数カ月真面目に取り組んだコンペが「Final Submission」のミスで望まない結果になってしまうと、悔やんでも悔やみきれません*3

多くの方には「何を今更」という内容だったかもしれませんが、1人でも本記事が参考になった方がいれば嬉しいです*4

*1:個数はコンペによって異なる場合があります

*2:「Cross Validationとは何か?」という方は下記記事をご参照ください。upura.hatenablog.com

*3:こんな事例も・・・ amalog.hateblo.jp

*4:本記事は「PetFinder.my Adoption Prediction」コンペで「Final Submission」を選択し忘れた方の呟きを受けて執筆しました