データセットを分割する前または後のデータの正規化?
1. 概要
正規化は、機械学習モデルのパフォーマンスを向上させるために広く使用されている手法です。 しかし、それを適用する適切な時期はいつですか?データセットを分割する前または後ですか?
次の行では、この質問のコンテキストを構成するための正規化と分割の概要を示します。
基本を理解したら、従うべき正しい順序と、そのように進める必要がある理由を学びます。
2. 正規化の概要
2.1. 正規化の意味
正規化は、モデルのパフォーマンスを向上させるためにモデルの数値特徴に適用される変換です。 この用語は、それを実装するための特定の方法のいくつかと混同されることがよくあります。 ただし、このチュートリアルでは、これを「機能スケーリング」と見なします。
最も一般的な実装は次のとおりです。
- 再スケーリング(最小-最大正規化):値を[0、1]の範囲でスケーリングします。
- 平均正規化:値を[-0.5、+ 0.5]の範囲に保ちながら、値を0を中心に配置します。
- 標準化:平均0と標準偏差1になるように値をスケーリングします。
2.2. 双方向ストリート
トレーニング中にデータを正規化するために使用されるパラメーター(最小、最大、平均、および標準偏差)は、入力方向と出力方向の両方でモデルを使用するために必要です:
- 入力:モデルは正規化されたデータでトレーニングされたため、入力はモデルに入力される前にトレーニングスケールに正規化される必要があります
- 出力:モデルは正規化された予測を返すため、ユーザーに送信する前に、元のスケールに非正規化する必要があります
3. なぜ分割するのか
テストデータセットの主な目的は、モデルのパフォーマンスのバイアスを最小限に抑えることです。 これを実現するには、トレーニング中にモデルに表示されなかった例を使用して評価プロセスを実行する必要があります。
トレインとテストのデータセットは次のように分割されます。
- トレーニングデータ:モデルパラメーターの計算に使用される例(たとえば、ニューラルネットワークの重みなど)
- テストデータ:モデルのパフォーマンスを評価するために使用される独立したデータセット。
テストデータはモデルでこれまでに見られた新しいデータに最も近いはずなので、トレーニングにテストデータを使用することはできません。
4. 正規化:分割の前または後?
4.1. 前にそれをする
分割する前に最小-最大正規化を適用するとします。最小値と最大値にはテストデータが含まれるため、テスト例の正規化値は常に[0、1]の範囲になります。 これは、モデルのパフォーマンスに影響を与える可能性のある、評価ステップでの正規化の問題がないことも意味します。 テストデータのパフォーマンス動作を事前に知っていると、危険信号が発生するはずです。
ただし、新しいデータでは、正規化された後、これらの値が[0、1]の範囲に留まるとは保証できません。 モデルが[0、1]の範囲の例を使用してトレーニングされたことを考えると、異なる範囲のデータはモデルのパフォーマンスを合理的に悪化させる可能性があります。
5. 物事を正しく行う
それで、それを正しく行うためのステップは何ですか?
トレーニング
- データを分割してテストセットを取得し、正規化やトレーニングには使用しないでください
- トレーニングデータを使用して正規化し、取得したパラメータを保存します
予測
- トレーニング中に取得したパラメータを使用して入力を正規化します
- これらの同じパラメーターを使用して予測を非正規化し、ユーザー出力を元のスケールで返します
評価
- テストセットを予測して、実際のスケールの予測を取得します(前のステップ)
- これらの予測を参照例と比較して、評価指標を取得します
6. 結論
このチュートリアルでは、偏った評価を避けるために正規化の前に分割する必要がある理由を説明しました。
最後に、機械学習プロジェクトで正規化と分割を正しく使用するためのいくつかの簡単な手順を学びました。