PCA를 수행하기 전에 상관 관계가 높은 변수를 제거해야합니까?


111

저자가 PCA를 수행하기 전에 다른 변수와의 높은 상관 관계로 인해 여러 변수를 버리는 논문을 읽고 있습니다. 총 변수 수는 약 20입니다.

이것이 어떤 이점을 제공합니까? PCA가 자동으로 처리해야하므로 오버 헤드처럼 보입니다.


26
힌트 만. 변수 중 하나에 더 많은 사본 (또는 거의 사본)을 추가하면 PCA의 결과가 어떤 방식으로 변경 될지 생각하십시오.
ttnphns 2013

@ type2 읽고있는 논문의 이름을 지정할 수 있습니까?
Amatya

답변:


123

이것은 @ttnphns의 의견에 제공된 통찰력있는 힌트를 설명합니다.

거의 상관 된 변수를 인접 시키면 PCA에 대한 공통 기본 요소의 기여도가 증가합니다. 우리는 이것을 기하학적으로 볼 수 있습니다. 점 구름으로 표시된 XY 평면에서 다음 데이터를 고려하십시오.

산포도

상관 관계가 거의없고 공분산이 거의 동일하며 데이터가 중심에 있습니다. PCA (어떻게 수행하든 상관 없음)는 거의 동일한 두 가지 성분을보고합니다.

이제 와 같은 제 3의 변수 에 작은 양의 랜덤 에러를 더해 봅시다 . 의 상관 행렬은 두 번째와 세 번째 행과 열 ( 및 )을 제외한 작은 비대 각 계수로이를 보여줍니다 .Y ( X , Y , Z ) Y ZZY(X,Y,Z)YZ

(1.0.03440180.0460760.03440181.0.9418290.0460760.9418291.)

기하학적으로, 우리는 페이지 평면에서 바로 이전 그림을 들어 올려 원래의 모든 점을 거의 수직으로 이동했습니다. 이 의사 3D 포인트 클라우드는 측면 투시도를 사용하여 리프팅을 설명하려고 시도합니다 (전과 동일한 방식으로 생성되었지만 다른 데이터 세트를 기반으로 함).

3D 플롯

점은 원래 파란색 평면에 있으며 빨간색 점으로 들어 올려집니다. 원래 축은 오른쪽을 가리 킵니다. 얻어진 경사는 또한, YZ 방향을 따라 점 뻗어 하여 배로 분산에 기여한다. 결과적으로 이러한 새로운 데이터의 PCA는 여전히 두 가지 주요한 주요 구성 요소를 식별하지만 이제는 그 중 하나가 다른 두 가지 분산을 갖습니다.Y

이 기하학적 기대는의 일부 시뮬레이션과 함께 설명됩니다 R. 이를 위해 두 번째, 세 번째, 네 번째 및 다섯 번째로 두 번째 변수의 거의 동일 선상 사본을 만들어 에서 이름을 지정하여 "리프팅"절차를 반복했습니다 . 다음은 마지막 네 변수가 어떻게 서로 관련되어 있는지 보여주는 산점도 행렬입니다.X 5X2X5

산점도 행렬

PCA는 처음 두 변수를 사용한 다음 3, ... 및 마지막으로 5를 사용하여 상관 관계를 사용하여 수행됩니다 (이러한 데이터에는 실제로 중요하지는 않지만). 주성분의 총 분산에 대한 기여도를 도표로 사용하여 결과를 보여줍니다.

PCA 결과

처음에는 거의 상관 관계가없는 두 개의 변수를 사용하면 기여도가 거의 같습니다 (왼쪽 위 모서리). 하나의 변수를 두 번째와 상관 관계를 추가 한 후 (정확한 그림에서와 같이) 여전히 두 가지 주요 구성 요소가 있으며, 하나는 다른 구성 요소의 두 배 크기입니다. 세 번째 구성 요소는 완벽한 상관 관계가 없음을 반영합니다. 3D 산점도에서 팬케이크 같은 구름의 "두께"를 측정합니다. 다른 상관 변수 ( )를 추가 한 후 첫 번째 구성 요소는 이제 전체의 약 3/4입니다 ; 다섯 번째가 추가 된 후 첫 번째 구성 요소는 전체의 거의 5/5입니다. 네 가지 경우 모두, 두 번째 이후의 구성 요소는 대부분의 PCA 진단 절차에 따라 중요하지 않은 것으로 간주됩니다. 마지막 경우에는X4고려해야 할 주요 구성 요소 중 하나 입니다.

우리는 지금 볼 수 있습니다 생각 변수를 폐기의 장점 변수의 컬렉션의 동일한 기본 (그러나 "잠재적") 측면을 측정 할 수있을 수 있습니다 거의 중복 변수는 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 개에 무엇을 사용 했습니까? 첫 번째는 손으로 그린 ​​것처럼 보입니다.
gung

