2016-09-25 9 views
0

私は機械学習にはまったく新しいので、私は線形性のスケーリングを使ってトレーニングデータを前処理しています。フィーチャスケーリング/正規化の最小値と最大値?

私の質問は、各データ列がフィーチャを表す.csvファイルで、データを正規化する必要があるminXとmaxXの値は何ですか?

具体的には、(各列のminX/maxX値を使用して)各フィーチャを別々に正規化するか、すべてのデータを一度に正規化するか(データセット全体からminX/maxXを見つける、すべての機能をエージングする)入力による入力?

答えて

0

リニアクラシファイアのすべての機能を同じ範囲に設定する必要があります(ニューラルネットの場合も同様です)。あなたがスケールする必要がある理由は、前進する前にあなたに非常に明確でなければなりません。この件に関するAndrew Ng's lectureを見て、何が起こっているのかを直感的に説明してください。

これが解消したら、各機能を個別に正規化してください。あなたが3行を持つテーブルがある場合たとえば、:

row | F1 | F2 
1 | 1 | 1000 
2 | 2 | 2000 
3 | 3 | 3000 

をあなたは(1)その最大値(3)と、その分の値を取ることによって、F1をスケールします。あなたは最大と最小それぞれ3000と1000を持つF2のために同じを行うつもりです。

これは、MinMaxスケーリングと呼ばれます。また、平均と分散に基づいてスケーリングを行うことも、コンピューティングリソースの点で通常「予算」があり、それを最大化したいと考えることによって、別のアプローチに完全に従うこともできます。その場合、Histogram Equalizationのようなものが良い選択かもしれません。

最終的なメモ:デシジョンツリーをスタンドアロンクラシファイア、デシジョンフォレスト、または追加のアンサンブルで使用している場合、正規化を邪魔しないでください。変更されません。

+0

私はトレーニングデータの機能を正規化することを理解していますが、予測を開始するときに使用した入力データはどうですか?たとえば、入力データの配列が{F1:12、F2:19、F3:8}の場合、トレーニングデータや配列の他の値からminX/maxX値で各値を正規化する必要がありますか? –

+0

もちろん。あなたが訓練した分類器は関数f(V)です。ここでVはあなたの特徴ベクトルです。 Vが他の関数g(V)によって正規化されていれば、まったく同じ関数を予測データに適用する必要があります。たとえば、minmaxの正規化を使用する場合は、予測データにまったく同じ正規化を適用できるように、最小値と最大値をどこかに格納する必要があります。注:予測データの最小値または最小値より小さいフィーチャがある場合は、単純にMINまたはMAXに設定します。 – Tex

1

各機能を別々に正規化します。あなたが望むのは、明確に定義された間隔(つまり、[0,1])内の各フィーチャの範囲を制限することです。 トレーニングデータセットのデータのみを使用します。

最小最大スケーリングを使用する場合、STDを小さくする予定ですが、これは悪くありません。 Min-Maxまたは標準化(mu = 0、std = 1)を使用する場合は、実行する必要のあるアプリケーションによって異なります。

+0

いいえ、{F1:12、F2:19、F3:-80}というフィーチャの配列をニューラルネットに入力すると、各フィーチャを(トレーニングデータの)過去のminX/maxXデータで正規化しますか?または、入力配列のminX/maxX値で正規化しますか? –

+0

トレーニングデータセットが十分な場合、入力データはそこからmin-maxを使用して[0,1]の範囲になければなりません。これが起こらなければ、それは良いことではありません。とにかく、トレーニングデータセットからmin-maxを使用します。 – ozw1z5rd