1

機械学習を使用して、欠落しているデータを連続して代入しようとしています。

このプロジェクトで実験するために、Python でいくつかの自動 ML ライブラリをテストしてきました (これまでのところ、 dablFLAMLauto-sklearn、およびAutoKeras )。

「古典的な」方法でオーバーフィッティングを検出する方法を知っています。それは、モデルの調整中にテスト/トレーニングのメトリックをプロットすることです。ただし、私の場合、それを使用できない2つの理由を考えています。

  • まず、物理的な理由から、複数のモデル (少なくとも 1,000 個) を調整することにしています。
  • 第二に、自動機械学習ライブラリは「すぐに使える」モデルを返します (何らかのログの有無にかかわらず)。すべてのメトリクスの評価は内部で行われます。

次に、データセットを分割し、トレーニング/テスト サンプルのスコア (r2 + rmse) を比較し、次の場合にモデルを拒否することにしました。

  • 平均 rmse (テスト + トレーニング) はシリーズの標準偏差よりも優れています。
  • r2_train < .7;
  • r2_test / r2_train < .8。

注: 最初のテストは、自動化のコンテキストで私が考えることができる唯一のものです (つまり、汚染物質と同じ単位で表される 1 つの測定値に対して rmse を一致させることです)。より良い行動方針があるかもしれません。その場合、私は提案を受け入れます。

とは言っても、これらのガイドラインは、私のアルゴリズムがそのような結果を提示することを妨げませんでした (フランス語の凡例と軸のタイトルについては申し訳ありません...: Y 軸は予測、X 軸は真の値です)。 ; 凡例の「entraînement」はトレーニング セットに対応します):

pHの残差

ご覧のとおり、モデルは適切ではありません。これが通常のオーバーフィッティングの問題であるかどうかはわかりませんが、モデルが 2 つの値 (約 5.7pH と 7.4pH) を記憶するようにトレーニングされていることは明らかです。 (元のデータセットを覗いた後にこれらの結果が発生した理由を完全に理解できました。複数の autoML ライブラリがこれらの異常を引き起こしました...しかし、それは重要ではありません)。

自動化されたプロセスでそのようなモデルを破棄する方法はありますか? このモデルを破棄するために、r2 と rmse に対して使用されるしきい値を簡単に増やすことができます。しかし、そのようなモデルをすべて破棄できるとは確信していません...

4

0 に答える 0