PCAを実行する前に、相関の高い変数を削除する必要がありますか?


111

私は、著者がPCAを行う前に他の変数との相関が高いためにいくつかの変数を破棄する論文を読んでいます。変数の総数は約20です。

これは何か利点がありますか?PCAはこれを自動的に処理する必要があるため、オーバーヘッドのように見えます。


26
ちょっとしたヒント。いずれかの変数のコピー(またはコピーに近い)をさらに追加すると、PCAの結果がどのように変化するかを考えてください。
ttnphns

@ type2読んでいた論文に名前をつけてください。
アマティア

回答:


123

これは、@ ttnphnsによるコメントで提供された洞察に満ちたヒントに基づいています。

ほぼ相関する変数を隣接させると、それらの共通の基礎となる要因のPCAへの寄与が増加します。 これは幾何学的に見ることができます。点群として示されているXY平面内のこれらのデータを検討します。

散布図

相関関係はほとんどなく、ほぼ等しい共分散があり、データは中心にあります。PCAは(どのように実行されても)2つのほぼ等しい成分を報告します。

ここで、等しい3番目の変数と、わずかな量のランダムエラーをスローします。の相関行列は、2番目と3番目の行と列の間(と)を除いて、小さな非対角係数でこれを示します。Y X Y Z Y ZZYバツYZYZ

1。0.03440180.0460760.03440181。0.9418290.0460760.9418291。

幾何学的に、すべての元のポイントをほぼ垂直にずらし、前の画像をページの平面から持ち上げます。この擬似3Dポイントクラウドは、(以前と同じ方法で生成されたものの、異なるデータセットに基づいて)側面透視図でリフティングを説明しようとします。

3Dプロット

これらのポイントは元々青い面にあり、赤い点まで持ち上げられます。元の軸は右を指します。結果として生じる傾斜により、YZ方向に沿ってポイントが引き伸ばされ、分散への寄与が2倍になります。その結果、これらの新しいデータのPCAは依然として2つの主要な主成分を識別しますが、一方は他方の2倍の分散を持ちます。Y

この幾何学的な期待は、いくつかのシミュレーションで証明されていますR。このために、2番目、3番目、4番目、5番目の2番目の変数の準共線コピーを作成し、からという名前を付けることにより、「リフティング」手順を繰り返しました。以下は、最後の4つの変数がどのように相関しているかを示す散布図マトリックスです。X 5バツ2バツ5

散布図行列

PCAは相関関係を使用して行われ(これらのデータには実際には関係ありませんが)、最初の2つの変数、次に3、...、最後に5つの変数を使用します。合計分散に対する主成分の寄与のプロットを使用して結果を示します。

PCA結果

最初は、ほとんど無相関の2つの変数があるため、寄与はほぼ等しくなります(左上隅)。2番目と相関する1つの変数を追加した後(幾何学的な図とまったく同じ)、まだ2つの主要なコンポーネントがあり、一方は他方のサイズの2倍になっています。(3番目のコンポーネントは完全な相関の欠如を反映しています。3D散布図のパンケーキのような雲の「厚さ」を測定します。)別の相関変数()を追加すると、最初のコンポーネントは合計の約4分の3になります; 5番目を追加すると、最初のコンポーネントは全体の5分の4近くになります。4つすべての場合、ほとんどのPCA診断手順では、2番目以降のコンポーネントは重要ではないと考えられます。最後のケースでは 'バツ4考慮に値する1つの主要なコンポーネント。

ほぼ冗長な変数を含めると、PCAがその寄与を過度に強調する可能性があるため、変数のコレクションの同じ基礎的(ただし「潜在的」)側面を測定すると考えられる変数を破棄するメリットがあることがわかります。そのような手順について数学的に正しい(または間違っている)ものはありません。分析の目的とデータの知識に基づいた判断の呼び出しです。しかし、他の変数と強く相関していることが知られている変数を脇に置くと、PCAの結果に大きな影響を与える可能性があることは十分に明らかです


これがRコードです。

n.cases <- 240               # Number of points.
n.vars <- 4                  # Number of mutually correlated variables.
set.seed(26)                 # Make these results reproducible.
eps <- rnorm(n.vars, 0, 1/4) # Make "1/4" smaller to *increase* the correlations.
x <- matrix(rnorm(n.cases * (n.vars+2)), nrow=n.cases)
beta <- rbind(c(1,rep(0, n.vars)), c(0,rep(1, n.vars)), cbind(rep(0,n.vars), diag(eps)))
y <- x%*%beta                # The variables.
cor(y)                       # Verify their correlations are as intended.
plot(data.frame(y))          # Show the scatterplot matrix.

