重回帰を実施する場合、予測変数をいつ中央に配置し、いつ標準化する必要がありますか?


281

いくつかの文献では、異なる単位の場合、複数の説明変数による回帰を標準化する必要があることを読みました。(標準化とは、平均値を減算し、標準偏差で除算することです。)他のどの場合にデータを標準化する必要がありますか?データを中央揃えするだけの場合(つまり、標準偏差で除算しない場合)がありますか?


11
関連記事アンドリュー・ゲルマンのブログインチ

31
すでに与えられた素晴らしい答えに加えて、リッジ回帰や投げ縄などのペナルティ化方法を使用する場合、結果は標準化に対して不変ではなくなることを述べておきます。ただし、標準化することをお勧めします。この場合、解釈に直接関連する理由ではなく、ペナルティは異なる説明変数をより均等に処理するためです。
-NRH

6
サイト@mathieu_rへようこそ!2つの非常に人気のある質問を投稿しました。両方の質問に対して受け取った優れた回答の一部を支持/承認することを検討してください;)
マクロ


1
このQ&Aを読んだとき、何年も前につまずいたusenetサイトを思い出しましたfaqs.org/faqs/ai-faq/neural-nets/part2/section-16.htmlこれは、いくつかの問題と考慮事項を簡単に示していますデータを正規化/標準化/再スケーリングする場合。ここの答えにはどこにも言及されていませんでした。機械学習の観点から主題を扱いますが、ここに来る人を助けるかもしれません。
ポール

回答:


213

回帰では、予測子の平均が0になるように変数を中央に配置することをお勧めし0。これにより、予測子の値が平均値に設定されている場合に、切片項がY iの期待値Yiとして解釈されるようになります。そうでない場合、予測変数が0に設定されている場合、インターセプトはYi期待値として解釈されます。これは現実的または解釈可能な状況ではない場合があります。回帰におけるスケーリングのもう1つの実用的な理由は、ある国の人口規模を予測子として使用している場合など、1つの変数のスケールが非常に大きい場合です。その場合、回帰係数は桁が非常に小さい(例:106)これは、コンピューターの出力を読んでいるときに少し面倒になる可能性があるため、変数を、たとえば人口の数百万単位に変換する場合があります。予測を標準化する規則は主に存在するため、回帰係数の単位は同じです。

@gungがほのめかし、@MånsTが明示的に示しているように(両方に+ 1、btw)、センタリング/スケーリングは回帰モデルの統計的推論に影響しません-推定値は適切に調整され、p値は同じになります。

センタリングやスケーリングが役立つその他の状況:

  • さまざまなスケールの変数合計または平均化するときに、おそらく何らかの複合スコアを作成するために。スケーリングなしでは、1つの変数がそのスケールだけで合計に大きな影響を与える場合がありますが、これは望ましくない場合があります。

  • 計算と表記を簡素化するため。たとえば、サンプル平均を中心とする値の行列のサンプル共分散行列は、単純にXXです。同様に、単変量確率変数X平均が中央にある場合、var(X)=E(X2)あり、観測値の2乗の標本平均を調べることで標本から分散を推定できます。

  • 前述に関連して、PCAは、列がその手段によって最初に中央に配置された場合にのみ、データ行列の特異値分解として解釈できます。

先ほど触れた最後の2つの箇条書きではスケーリングは不要であり、最初に述べた箇条書きではセンタリング不要な場合があるため、この2つは常に手をつないで行く必要はありません。


2
+1、これらは私が考えていなかった良い点です。明確にするために、研究者が回帰を実行する前に説明変数を結合したい場合があり、したがって標準化する必要がある場合の具体例をいくつか挙げてみましょう。1つのケースは、子供の行動障害の研究のためかもしれません。研究者は、保護者と教師の両方から評価を得て、それを単一の不適応の尺度に結合したい場合があります。別のケースとしては、養護施設での活動レベルと、居住者による自己評価、および活動のサインアップシート上の署名の数に関する研究があります。
グング

2
しかし、理論的には、センタリング/スケーリングに母平均と標準偏差を使用すべきではありませんか?実際には、サンプル平均/ SDを使用するのと同じくらい簡単ですか、それ以外にもありますか?
-AlefSin

3
完全を期すために、中央揃えで標準化されたXのが相関行列であるというこのいい答えに付け加えましょう。XXX
-cbeleites

1
@AlefSin:あなたは実際に母平均/ SD以外のものを使いたいかもしれません、私の答えを見てください。しかし、センタリング/スケーリングのために何を使用するかを考える必要があるというあなたのポイントは非常に良いです。
cbeleites