14
@ gung 첫 번째 그림으로 mathematica.stackexchange.com/questions/11350/xkcd-style-graphs 의 코드 변형을 사용했습니다 . 텍스트 나 이미지에 약간의 지 터링을 추가하면 더 따뜻하고 쉽게 사용할 수있는 것으로 오랫동안 알려져 왔습니다. ( 자체는 원래 타이포그래피에 대한 심도 깊은 연구를 통해 도널드 크 누스가 디자인 한 메타 폰트 (Metafont )를 기반으로 구축 되었습니다. 산만 해져서 거기서 사용하지 않았습니다. TEX
whuber

2
그것은 매우 밝습니다. 나는 새로운 것을 배웠다.
Spacey

7
@whuber는 전문가와 같은 XKCD 플롯을 사용하여 가장 최신 통계 전문가와 같습니다.
Cam.Davidson.Pilon

2
@logan 다른 말로하면, 아닙니다. 이 글 뒷부분의 문장에주의를 기울여주십시오. "이러한 절차에 대해 수학적으로 옳은 (또는 잘못된) 것은 없습니다. 데이터의 분석 목표와 지식에 근거한 판단 요청입니다."
whuber

42

@whuber와 동일한 프로세스와 아이디어를 추가로 설명 하지만 로딩 플롯은 로딩이 PCA 결과의 본질이기 때문에 로딩 플롯과 함께 설명합니다.

다음은 세 가지 3 가지 분석입니다. 첫 번째로 과 두 변수가 있습니다 (이 예에서는 상관 관계가 없습니다). 두 번째로, 거의 의 사본 인 을 추가 과 밀접한 관련이 있습니다. 세번째로, 우리는 여전히 유사하게 2 개의 "복사본" 와 .X 2 X 3 X 2 X 4 X 5X1X2X3X2X4X5

그런 다음 처음 두 가지 주요 구성 요소의 하중 도표가 나타납니다. 플롯의 빨간색 스파이크는 변수 간의 상관 관계를 나타내므로 여러 스파이크가 밀접하게 관련된 변수의 군집이있는 곳입니다. 구성 요소는 회색 선입니다. 구성 요소의 상대적 "강도"(상대 고유 값 크기)는 선의 가중치로 제공됩니다.

여기에 이미지 설명을 입력하십시오

"복사본"을 추가하면 다음 두 가지 효과를 볼 수 있습니다.

  1. 성분 1은 점점 강해지고 성분 2는 점점 약해진다.
  2. 구성 요소의 방향 변경 : 처음에, 구성 요소 1은 과 사이의 중간에있었습니다 . 우리 가 를 추가 따라 컴포넌트 1은 즉시 변수의 방향을 따라 가도록 방향을 습니다 . 그리고 묶음에 두 개의 변수를 더 추가 한 후에 밀접하게 상관 된 변수 묶음에 구성 요소 1의 부착이 더 확실한 것은 아니라는 것을 확신 할 수 있습니다.X 2 X 3 X 2X1X2X3X2

@whuber가 이미 해냈 기 때문에 나는 도덕을 다시 시작하지 않을 것입니다.


추가 . 아래는 @whuber의 의견에 대한 답변입니다. "가변 공간"과 "주제 공간"과 구성 요소가 여기 저기 어떻게 방향을 구분하는지에 관한 것입니다. 3 개의 이변 량 PCA가 제시된다 : 첫 번째 행 분석 , 두 번째 행 분석 및 세 번째 행 . 왼쪽 열은 표준화 된 데이터의 산점도이고 오른쪽 열은로드 도표입니다.r = 0.62 r = 0.77r=0r=0.62r=0.77

산점도에서 과 의 상관 관계 는 구름의 직사각형으로 렌더링됩니다. 컴포넌트 라인과 변수 라인 사이의 각도 (그 코사인)는 해당 고유 벡터 요소입니다. 고유 벡터는 세 가지 분석에서 모두 동일하므로 세 그래프의 각도는 모두 동일합니다. 그러나 정확하게 고유 벡터 (따라서 각도)가 이론적으로 임의적 이라는 것은 사실입니다 . 클라우드는 원점을 통해 오는 직교 선 쌍이 과 의 두 구성 요소로 사용될 수 있기 때문에 완벽하게 "둥글"기 때문입니다.X 2 r = 0 X 1 X 2X1X2r=0 X1X2구성 요소로 선 자체를 선택할 수 있습니다.] 구성 요소에 대한 데이터 요소 (200 명의 주체)의 좌표는 구성 요소 점수이며 200-1로 나눈 제곱합은 구성 요소의 고유 값 입니다.