# Perform PCA on the first 2, 3, 4, ..., n.vars+1 variables.
p <- lapply(2:dim(beta)[2], function(k) prcomp(y[, 1:k], scale=TRUE))

# Print summaries and display plots.
tmp <- lapply(p, summary)
par(mfrow=c(2,2))
tmp <- lapply(p, plot)

5
+1、美しい数字。トップ2には何を使いましたか?1つ目は手描きのようです。
GUNG

14
TEバツ

2
それは非常に啓発的なことです。私は何か新しいことを学びました。
スペイシー

7
@whuberは、プロのようにXKCDプロットを使用する、最もヒップな統計学者のようなものです。
Cam.Davidson.Pilon

2
@logan別の言葉で言えば、いいえ。この投稿の後半の文章に注意を向けさせてください。「そのような手順について数学的に正しい(または間違っている)ものは何もありません。分析目的とデータの知識に基づいた判断です。」
whuberの

43

@whuberと同じプロセスとアイデアをさらに説明しますが、負荷プロットを使用します。負荷はPCA結果の本質であるためです。

バツ1バツ2バツ3バツ2バツ4バツ5

その後、最初の2つの主成分の負荷のプロットが表示されます。プロット上の赤いスパイクは、変数間の相関関係を示しているため、いくつかのスパイクの束は、密接に相関する変数のクラスターが見つかる場所です。コンポーネントは灰色の線です。コンポーネントの相対的な「強度」(相対的な固有値の大きさ)は、線の重みで与えられます。

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

「コピー」を追加すると、次の2つの効果が見られます。

  1. コンポーネント1はますます強くなり、コンポーネント2はますます弱くなっています。
  2. バツ1バツ2バツ3バツ2

@whuberが既にやったので、私は道徳を再開しません。


r=0r=0.62r=0.77

バツ1バツ2r=0 バツ1バツ2線自体をコンポーネントとして選択できます。]コンポーネント上のデータポイント(200人の被験者)の座標はコンポーネントスコアであり、200-1で割られた平方和はコンポーネントの固有値です。

rバツ1バツ2(ただし、3番目の変数を追加すると、とにかく偏向する可能性があります)。可変ベクトルとコンポーネントラインの間の角度(コサイン)は、それらの間の相関関係です。ベクトルは単位長さであり、コンポーネントは直交しているため、これは座標、ローディングに他なりません。コンポーネントへの負荷の二乗の合計がその固有値です(コンポーネントは、このサブジェクト空間内でそれを最大化するように方向付けするだけです)

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


追加2。追加、彼らは一緒に水と油のような互換性がないかのように私は、「変数空間」と「対象空間」について話した上で。私はそれを再考しなければならなかったし、少なくともPCAについて話すとき、両方のスペースは最終的に同型であり、そのおかげですべてのPCAの詳細を正しく表示できます-データポイント、変数軸、コンポーネント軸、変数ポイント、-単一の歪みのないバイプロット上。

以下は、散布図(可変空間)とローディングプロット(遺伝的起源による対象空間であるコンポーネント空間)です。一方に表示できるものはすべて、もう一方にも表示できます。写真は同一であり、互いに45度だけ回転します(この特定のケースでは反射します)。それは変数v1とv2のPCAでした(標準化されたため、分析されたのはrでした)。写真の黒い線は軸としての変数です。緑/黄色の線は軸としてのコンポーネントです。青い点はデータクラウド(対象)です。赤い点は、点(ベクトル)として表示される変数です。

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


1
+1面白いイラスト。ところで、2番目の観測はデータのアーティファクトです。最初のケースでは相関が完全であり、2次元の固有空間が得られたため、方向が変わりました。(これは実際のデータでは非常にまれです。通常、データベースの間違いが発生し、1つの変数が別の変数の線形再表現であることを意味します。)ソフトウェアはその空間の任意の直交基底を自由に選択できました ほんのわずかな相関があれば、この縮退は取り除かれただろう。したがって、この再定位現象を過剰に解釈していると思います。
whuber

