読者です 読者をやめる 読者になる 読者になる

株も歩けば犬に当たる

ブラックSlerで働くSEが株やPythonや思ったことについて書いています。

交差検証法の罠

【結論】交差検証法はモデル性能を完璧に測ることはできない

交差検証法で出るモデル性能と未知データを与えた時のモデル性能差がありすぎて悩んだ話です。

考えると当たり前っちゃ当たり前なのですが...


あるモデルを作ったのですが、交差検証法ではある程度満足の行く結果が出ました。

しかし、未知データを与えると途端にモデル性能が悪くなり、使い物になりませんでした。

な〜ぜ〜?

まずは交差検証法とは

交差検証 - Wikipedia

自分なりに説明しようかと5秒だけ悩みましたがやめました。

なぜ交差検証法では完璧に測ることができないのか

交差検証法の手法からすると、テストデータとトレーニングにわけるので、モデルからするとテストデータは未知データとなります。

そうやって検証を行うので、テストデータにもトレーニングデータにも含まれていない完全な未知データを与えたとしても、交差検証法で出たモデル性能の結果と大きくは乖離しないと私は考えていました。

しかし、ここに盲点。

もし、与えた未知データがテストデータにもトレーニングデータにも含まれない特徴を持っていたらどうなるでしょう。


モデルはトレーニングデータから傾向を学習し、モデルを生成します。

もし、トレーニングデータに含まれない特徴を持った未知データが現れたらもちろん、モデルは対応できるわけがありません。


これが交差検証法で出るモデル性能と未知データを与えた時のモデル性能差が出る理由です。

まとめ

交差検証法が機能するのは、トレーニングデータと未知データ同士が似た特徴を持っている場合のみですね。

ほぼ全ての特徴を網羅したトレーニングデータをモデルに与えるのがやはり重要みたいですね。

終わり!