@AlefSin、私の平均はすべて、サンプルの平均/ SDを使用していると仮定して作成されました。サンプルを中心にすると、予測子にサンプルの平均が設定されるときの期待値であることを除いて、切片の解釈は依然として同じです。3つの箇条書きの情報は、サンプル量でセンタリング/スケーリングする場合に引き続き適用されます。サンプル平均を中心にすると、結果は平均が0の変数ですが、サンプルの標準偏差によるスケーリングでは一般に標準偏差が1の結果(t統計など)は生成されないことに注意してください。Yi
マクロ

143

あなたは共通の信念に出くわしました。ただし、一般的には、重回帰のためにデータを集中化または標準化する必要はありません。異なる説明変数は、ほとんどの場合異なるスケール(つまり、異なる単位で測定)にあります。これは問題ではありません。ベータは、各説明変数の単位を応答変数の単位に適切に変換するように推定されます。人々が時々言うことの1つは、変数を最初に標準化しておけば、ベータを重要度の尺度として解釈できるということです。例えば、もし、およびβ 2 = .3β1=.6β2=.3、最初の説明変数は2番目の説明変数の2倍重要です。このアイデアは魅力的ですが、残念ながら、それは無効です。いくつかの問題がありますが、おそらく最も簡単なのは、変数の範囲制限を制御する方法がないことです。互いに関連する異なる説明変数の「重要性」を推測することは、非常にトリッキーな哲学的問題です。それはどれも標準化が悪い間違っていることを示唆するものではありません、ただそれは通常は必要ないということです

XX2XX


(更新はかなり後から追加されました:)言及し忘れた類似のケースは、相互作用用語の作成です。相互作用/積項が0を中心としない2つの変数から作成された場合、ある程度の共線性が誘導されます(正確な量はさまざまな要因に依存します)。センタリングは、まずこの潜在的な問題に対処します。より詳細な説明については、@ Affineからのこの優れた回答を参照してください。相互作用項が含まれている場合にのみ問題となる共線性診断


12
誰もが興味を持っている場合は、私もここに相対的な「重要性」を推測するために標準化されたベータ版を使用しての誤アイデアについて話:マルチ線形回帰のための仮説テストを
GUNG

お返事をありがとうございます。その間、私はそれを考え出したと思います:二乗項はXがそれ自身と相互作用したと考えることができます。
Abhimanyuアローラ

6
XX

beta1 = 0.6およびbeta2 = 0.3について、beta1がbeta2の2倍重要であるかどうかはわかりませんが、標準化されているため、同じ「スケール」、つまり単位は標準偏差であると思いました平均から。そうは言っても、beta1(x2を一定に保持)の場合、beta2(x1を一定に保持)よりもYの応答は2倍高くなります。右?または、途中で何かを誤解していますか?
チャオ

@ chao、2つの変数に固有の単位を実際に削除していません。あなたはそれらを非表示にしました。現在、X1の単位は13.9 cm単位で、X2の単位は2.3℃単位です。
グング

80

他の回答のコメントに加えて、説明変数のスケールと場所は、回帰モデルの有効性にいかなる影響も与えないことを指摘したいと思います。

y=β0+β1x1+β2x2++ϵ

β1,β2,x1,x2,β0

x1aβ^11/a

β^1(x1)=i=1n(x1,ix¯1)(yiy¯)i=1n(x1,ix¯1)2.

副<文>この[前述の事実の]結果として、それ故に、従って、だから◆【同】consequently; therefore <文>このような方法で、このようにして、こんなふうに、上に述べたように◆【同】in this manner <文>そのような程度まで<文> AひいてはB◆【用法】A and thus B <文>例えば◆【同】for example; as an example

β^1(ax1)=i=1n(ax1,iax¯1)(yiy¯)i=1n(ax1,iax¯1)2=ai=1n(x1,ix¯1)(yiy¯)a2i=1n(x1,ix¯1)2=β^1(x1)a.

β^2(例えば)このスケーリングは、他の斜面の推定に影響を与えないことが(たぶん)明らかです。

したがって、スケーリングは、単に対応する勾配のスケーリングに対応します。

ai=1/sisix1xi


1
非常に歪んだ変数を標準化することをお勧めしますか、それとも対称的に分布した変数を標準化することをお勧めしますか?入力変数のみまたは結果もスターダイジングする必要がありますか?
SKAN

31

