PCA固有ベクトルではないベクトルの「固有値」(説明された分散のパーセンテージ)を取得する方法は?


10

PCAによって提供される座標空間ではなく、わずかに異なる(回転した)ベクトルのセットに対して、データセットの分散のパーセンテージを取得する方法を理解したいと思います。

ここに画像の説明を入力してください

set.seed(1234)
xx <- rnorm(1000)
yy <- xx * 0.5 + rnorm(1000, sd = 0.6)
vecs <- cbind(xx, yy)
plot(vecs, xlim = c(-4, 4), ylim = c(-4, 4))
vv <- eigen(cov(vecs))$vectors
ee <- eigen(cov(vecs))$values
a1 <- vv[, 1]
a2 <- vv[, 2]
theta = pi/10
rotmat <- matrix(c(cos(theta), sin(theta), -sin(theta), cos(theta)), 2, 2)
a1r <- a1 %*% rotmat
a2r <- a2 %*% rotmat
arrows(0, 0, a1[1], a1[2], lwd = 2, col = "red")
arrows(0, 0, a2[1], a2[2], lwd = 2, col = "red")
arrows(0, 0, a1r[1], a1r[2], lwd = 2, col = "green3")
arrows(0, 0, a2r[1], a2r[2], lwd = 2, col = "green3")
legend("topleft", legend = c("eigenvectors", "rotated"), fill = c("red", "green3"))

したがって、基本的には、PCAによって与えられる赤い軸のそれぞれに沿ったデータセットの分散が固有値によって表されることを知っています。しかし、どのようにして同等の分散を取得し、合計を同じ量にすることができますが、2つの異なる軸を緑色で投影しました。原点から2つの直交単位ベクトルが与えられたIEは、これらの任意の(ただし直交)軸に沿ってデータセットの分散をどのように取得できますか? PCA)。


回答:


7

ベクトルが直交している場合は、各ベクトルへのデータのスカラー投影の分散を取ることができます。データ行列(ポイントx次元)と、正規直交列ベクトルセットがあるとします。データが中央に配置されていると仮定します。各ベクトル方向に沿ったデータの分散は、によって与えられ。Xnd{v1,...,vk}viVar(Xvi)

元の次元と同じ数のベクトルがある場合()、投影の分散の合計は、元の次元に沿った分散の合計と等しくなります。ただし、元の次元よりもベクトルが少ない場合()、分散の合計は通常PCAの場合よりも少なくなります。PCAを考える1つの方法は、PCAがこの量を最大化することです(ベクトルが直交しているという制約があります)。k=dk<d

また、(説明された分散の割合)を計算することもできます。これは、特定の数のPCA次元がデータをどれだけ適切に表すかを測定するためによく使用されます。レッツデータの各元の寸法に沿って分散の和を表します。次に:R2S

R2=1Si=1kVar(Xvi)

これは、投影の分散の合計と元の次元に沿った分散の合計の比率です。

について考えるもう1つの方法は、投影からデータを再構築しようとすると、適合度を測定することです。その後、他のモデル(回帰など)で使用されるおなじみの形式になります。言う番目のデータ点は、行ベクトルであり、。行列列に沿って各基底ベクトルを保存します。すべてのベクトルへの番目のデータポイントの投影は、によって与えられます。元の次元よりもベクトルが少ない場合( I X I のV のI V P I = X I V K < D XI = P I V TR2ix(i)ViVp(i)=x(i)Vk<d)、これを次元を減らした空間にデータを線形にマッピングすると考えることができます。我々はほぼ元のデータ空間にマッピングバックすることにより、低次元の表現からデータポイントを再構成することができる:。平均二乗再構成誤差は、各元のデータポイントとその再構成の間の平均二乗ユークリッド距離です。x^(i)=p(i)VT

E=1nx(i)x^(i)2

適合度は、他のモデルと同様に定義されます(つまり、1から原因不明の分散の割合を引いたもの)。モデルの平均二乗誤差()とモデル化された数量の合計分散()が与えられると、。データ再構成のコンテキストでは、平均二乗誤差は(再構成誤差)です。合計分散は(データの各次元に沿った分散の合計)です。そう:R2MSEVartotalR2=1MSE/VartotalES

R2=1ES

Sはまた、各データポイントからすべてのデータポイントの平均までのユークリッド距離の2乗の平均に等しいので、は、再構築エラーを常に返す「最悪のモデル」のエラーと比較すると考えることもできます。再建という意味です。R2

の2つの式は同等です。上記のように、元の次元と同じ数のベクトルがある場合()、は1になります。ただし、場合、は一般にPCAよりも小さくなります。PCAについて考えるもう1つの方法は、二乗再構成エラーを最小限に抑えることです。R2k=dR2k<dR2


+1、非常に明確な説明。完全を期すために、はあなたが書いたものだということだけを述べておきます。 " " によって、投影に使用されたのと同じを介した再構築が理解された場合に限られます。一般に、任意の投影ベクトル場合、再構成が改善され、高くなります。細かく説明すると答えがあります。この特定の質問について、あなたが書いたものはまさに必要なものであることに同意します。R2try[ing] to reconstruct the data from the projectionsVvR2
amoeba氏は

はい、それは良い点と良い説明です
user20160

データ行列がなく、共分散行列がある場合はどうなりますか?共分散行列の対角線の合計によって合計分散が得られ、PCAをその共分散行列に適用した場合、固有値は新しい方向ごとに分散を与えるため、説明される分散は固有値/総分散になります。しかし、私のベクトルは固有ベクトルではありませんか?
交絡

...私が知る限り、共分散行列Cから始める場合、この場合、| Cv_i |をとる必要があります/ sum(diag(C))は、%分散を説明します。
交絡
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.