テストデータやダブルクロスバリデーションでr2=1や正解率=1になればゴールか?

分子設計・材料設計・プロセス設計・プロセス管理において、分子記述子・実験条件・合成条件・製造条件・評価条件・プロセス条件・プロセス変数などの特徴量 x と分子・材料の物性・活性・特性や製品の品質などの目的変数 y との間で数理モデル y = f(x) を構築し、構築したモデルに x の値を入力して y の値を予測したり、y が目標値となる x の値を設計したりします。

データセットを用いて構築されるモデルの予測性能を検証するため、トレーニングデータとテストデータに分割し、トレーニングデータで構築されたモデルにテストデータの x を入力して y を予測し、実際の y とどれだけ一致しているかを確認します。サンプルが少ないときには、ダブルクロスバリデーションを活用してモデルの予測性能を検証します。

[無料公開] 「化学のためのPythonによるデータ解析・機械学習入門(改訂2版)」の“改訂版の発行にあたって”、詳細な目次、第8章の一部
2023 年 8 月 30 日に、金子弘昌著の「化学のためのPythonによるデータ解析・機械学習入門(改訂2版)」が出版されました。オーム社: Amazon: こちらは、以前に出版した書籍 「化学のための Pythonによるデータ解析・機...

 

テストデータの予測結果やダブルクロスバリデーションの結果が良くなるように、例えば x の検討をしたり、特徴量エンジニアリングを行ったり、x の取捨選択を検討したり、データの前処理を検討したり、モデル構築手法の検討を行ったりします。

いろいろと検討した結果、テストデータやダブルクロスバリデーションの結果として、仮に決定係数 r² が 1 になったり、正解率が 1 になったりした場合、数値上の意味合いとしては 「x から y を 100% 説明できる・予測できる」 ということになりますが、本当にそうでしょうか?

極端な例を考えてみましょう。回帰分析においてサンプルが3つで y が1つ、x が 10000 ある場合に、元の y の値を全て削除して新たに乱数で y を作成することを考えます。y が乱数なので x との間に本質的な関係は全くありませんが、x が 10000 もあると、たまたま y との間に直線的な関係が存在する可能性もあります。y の値が 1, 3, 6 で、1万回サイコロを振ればたまたま 1, 3, 6 の目が連続的に出てしまう、そんなイメージです。

このとき、トレーニングデータとテストデータに分割して1つのサンプルを予測しても、ダブルクロスバリデーションで予測しても、r² は 1 になってしまいます。y が乱数にもかかわらず、「x から y を 100% 説明できる・予測できる」と言えてしまえます。

もちろん、サンプル数が大きくなれば、上のようにたまたまテストデータやダブルクロスバリデーションの r² が 1 になってしまう確率は小さくなりますが、機械学習手法によっては x と y の間の直線的な関係だけでなく、非線形関係も表現できたり、y と複数の x との間の複雑な関係を表現できたりしますので、たまたまテストデータやダブルクロスバリデーションの r² が 1、もしくはそれに近い値になる可能性も低くはありません。

仮に正規のデータセットでテストデータやダブルクロスバリデーションの結果が r² = 1、正解率 = 1 になったとしても、「x から y を 100% 説明できた」 とは言えない状況もあると言えます。このような危険がある場合には、yランダマイゼーションでどの程度危険があるのかを評価します。

y-randomizationで過学習(オーバーフィッティング), Chance Correlation(偶然の相関)の危険度を評価!
回帰モデル・クラス分類モデルの評価のなかで、yランダマイゼーション (y-randomization) についてです。y-scrambling と呼んだりもします。やることは簡単で、目的変数 y の値をサンプル間でシャッフルして、回帰モデル...

 

yランダマイゼーションの結果、テストデータやダブルクロスバリデーションを行ったときに r² が 0.6 になったとしたら、仮に正規のデータセットでのテストデータやダブルクロスバリデーションの結果が r² = 0.9 でも、ランダムでも 0.6 が出るのであれば、0.9 – 0.6 = 0.3 程度しか x から y を意味のある形で予測できてはいません。

1つ注意点としては、yランダマイゼーションにおいて y をシャッフルするのは、x の検討や特徴量エンジニアリング、x の取捨選択の検討、データの前処理の検討、モデル構築手法の検討よりもです。例えば、変数選択した後に y をシャッフルしても、特徴量選択がたまたまうまくいってしまった可能性が排除されてしまいます。どんな検討をするにしても、yランダマイゼーションの際には y をシャッフルするに検討を行い、テストデータやダブルクロスバリデーションで評価するようにしましょう。

特にサンプル数が小さかったり、x の数が多かったりするときには、テストデータやダブルクロスバリデーションにおいて良好な結果が得られても、アイランダマイゼーションを検討し、「たまたま良好な結果が出たのではないか」と議論するようにしましょう。

 

以上です。

質問やコメントなどありましたら、X, facebook, メールなどでご連絡いただけるとうれしいです。

タイトルとURLをコピーしました