モデルに合わせて勾配降下法を使用する場合、共変量を標準化すると収束が速くなる場合があります(スケーリングされていない共変量がある場合、対応するパラメーターが勾配を不適切に支配する可能性があるため)。これを説明するために、いくつかの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の一部のアプリケーションでは、スケーリングにより予測パフォーマンスが向上する場合がありますサポートベクターデータ記述のスケーリング


25

私は、中心化と標準化の両方に「堅実な理由」を好みます(それらは非常に頻繁に存在します)。一般的に、それらはデータ分析方法よりもデータセットと問題に関係しています。

非常に頻繁に、物理的/化学的/生物学的/ ...平均よりも意味のある他のポイントに集中する(データの起源をシフトする)ことを好む(マクロの答えも参照)、例えば

  • 対照群の平均

  • 空白信号

数値の安定性は、データのセンタリングやスケールのアルゴリズム関連の理由です。

また、標準化に関する同様の質問もご覧ください。また、「センターのみ」もカバーします。


24

@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()あるNAs 以外の警告またはエラーメッセージは表示されません。もちろん、他のアルゴリズムは、さまざまな例でさまざまな方法で「破損」する可能性があります。I(X^2)summary(B)


10
(+1)lm2次項の係数を推定できないことに注意してください。また、特異設計行列に関する警告が表示されます。これらのプロットよりも問題をより直接的に示している可能性があります。
スコルチ

3

元のデータをセンタリングまたは標準化することで、二乗項または他の相互作用項が回帰に含まれる場合に多重共線性の問題を実際に軽減できるかどうかを真剣に疑います。

私のポイントを説明するために、簡単な例を考えてみましょう。

真の仕様が次の形式をとると仮定します。

yi=b0+b1xi+b2xi2+ui

したがって、対応するOLS方程式は

yi=yi^+ui^=b0^+b1^xi+b2^xi2+ui^

yi^yiuib0^b2^b0b2zi=xi2その後。

xx2yiyi、二乗項を追加する前を中央に配置することです。

yi

y¯=b0^+b1^x¯+b2^z¯
y¯x¯z¯yixizi

y¯yi

yiy¯=b1^(xix¯)+b2^(ziz¯)+ui^

yiy¯xix¯ziz¯b1^b2^

xx2xx2corr(x,z)=corr(xx¯,zz¯)

要約すると、センタリングに関する私の理解が正しい場合、センタリングデータが二乗項または他の高次の項を回帰に含めることによって生じるMC問題を軽減するのに役立つとは思わない。

私はあなたの意見を聞いてうれしいです!


2
ご協力ありがとうございます、@ rudi0086021。あなたは正しいかもしれませんが、ここにいくつかの問題があります。第1に、センタリングはxの平均を減算することであり、yの平均を減算することではありません。2番目に、最初にセンタリングする必要があります。後書きをセンタリングしても、注意するとおりの効果はありません。考慮してください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
グン

返信ありがとうございます、@ gung。これが私の考えです。第一に、個人的には、従属変数と独立変数を別々に、つまり独立変数に処理する説得力のある理由はありませんでしたが、従属変数にはそうしません。
rudi0086021

2
第二に、あなたが言ったように、おそらく二乗項を作成する前にデータを中央に置く必要があります。このような方法は、MCの問題を軽減します。ただし、偏った推定値、またはより具体的には省略された変数バイアス(OVB)につながる可能性があります。説明のために、次の例を参照してください。真の仕様がy = b0 + b1 * x + b2 * x ^ 2 + uであるとします。事前にデータをセンタリングすると、y = b0 + b1 *(x-xhar)+ b2 *(x-xbar)^ 2 + vが得られます。ここで、新しいエラー項v = u + b1 * xbar-b2 * xbar ^ 2 + 2b2 * xbar * x。cov(x-xbar、v)!= 0であることは明らかです。したがって、残念ながら、事前にデータをセンタリングすると、推定値に偏りが生じます。
rudi0086021

@ rudi0086021最後のコメントでは、中心化されたデータを近似するときに、中心化されていないデータを近似するときと同じ係数を取得すると仮定しています。しかし、正方形を取る前の中央揃えは定数による単純なシフトではないため、同じ係数を取得することを期待すべきではありません。センタリング後の最適なフィットは、B0 + B1 *(x-xbar)+ B2 *(x-xbar)^ 2で与えられます。ここで、B0 = b0 + b1 * xbar + b2 * xbar ^ 2、B1 = b1 + 2 * b2 * xbarおよびB2 = b2。したがって、v = uです。遅ればせながらこのコメントに返信して申し訳ありませんが、今日初めてそれを見る私のような人が常にいる可能性があります。
ティムグッドマン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.