データのセンタリング(または軽for)はPCAに対してどのような違いがありますか?数学が簡単になる、または最初のPCが変数の手段に支配されるのを防ぐと聞いたことがありますが、まだ概念をしっかりと把握できていないように感じます。
たとえば、ここで一番の答えは、どのようにデータをセンタリングすることで、回帰とPCAのインターセプトを取り除きますか?センタリングしないと、点群の主軸ではなく、原点を介して最初のPCAがどのように引き出されるかを説明します。PCが共分散行列の固有ベクトルからどのように取得されるかについての私の理解に基づいて、私はこれがなぜ起こるのか理解できません。
さらに、センタリングがある場合とない場合の私自身の計算はほとんど意味がないようです。
iris
R のデータセットの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
なぜこれが非中心データの共分散行列での私自身の固有ベクトル計算と異なるのですか?計算に関係していますか?prcomp
PCを計算するために、固有値分解ではなくSVDメソッドと呼ばれるものを使用することを説明しました。関数princomp
は後者を使用しますが、その結果はと同じですprcomp
。私の問題は、この投稿の冒頭で説明した答えに関連していますか?
through the origin, rather than the main axis of the point cloud
。PCAは常に原点を突き刺します。データが中央にある場合、原点=重心。
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を。