センタリングはPCAにどのように違いをもたらしますか(SVDおよび固有分解の場合)?


30

データのセンタリング(または軽for)はPCAに対してどのような違いがありますか?数学が簡単になる、または最初のPCが変数の手段に支配されるのを防ぐと聞いたことがありますが、まだ概念をしっかりと把握できていないように感じます。

たとえば、ここで一番の答えは、どのようにデータをセンタリングすることで、回帰とPCAのインターセプトを取り除きますか?センタリングしないと、点群の主軸ではなく、原点を介して最初のPCAがどのように引き出されるかを説明します。PCが共分散行列の固有ベクトルからどのように取得されるかについての私の理解に基づいて、私はこれがなぜ起こるのか理解できません。

さらに、センタリングがある場合とない場合の私自身の計算はほとんど意味がないようです。

irisR のデータセットのsetosa花について考えます。サンプルの共分散行列の固有ベクトルと固有値を次のように計算しました。

data(iris)
df <- iris[iris$Species=='setosa',1:4]
e <- eigen(cov(df))
> e
$values
[1] 0.236455690 0.036918732 0.026796399 0.009033261

$vectors
            [,1]       [,2]       [,3]        [,4]
[1,] -0.66907840  0.5978840  0.4399628 -0.03607712
[2,] -0.73414783 -0.6206734 -0.2746075 -0.01955027
[3,] -0.09654390  0.4900556 -0.8324495 -0.23990129
[4,] -0.06356359  0.1309379 -0.1950675  0.96992969

最初にデータセットを中央に配置すると、まったく同じ結果が得られます。センタリングは共分散行列をまったく変更しないため、これは非常に明白なようです。

df.centered <- scale(df,scale=F,center=T)
e.centered<- eigen(cov(df.centered))
e.centered

このprcomp関数は、中心化されたデータセットと中心化されていないデータセットの両方に対して、正確にこの固有値と固有ベクトルの組み合わせをもたらします。

p<-prcomp(df)
p.centered <- prcomp(df.centered)
Standard deviations:
[1] 0.48626710 0.19214248 0.16369606 0.09504347

Rotation:
                     PC1        PC2        PC3         PC4
Sepal.Length -0.66907840  0.5978840  0.4399628 -0.03607712
Sepal.Width  -0.73414783 -0.6206734 -0.2746075 -0.01955027
Petal.Length -0.09654390  0.4900556 -0.8324495 -0.23990129
Petal.Width  -0.06356359  0.1309379 -0.1950675  0.96992969

ただし、prcomp関数にはデフォルトのオプションがありますcenter = TRUE。このオプションを無効にすると、中心化されていないデータに対して次のPC が使用されます(falseに設定されているp.centered場合centerは同じままです)。

p.uncentered <- prcomp(df,center=F)
> p.uncentered
Standard deviations:
[1] 6.32674700 0.22455945 0.16369617 0.09766703

Rotation:
                    PC1         PC2        PC3         PC4
Sepal.Length -0.8010073  0.40303704  0.4410167  0.03811461
Sepal.Width  -0.5498408 -0.78739486 -0.2753323 -0.04331888
Petal.Length -0.2334487  0.46456598 -0.8317440 -0.19463332
Petal.Width  -0.0395488  0.04182015 -0.1946750  0.97917752

なぜこれが非中心データの共分散行列での私自身の固有ベクトル計算と異なるのですか?計算に関係していますか?prcompPCを計算するために、固有値分解ではなくSVDメソッドと呼ばれるものを使用することを説明しました。関数princompは後者を使用しますが、その結果はと同じですprcomp。私の問題は、この投稿の冒頭で説明した答えに関連していますか?

XXX/(n1)


5
Based on my understanding of how the PC's are obtained from the covariance matrix's eigenvectors...リンクする回答のコメントをお読みください。共分散はデータのセンタリングを意味し、PCA「共分散」=センタリングされたデータのPCA。元の変数を中央に配置しない場合X、そのようなデータに基づくPCAは、X'X/n [or n-1]行列のPCAになります。:また、重要な概要を参照してくださいstats.stackexchange.com/a/22520/3277を
ttnphns

2
through the origin, rather than the main axis of the point cloud。PCAは常に原点を突き刺します。データが中央にある場合、原点=重心。
ttnphns

XX

1
S

主成分分析:中心PCAと非中心PCA(一般的には同じではない)の議論については、レビューと最近の開発を参照してください。
Yibo Yang

回答:


33

DataCovariance matrixEigen-decomposition,

[Wikipedia:]楕円の軸を見つけるには、最初にデータセットから各変数の平均値を差し引いて、データを原点に集中させる必要があります。次に、データの共分散行列を計算します...

したがって、これは非常に正確な定式化ではないことに注意してください。

XX/(n1)X

Data XMatrix XX/(n1)Eigen-decomposition,

次に、センタリングは非常に重要であり、@ ttnphnsによって、データのセンタリングは回帰およびPCAでインターセプトをどのように取り除くのかという説明と効果がありますか?

X

Data XSingular value decomposition.

Xsvd


1
より明確なロジックを作成するためのあなたの答えに対するアドバイスがあります。最初の2つの(固有の)例X'X/(n-1)では、SSCPマトリックスではなく分解MSCPマトリックスについて話X'Xしているので、svdの例では等価を示し、X/sqrt(n-1)代わりに分解Xします(現在のように)。[もちろん違いはスケールのみの部分(固有値)ではない固有ベクトルであるが、それはdidactically優れている、私が思うだろう。]私の第二の点はすぐのセンタリングなどとすることを思い出させることであろうXベッセル補正がない場所とらずn-1、不要になったがnどういたしまして
ttnphns

1
両方の良い点、@ ttnphns。回答にそれらをどのように組み込むことができるかを考えます。この回答をより多くの聴衆が理解できるようにしたかったので、不必要な数学的詳細を避けようとしました。
アメーバは、モニカを
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.