回帰分析のためのスケーリング機能に加えて、ターゲット値をスケーリングする必要がありますか?


52

回帰モデルを作成しています。前処理のステップとして、特徴値を平均0および標準偏差1にスケーリングします。ターゲット値も正規化する必要がありますか?

回答:


50

まず、機能のスケーリングが実行される理由を分析しましょう。特徴スケーリングは、スケール不変性の特性を持たない最急降下アルゴリズムの収束を改善します。

確率的勾配降下トレーニングの例では、ように重みの更新を繰り返し通知します。

wt+1=wtγw(fw(x),y)

ここで、は重み、はステップサイズ、は勾配重み、は損失関数、はでパラメーター化された関数、はトレーニングの例、は応答/ラベルです。γ W ℓのF W W のX 、Ywγwfwwxy

適切なスケーリングと不適切なスケーリングを表す次の凸関数を比較します。

機能のスケーリング

サイズ 1つの重み更新のステップは、適切にスケーリングされた場合の方が、不適切にスケーリングされた場合よりもはるかに優れた誤差の削減をもたらします。以下に示すのは、長さのの方向です。WF WX Y γγw(fw(x),y)γ

勾配更新

出力を正規化しても形状には影響しないため、通常は必要ありません。f

出力のスケーリングが影響を与えると想像できる唯一の状況は、応答変数が非常に大きい場合、またはf32変数(GPU線形代数で一般的)を使用している場合です。この場合、重みの要素の浮動小数点オーバーフローを取得することが可能です。症状はInf値であるか、他の極端な表現にラップアラウンドします。


ただし、入力をスケーリングせずに勾配降下を適用し、y = theta0 + theta1 * x1 + theta2 * x2のようなシータを解く場合、Yを保持しながらX1およびX2の値を(スケーリングすることにより)更新する場合(期待される出力)同じ、theta1、theta2の結果の予測は、元の方程式に適用したときに間違っていませんか?
Prashant

14

一般的に、それは必要ではありません。入力をスケーリングすると、1つまたは複数の特徴が他の特徴の大部分を支配する状況を回避するのに役立ちます。その結果、モデルは、小さいスケール変数が強い場合でも、その影響をほとんど受けません。ただし、ターゲットをスケーリングすると、平均二乗誤差は自動的にスケーリングされます。MSE> 1は自動的に、一定の(単純な)予測よりも悪いことをしていることを意味します。


7

いいえ、応答の線形変換は必要ありません。ただし、モデルの解釈に役立つ場合があります。たとえば、応答がメートル単位で与えられているが、通常は非常に小さい場合、ミリメートルに再スケーリングすると役立つ場合があります。また、同じ理由で入力のセンタリングやスケーリングが役立つことにも注意してください。たとえば、他のすべての予測子が0に設定されている場合、予測子の単位変化あたりの応答への影響として係数を大まかに解釈できます。しかし、多くの場合、0はこれらの変数の有効な値または興味深い値にはなりません。入力を中央に配置すると、他の予測変数が平均値をとるときに、単位変化あたりの効果として係数を解釈できます。

元のスケールの予測子で応答が線形でない場合、他の変換(つまり、対数または平方根)が役立つ場合があります。この場合、一般化線形モデルについて読んで、それらが適切かどうかを確認できます。


1

それはないで勾配降下に影響を与える悪い方法。勾配降下の式を確認します。

xn+1=xnγΔF(xn)

は 1000倍の機能であると言えますx2x1

以下のために我々は。グローバル最適である(0,0)に到達する最適な方法は、対角線上を移動することですが、フィーチャの1つがスケールに関して他のフィーチャを支配する場合は、発生しません。F(x)=x2ΔF(x)=2x

説明するために:変換を行う場合、両方の座標に対して均一な学習率を想定し、勾配を計算してから機能形式は同じですが、2番目の座標の学習率は、最初の座標の学習率の1/1000に調整する必要があります。座標2が支配的な場合、ベクトルはその方向に向かってより多くを指します。z=(x1,1000x1)γ

zn+1=znγΔF(z1,z2).
Δ

その結果、その方向のみを指すようにデルタをバイアスし、収束を遅くします。


0

はい、ターゲット変数をスケーリングする必要があります。この参照を引用します

値の広がりが大きいターゲット変数は、エラー勾配値が大きくなり、重み値が劇的に変化し、学習プロセスが不安定になる可能性があります。

リファレンスでは、非常に大きなエラーが発生するとトレーニング中にモデルの重みが爆発し、その結果、重みの更新のために計算された誤差勾配も爆発するコードのデモもあります。要するに、データをスケーリングせず、非常に大きな値がある場合は、非常に小さな学習率の値を使用してください。これは@drSpacyでも言及されました。

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