@whuber、多分私はあなたを理解していません。どのような「完璧な」相関関係ですか?r bw X1およびX2は.003でした。そして、例えば.503のように、どんなものでもかまいません。これは、プロットの2つの赤いベクトルの角度bwのcosです。rが何であれ、最初のPCは常に二等分線であり、2つの変数のみが分析されます。あなたのメモThe software was free to choose any orthogonal basis for that space, arbitrarily変数空間の丸い雲に適用されると思います(つまり、回答の最初の図のようなデータ散布図)が、プロットの読み込みは対象空間であり、ケースではなく変数がポイント(ベクトル)です。
ttnphns

1
R5

相関を使用しました(マトリックスと、赤ベクトルの長さが本質的に同じであることに注意してください)。はい、対象空間n軸(対象)とp点(変数)を持つtupsy-torvey散布図です。もちろん、すべてのnp次元は冗長であり、p変数のセットはp次元の対象空間にプロットできますが、これは変数空間に変換しません!答えに写真を追加します。
ttnphns

5
+1、追加の貢献、@ ttnphnsに感謝します。これは、私が元々かなり単純な質問だと思っていたものから、非常に有益なスレッドに変わっています。
GUNG

4

論文の詳細がなければ、この相関性の高い変数の破棄は、計算能力やワークロードを節約するためだけに行われたと推測します。PCAが高度に相関する変数に対して「壊れる」理由はわかりません。PCAによって検出されたベースにデータを投影し直すと、データが白くなります(または相関が解除されます)。これがPCAの背後にある全体のポイントです。


4
@ttnphnsによるヒントを読みましたか?PCAは、固有ベクトル(説明する)だけでなく、固有値(無視する)にも注意を払います。固有値を使用して、保持するコンポーネントと削除するコンポーネントを決定するため、これは重要です。
whuber

2
@whuberはい...はい、今手に入れたと思います。したがって、本質的に、より多くの相関変数は特定の固有ベクトル(方向)を過度に強調し、多くの相関変数がある場合、より多くの過度に強調された「偽の」方向があり、「元の」固有ベクトル/方向をかき消しますそうでなければ、簡単に見られます。私はあなたを理解していますか?
スペイシー

2
それはかなり近い、モハメッド。現実には、相関する変数のセットがいくつかの主成分(固有ベクトル)に「ロード」される可能性があるため、そのようなセットから多くの変数を含めると、いくつかの固有ベクトルの重みが異なるため、すべての固有ベクトルの方向も変わります。
whuber

1

私の理解では、PCAは直交するベクトルを出力するため、相関変数は問題ありません。


5
そのとおりですが、変数を事前に破棄するかどうかに直交性が関係している理由を説明していただけますか?
whuberの

-1

まあ、それはあなたのアルゴリズムに依存します。高度に相関した変数は、悪条件のマトリックスを意味する場合があります。それに敏感なアルゴリズムを使用する場合、それは理にかなっているかもしれません。しかし、私は、固有値と固有ベクトルを抽出するために使用される最新のアルゴリズムのほとんどが、これに対して堅牢であることを言っています。相関の高い変数を削除してください。固有値と固有ベクトルは大きく変化しますか?もしそうなら、悪条件が答えかもしれません。高度に相関した変数は情報を追加しないため、PCA分解は変更されません


4
残念ながら、PCAはありません変更:それはほとんど保証されます。
whuberの

1
@whuberうわー、大量の応答、そして非常に有益です。私のコメントで申し訳ありませんが、それは完全に間違っていました。私の悪い。ところで非常に有益な答え
Juancentro

4
私は完全に間違った答えから最も多くを学びます。Juancentro-特に私自身のものです。@ttnphnsがコメントを残すまで、私はあなたの考えに似ていました。
whuber

-1

使用する主なコンポーネントの選択方法によって異なりますか?

固有値が1を超える主成分を使用する傾向があるため、影響はありません。

そして、上記の例から、スクリープロット法でさえ、通常正しい方法を選択します。エルボーの前にすべてを守ってください。ただし、単純に「支配的な」固有値を持つ主成分を選択すると、誤った方向に進むことになります。しかし、それはがれきプロットを使用する正しい方法ではありません!


5
クリス、サイトへようこそ。残念ながら、これらのアドホックな手順はどちらも特に防御できません。最初のケースでは、あなたがすべてのあなたのデータの形状を変更することができませんでしたし、選択から行くことに注意してくださいすべて選択していないにそれらのをどれも(単に定数ですべてを乗じて)それらのを。
枢機
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.