하중 그림에서 점 (벡터)은 변수입니다. 그들은 2 차원의 공간을 확장하지만 (우리는 2 점 + 원점을 가짐) 실제로 200 차원 (피사체 수) "주제 공간"이 줄어 듭니다. 여기서 빨간 벡터 사이의 각도 (코사인)는 입니다. 데이터가 표준화되었으므로 벡터의 단위 길이는 동일합니다. 첫 번째 구성 요소는이 공간에서 점의 전체 누적을 향해 돌진하는 치수 축입니다. 변수가 2 개인 경우 항상 과 사이의 이등분선입니다X 1 X 2rX1X2(그러나 세 번째 변수를 추가하면 변수가 어긋날 수 있습니다). 가변 벡터와 구성 요소 선 사이의 각도 (코사인)는 이들 사이의 상관 관계이며, 벡터가 단위 길이이고 구성 요소가 직교하기 때문에 좌표, 로딩 이외의 것은 아닙니다 . 구성 요소에 대한 제곱 하중의 합은 고유 값입니다 (구성 요소가이 주제 공간에서 방향을 최대화하도록 방향을 조정 함)

여기에 이미지 설명을 입력하십시오


추가 2. 위의 추가 에서 나는 "가변 공간"과 "대상 공간"이 마치 물과 기름처럼 호환되지 않는 것처럼 말하고있었습니다. 나는 그것을 재고해야했고 적어도 PCA에 관해 이야기 할 때 두 공간은 결국 동형이며, 그 덕분에 우리는 모든 PCA 세부 사항을 정확하게 표시 할 수 있습니다-데이터 포인트, 가변 축, 구성 요소 축, 변수 포인트,-왜곡되지 않은 단일 플롯.

다음은 산점도 (가변 공간) 및 적재 그림 (유전자 원점에 의해 대상 공간 인 구성 요소 공간)입니다. 한쪽에 표시 될 수있는 모든 것이 다른 쪽에도 표시 될 수 있습니다. 그림 은 동일 하며 서로 에 대해 45 도만 회전합니다 (이 경우에는 반사됩니다). 그것은 변수 v1과 v2의 PCA였습니다 (표준화되었으므로 분석 된 r 입니다). 그림의 검은 선은 변수를 축으로합니다. 녹색 / 노란색 선은 축과 같은 구성 요소입니다. 파란색 점은 데이터 클라우드 (대상)입니다. 빨간색 점은 점 (벡터)으로 표시되는 변수입니다.

여기에 이미지 설명을 입력하십시오


1
재미있는 그림 +1 BTW, 두 번째 관측치는 데이터의 인공물입니다. 첫 번째 경우 상관 관계가 완벽 하여 2 차원 고유 공간을 제공 하기 때문에 방향이 변경되었습니다 . (실제 데이터에서는 극히 드 rare니다. 일반적으로 데이터베이스 실수가 발생하고 한 변수가 다른 변수를 선형으로 다시 표현함을 의미합니다.) 소프트웨어는 해당 공간에 대한 직교 기반을 임의로 선택할 있었습니다. 아주 작은 양의 상관 관계 만이이 퇴화를 제거했을 것입니다. 그러므로 나는 당신이이 방향 전환 현상을 과도하게 해석한다고 생각합니다.
whuber

@ whuber, 어쩌면 당신을 이해하지 못할 수도 있습니다. "완벽한"상관 관계는 무엇입니까? r bw X1 및 X2는 .003이고; 예를 들어 .503 일 수 있습니다. 즉 것 COS 플롯에 두 개의 빨간 벡터 BW 각도. r이 무엇이든, 첫 번째 PC는 항상 이등분선이고 2 개의 변수 만 분석됩니다. 참고 사항 The software was free to choose any orthogonal basis for that space, arbitrarily가변 공간 (예 : 답변의 첫 번째 그림과 같은 데이터 산점도)의 둥근 구름에 적용 되지만 로딩 플롯은 경우가 아닌 변수가 점 (벡터) 인 주제 공간 입니다.
ttnphns

