こんにちは.
先日,とあるコンペに参加していた時,1位:0.99 2位:0.48 3位:0.47 4位:0.45みたいな
リーダーボードを見つけてしまったんです.
何も知らなかった私は,
「とんでもない人がいる,これはやばすぎやろ!?」
なんて思っていたのですが,調べているうちに「リーク」という言葉が目に入ってきました.
そこで今回は,リークについて2つメモ程度に残しておこうかなと思い本記事を書きました.
(気を付けたいのは2つ目です)
1: 予測する際にかなり使える情報が漏れている場合
これは,英語のleakと同じ意味です.
本来なら説明変数として与えられた「"A"と"B"から"D"を予測する」べきであるのにも
関わらず,
何らかによって「"A"と"B"に加えて"C"の情報も漏れている状況で"D"を予測する」,という状況です.
具体的に言うと,「"品揃え"と"曜日別販促"から"店舗の売り上げ"を予想する」べきであるのにも関わらず,
「"品揃え"と"曜日別販促"に加えて"その日の天候情報"から"店舗の売り上げ"を予想する」みたいな感じです.
前者よりも圧倒的に後者の方が精度が高そうですよね?
予測する際にかなり使える情報が漏れている場合とはこのことを言います.
2: バリデーションデータの設定を間違える場合
これは時系列データを扱う時に発生するものです.
そもそも時系列データは扱う時に注意が必要です.
例えばの話になりますが,与えられたデータが4月から11月で,12月分を予測する場合
4月から10月のデータで11月を予測するモデルを作ります.
これをランダムに設定(学習データにも11月分が入ったまま)しておくと,
11月分を予測する際に学習データに含まれている11月分のデータも参考にしてしまうため,
実際の評価よりも高精度になってしまいます.
バリデーションデータの設定を間違える場合はこのことを言います.
バリデーションデータの設定を間違えるとバリデーションのスコアは高いにも関わらず,テストデータのスコアが低くなってしまうので,気を付けないといけませんね.