テストデータにも正規化を適用する必要がありますか?


17

著者識別問題に関するプロジェクトを行っています。データのトレーニングにtf-idf正規化を適用し、そのデータでsvmをトレーニングしました。

分類子を使用する場合、テストデータも正規化する必要があります。正規化の基本的な目的は、学習中に、学習アルゴリズムがより重要な機能により重点を置くようにすることだと感じています。そのため、トレーニングが完了すると、どの機能が重要であり、どれが重要ではないかをすでに知っています。正規化をテストデータにも適用する必要はありますか?

この分野は初めてです。質問が愚かに見える場合は無視してください?


4
テストデータは、トレーニングデータと同じスケールである必要があります。
ジョン

回答:


35

はい。アルゴリズムが正規化されたトレーニングデータで機能するか、必要な場合は、テストデータに正規化を適用する必要があります*。

これは、モデルがその入力ベクトルで指定された表現で機能するためです。これらの数値のスケールは、表現の一部です。これは、フィートとメートルの間の変換に少し似ています。。。モデルまたは式は、通常1種類のユニットでのみ機能します。

正規化が必要なだけでなく、トレーニングデータとまったく同じスケーリングを適用する必要があります。つまり、トレーニングデータで使用されるスケールとオフセットを保存し、それを再度使用することを意味します。一般的な初心者の間違いは、電車とテストデータを個別に正規化することです。

PythonおよびSKLearnでは、次のようにStandard Scalerを使用してinput / X値を正規化できます。

scaler = StandardScaler()
train_X = scaler.fit_transform( train_X )
test_X = scaler.transform( test_X )

train_X適合する関数を使用する変換(パラメーターを計算する)が正規化される方法に注意してください。test_X変換は、電車のデータから学習したのと同じパラメーターを使用して変換するだけです。

適用するtf-idf正規化は、データセット全体(一部のドキュメント内の単語の頻度)から一部のパラメーターを学習し、各ドキュメントで見つかった比率を使用するため、同様に機能します。


*一部のアルゴリズム(決定木に基づくアルゴリズムなど)は、正規化された入力を必要とせず、異なる固有のスケールを持つ機能に対処できます。


+1は、テストの正規化パラメーターがトレーニングから決定されたパラメーターと同じである必要があることを説明しています。私の理解では、このロジックは検証セットにも適用されます。
グリーンスティック

@Greenstick:もちろん、モデルに入力されたすべてのデータの処理に拡張されます。モデルが実稼働環境の推論に使用される場合、新しいデータを含める。答えはそれをすべてカバーすることなく十分に長いと思いますし、検証データを分割するポイントは大きく異なるため(多くのモデルにはこれがトレーニングステップに組み込まれています)、コード例を表示できませんでした。
ニールスレーター

2
テストデータをトレーニングデータでスケーリング(fi​​t_transform)する必要がありますか?または、同じscale(scaler.transform)を使用して個別に行いますか?
ボブ・エバート

2
@BobEbert:どちらでもできます。技術的には、スケーラーを組み合わせたデータセットに適合させると、テストからトレーニングに少量の情報が漏れる可能性があります。したがって、「公式」バージョンは、スケーラーをトレーニングデータのみに適合させ、他のすべてに適用することができますその後のデータセット。ただし、このリークはごくわずかであり、スケーラーをすべてのデータに合わせると実際に問題が発生することはありません。
ニールスレーター

6

間違いなくデータを正規化する必要があります。次の目的のためにデータを正規化します。

  • 学習プロセスを加速するための、同じスケールで異なる機能を使用するため。

  • スケールを気にせずにさまざまな機能を公平にケアするため。

トレーニング後、学習アルゴリズムはスケーリングされた形式でデータを処理することを学習したため、トレーニングデータに使用される正規化パラメーターでテストデータを正規化する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.