1
죄송합니다; 나는 상관 관계 가 완벽 하지 않다는 것을 의미했습니다 . 분석에서 공분산 또는 상관 관계를 사용했거나 데이터 행 또는 열을 표준화 했습니까? (아마도 오해하지만이 문맥에서 의미있는 "대상"공간과 "가변"공간 사이의 구별을 찾을 수 없습니다. 원래 기본 벡터와 데이터는 ; " ! 나는 산점도와 그것을 설명하지 않았다) :로드 줄거리는 내 시뮬레이션 (240) 치수가 될 수 "공간". 처음 두 PC에 의해 생성 된 부분 공간 상에 투사 나는 대부분의 사람들이 걸릴 것이다 믿습니다 "R5
whuber

상관 관계를 사용했습니다 (행렬과 빨간 벡터의 길이가 본질적으로 같다는 사실에 유의하십시오). 예, 대상 공간 n 축 (피험자) 및 p 점 (변수)을 가진 tupsy-torvey scatterplot입니다 . 물론, 모든 np 치수는 중복되며 p- 변수 주제 공간에 모든 p 변수 세트를 플롯 할 수 있지만, 이것이 가변 공간으로 바뀌지는 않습니다! 대답에 그림을 추가하겠습니다.
ttnphns

5
추가 기여 인 @ttnphns에 감사드립니다. 이것은 내가 처음에 상당히 간단한 질문이라고 생각했던 것에서 훌륭한 정보 스레드로 바뀌고 있습니다.
gung

4

논문의 세부 사항이 없으면 상관 관계가 높은 변수를 버리는 것이 계산 능력이나 작업 부하를 줄이기 위해 수행되었다고 추측합니다. PCA가 상관 관계가 높은 변수를 '파괴'하는 이유를 알 수 없습니다. PCA가 찾은베이스에 데이터를 다시 투영하면 데이터를 미백 (또는 상관 해제)하는 효과가 있습니다. 그것이 PCA의 핵심입니다.


4
@ttnphns의 힌트를 읽었습니까? PCA는 고유 벡터 (논의)뿐만 아니라 고유 값 (무시)에도주의를 기울입니다. 고유 값은 어떤 구성 요소를 보유하고 어떤 구성 요소를 제거할지 결정하는 데 사용되므로 중요합니다.
whuber

2
@ whuber 예 ... 예 지금 생각합니다. 따라서 본질적으로 더 많은 상관 변수가 특정 고유 벡터 (방향)를 지나치게 강조하고, 상관 변수가 많은 경우 너무 많은 강조된 '가짜'방향이있을 것입니다. 그렇지 않으면 쉽게 볼 수 있습니다. 내가 당신을 잘 이해하고 있습니까?
Spacey

2
아주 가깝습니다, 모하마드 실제로는 상관 변수 세트가 여러 주요 구성 요소 (고유 벡터)에 "로드"될 수 있으므로 이러한 세트의 많은 변수를 포함하면 여러 고유 벡터에 가중치가 부여 되므로 모든 고유 벡터의 방향도 변경됩니다.
whuber

1

PCA가 직교하는 벡터를 출력하기 때문에 상관 관계 변수는 괜찮습니다.


5
맞습니다. 그러나 직교성이 왜 변수를 미리 버릴지 여부와 관련이 있는지 설명하고 싶습니까?
whuber

-1

글쎄, 그것은 당신의 알고리즘에 달려 있습니다. 상관 관계가 높은 변수는 조건이 잘못된 행렬을 의미 할 수 있습니다. 그에 민감한 알고리즘을 사용하면 의미가있을 수 있습니다. 그러나 고유 값과 고유 벡터를 크랭크하는 데 사용되는 대부분의 최신 알고리즘은 이것에 강력하다고 말합니다. 관련성이 높은 변수를 제거하십시오. 고유 값과 고유 벡터가 많이 변합니까? 만약 그렇다면, 잘못된 컨디셔닝이 해답이 될 수 있습니다. 상관 관계가 높은 변수는 정보를 추가하지 않으므로 PCA 분해가 변경되지 않아야합니다.


4
불행히도, PCA 변경됩니다 : 거의 보장됩니다.
whuber

1
@ whuber Wow, 엄청난 양의 응답 및 매우 유익한 정보. 내 의견에 대해 죄송합니다. 완전히 잘못되었습니다. 내 잘못이야. 매우 유익한 답변 BTW
Juancentro

4
나는 완전히 잘못된 대답, Juancentro, 특히 내 자신의 답변에서 가장 많이 배웁니다. @ttnphns가 의견을 남길 때까지 나는 당신과 비슷한 생각을했습니다.
whuber

-1

사용하는 기본 구성 요소 선택 방법에 따라 다릅니다.

고유 값> 1 인 기본 구성 요소를 사용하는 경향이 있습니다. 따라서 영향을 미치지 않습니다.

그리고 위의 예에서 scree plot 방법조차도 일반적으로 올바른 것을 선택합니다. 당신이 팔꿈치 전에 모든 것을 유지한다면. 그러나 단순히 '주요'고유 값을 갖는 기본 구성 요소를 선택했다면 실수를 저 지르게됩니다. 그러나 그것은 scree plot을 사용하는 올바른 방법이 아닙니다!


5
사이트에 오신 것을 환영합니다, 크리스 불행히도 이러한 임시 절차 중 어느 것도 특히 방어 할 수 없습니다. 첫 번째 경우에 모든에서 데이터의 모양을 변경할 수 있으며, 선택에서 갈 것을 알 모든 선택하지에의를 아무도 (단지 상수 모두를 곱하여) 중입니다.
추기경
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.