以下のような疑問にお答えします
- 自分でモデル評価したら精度上がったのに、kaggleに提出したら精度が悪いと言われた。
- なぜそんなことが起きるのかわからない。
そのような疑問に歴20年の現役エンジニアが回答します。
今回は、評価スコアが改善したのにpublic scoreが悪くなってしまう原因を事例を挙げて解説しますね。
記事を読み進める上での前提条件
この記事を読み進める上での前提条件は以下の通りです。
・訓練データからモデルを作成する
・評価は、訓練データから作成したモデルに対して実施する。
・評価が終わった後に、作成したモデルにKaggleが用意したテストデータで予測する。
評価スコアの改善がKaggleのpublic scoreに反映されない3つの事例
事例1:訓練データとテストデータで異なるデータ加工をしている
原因
訓練データとテストデータに存在する特徴量Aに対して異なる加工をしていた。
具体例を挙げると、訓練データの特徴量A(カラムA)に対してはlog関数を適用したのに、テストデータのカラムAに対してはlog関数の適用を忘れていた。
その結果、kaggleのスコアの方が悪かったことがありました。
解決策
解決策は、訓練データとテストデータで全く同じ加工をすること。
その結果、評価スコアの改善して、public scoreも上昇しました。
私の例では、public scoreが3.0から1.5(0に近いほど良いとされる)に改善した経験があります。
事例2:月など特徴量が訓練データとテストデータで条件が異なる
原因
この事例では、想像力が必要になるかもしれません。
コンペの内容は、とあるビルの電気使用量(目的変数)を予測するものです。
与えられたデータは、建設物のデータ、日時(年、月、日、時分)ごとの気温・風量・電気使用量が提供されます。
私は、月(month)のデータを特徴量としてモデルに加えました。
評価スコアは改善したのに、public scoreが下がってしまった。
public scoreが下がってしまった原因は、同じ月でも気象条件(8月だったらある1年は晴れが多く暑かった、ある1年間は雨ばかりで寒かった)が違えば、目的変数の値が変わってくると結論づけました。
解決策
条件が保証されない特徴量は、モデルに使わない。
今回の例では、同じ月でも気象条件が変われば、目的変数の値が変動するため、月は特徴量に含めない。
もしくは、「月」を「12月、1月、2月」だったら冬、「3月、4月、5月」だったら春というように季節でグルーピングする方法も考られます。
補足:
モデルを作成するアルゴリズムによっては、特徴量「月」と別の特徴量を組み合わせると精度が上がる可能性も考えられるため、一色単に「月」がいらないとは言えないかもしれません。
事例3 そもそも訓練データが少ない
原因
そもそも訓練データが少ないため学習が十分でない。
評価も少ないデータで行うから、精度が悪くなってします。
解決策
解決策は訓練データを増やす方法が考えられます。
また、正例:負例=1:100のように不均衡データの場合は、resample関数を使って正例を増やす(アンダーサンプリング or オーバーサンプリング)方法が考えられます。
まとめ
今回は、3つの例を上げましたが、スコアが悪い原因を挙げていたらきりがありません。
Kaggleは、プログラミングスクールでは学べない「想定外」のことをたくさん学べるため、実力をつけるには、適している場所といえます。
ポイント
今回は、public scoreが悪くなったときの事例をあげて、ポイントを解説しましたが、必ずしも、事例が一致するわけではありません。
データによって特性が変わってくるので、たくさん経験するしかないです。
最近は、DeNAのようにKaggle枠で人材を募集しているところもあるので、AIエンジニアになりたい人は、Kaggleでいろんなコンペに挑戦してみることをオススメします。
\IT未経験者からのサポートあり!転職サービス3選!!/
サービス名 | |||
---|---|---|---|
未経験 | 未経験OK | 未経験の転職専用 | 経験者向け |
公開の求人数 | ITエンジニア全体で1万件以上 ITエンジニア未経験で600件以上 |
未公開 | 5,000件以上 |
利用対象 | 全職種 | IT特化 | IT特化 |
特徴 | ✓誰もが知る転職サービス ✓経歴を登録しておくとオファーが来る |
✓企業担当者と条件交渉 ✓スキルの身につく企業を紹介 |
✓IT専門のエージェントが対応 ✓転職成功すると年収200万円以上の大幅アップがある |
転職サポート内容 |
|
|
|
公式サイト | リクナビネクスト | テックゲート | レバテックキャリア |