いくつかの文献では、異なる単位の場合、複数の説明変数による回帰を標準化する必要があることを読みました。(標準化とは、平均値を減算し、標準偏差で除算することです。)他のどの場合にデータを標準化する必要がありますか?データを中央揃えするだけの場合(つまり、標準偏差で除算しない場合)がありますか?
いくつかの文献では、異なる単位の場合、複数の説明変数による回帰を標準化する必要があることを読みました。(標準化とは、平均値を減算し、標準偏差で除算することです。)他のどの場合にデータを標準化する必要がありますか?データを中央揃えするだけの場合(つまり、標準偏差で除算しない場合)がありますか?
回答:
回帰では、予測子の平均が0になるように変数を中央に配置することをお勧めし。これにより、予測子の値が平均値に設定されている場合に、切片項がY iの期待値として解釈されるようになります。そうでない場合、予測変数が0に設定されている場合、インターセプトは期待値として解釈されます。これは現実的または解釈可能な状況ではない場合があります。回帰におけるスケーリングのもう1つの実用的な理由は、ある国の人口規模を予測子として使用している場合など、1つの変数のスケールが非常に大きい場合です。その場合、回帰係数は桁が非常に小さい(例:)これは、コンピューターの出力を読んでいるときに少し面倒になる可能性があるため、変数を、たとえば人口の数百万単位に変換する場合があります。予測を標準化する規則は主に存在するため、回帰係数の単位は同じです。
@gungがほのめかし、@MånsTが明示的に示しているように(両方に+ 1、btw)、センタリング/スケーリングは回帰モデルの統計的推論に影響しません-推定値は適切に調整され、値は同じになります。
センタリングやスケーリングが役立つその他の状況:
さまざまなスケールの変数を合計または平均化するときに、おそらく何らかの複合スコアを作成するために。スケーリングなしでは、1つの変数がそのスケールだけで合計に大きな影響を与える場合がありますが、これは望ましくない場合があります。
計算と表記を簡素化するため。たとえば、サンプル平均を中心とする値の行列のサンプル共分散行列は、単純にです。同様に、単変量確率変数平均が中央にある場合、あり、観測値の2乗の標本平均を調べることで標本から分散を推定できます。
前述に関連して、PCAは、列がその手段によって最初に中央に配置された場合にのみ、データ行列の特異値分解として解釈できます。
先ほど触れた最後の2つの箇条書きではスケーリングは不要であり、最初に述べた箇条書きではセンタリングが不要な場合があるため、この2つは常に手をつないで行く必要はありません。
あなたは共通の信念に出くわしました。ただし、一般的には、重回帰のためにデータを集中化または標準化する必要はありません。異なる説明変数は、ほとんどの場合異なるスケール(つまり、異なる単位で測定)にあります。これは問題ではありません。ベータは、各説明変数の単位を応答変数の単位に適切に変換するように推定されます。人々が時々言うことの1つは、変数を最初に標準化しておけば、ベータを重要度の尺度として解釈できるということです。例えば、もし、およびβ 2 = .3、最初の説明変数は2番目の説明変数の2倍重要です。このアイデアは魅力的ですが、残念ながら、それは無効です。いくつかの問題がありますが、おそらく最も簡単なのは、変数の範囲制限を制御する方法がないことです。互いに関連する異なる説明変数の「重要性」を推測することは、非常にトリッキーな哲学的問題です。それはどれも標準化が悪いか間違っていることを示唆するものではありません、ただそれは通常は必要ないということです。
(更新はかなり後から追加されました:)言及し忘れた類似のケースは、相互作用用語の作成です。相互作用/積項が0を中心としない2つの変数から作成された場合、ある程度の共線性が誘導されます(正確な量はさまざまな要因に依存します)。センタリングは、まずこの潜在的な問題に対処します。より詳細な説明については、@ Affineからのこの優れた回答を参照してください。相互作用項が含まれている場合にのみ問題となる共線性診断。
他の回答のコメントに加えて、説明変数のスケールと場所は、回帰モデルの有効性にいかなる影響も与えないことを指摘したいと思います。
副<文>この[前述の事実の]結果として、それ故に、従って、だから◆【同】consequently; therefore <文>このような方法で、このようにして、こんなふうに、上に述べたように◆【同】in this manner <文>そのような程度まで<文> AひいてはB◆【用法】A and thus B <文>例えば◆【同】for example; as an example
(例えば)このスケーリングは、他の斜面の推定に影響を与えないことが(たぶん)明らかです。
したがって、スケーリングは、単に対応する勾配のスケーリングに対応します。
モデルに合わせて勾配降下法を使用する場合、共変量を標準化すると収束が速くなる場合があります(スケーリングされていない共変量がある場合、対応するパラメーターが勾配を不適切に支配する可能性があるため)。これを説明するために、いくつかのRコード:
> objective <- function(par){ par[1]^2+par[2]^2} #quadratic function in two variables with a minimum at (0,0)
> optim(c(10,10), objective, method="BFGS")$counts #returns the number of times the function and its gradient had to be evaluated until convergence
function gradient
12 3
> objective2 <- function(par){ par[1]^2+0.1*par[2]^2} #a transformation of the above function, corresponding to unscaled covariates
> optim(c(10,10), objective2, method="BFGS")$counts
function gradient
19 10
> optim(c(10,1), objective2, method="BFGS")$counts #scaling of initial parameters doesn't get you back to original performance
function gradient
12 8
また、SVMの一部のアプリケーションでは、スケーリングにより予測パフォーマンスが向上する場合があります。サポートベクターデータ記述のスケーリング。
@cbeleitesが言及した数値安定性の問題を説明するために、ここに「破壊」する方法に関するSimon Woodの例がありlm()
ます。最初に、いくつかの単純なデータを生成し、単純な2次曲線を近似します。
set.seed(1); n <- 100
xx <- sort(runif(n))
y <- .2*(xx-.5)+(xx-.5)^2 + rnorm(n)*.1
x <- xx+100
b <- lm(y ~ x+I(x^2))
plot(x,y)
lines(x, predict(b), col='red')
しかし、Xに900を追加すると、結果は右にシフトする以外はほとんど同じになります。残念ながら違います...
X <- x + 900
B <- lm(y ~ X+I(X^2))
plot(X,y)
lines(X, predict(B), col='blue')
編集して@Scortchiによるコメントに追加します-lm()によって返されるオブジェクトを見ると、2次項が推定されておらず、NAとして表示されていることがわかります。
> B
Call:
lm(formula = y ~ X + I(X^2))
Coefficients:
(Intercept) X I(X^2)
-139.3927 0.1394 NA
実際、@ Scortchiが示唆するように、モデルマトリックスを見て直接解決しようとすると、「壊れる」。
> X <- model.matrix(b) ## get same model matrix used above
> beta.hat <- solve(t(X)%*%X,t(X)%*%y) ## direct solution of ‘normal equations’
Error in solve.default(t(X) %*% X, t(X) %*% y) :
system is computationally singular: reciprocal condition number = 3.9864e-19
ただし、R-3.1.1の行にlm()
あるNA
s 以外の警告またはエラーメッセージは表示されません。もちろん、他のアルゴリズムは、さまざまな例でさまざまな方法で「破損」する可能性があります。I(X^2)
summary(B)
lm
2次項の係数を推定できないことに注意してください。また、特異設計行列に関する警告が表示されます。これらのプロットよりも問題をより直接的に示している可能性があります。
元のデータをセンタリングまたは標準化することで、二乗項または他の相互作用項が回帰に含まれる場合に多重共線性の問題を実際に軽減できるかどうかを真剣に疑います。
私のポイントを説明するために、簡単な例を考えてみましょう。
真の仕様が次の形式をとると仮定します。
したがって、対応するOLS方程式は
その後。
、二乗項を追加する前を中央に配置することです。
要約すると、センタリングに関する私の理解が正しい場合、センタリングデータが二乗項または他の高次の項を回帰に含めることによって生じるMC問題を軽減するのに役立つとは思わない。
私はあなたの意見を聞いてうれしいです!
x = c(1,2,3); x2 = x^2; cor(x, x2); # [1] 0.9897433; xc = c(-1,0,1); xc2 = xc^2; cor(xc, xc2) # [1] 0
。