# naver search confirm # markdown number and equation R 주성분 분석 //google adsense
본문 바로가기
R_데이터 분석 기술

R 주성분 분석

by 노마드분석가 2022. 4. 7.

1. 들어가며

주성분 분석(PCA : Principal Component Analysis)은 데이터에 변수가 많을 때 변수의 수를 축약하는 방법이다. <그림 1>은 세 개의 데이터를 x축(공부시간), y축(성적)으로 표현한 그래프다. 세 개의 데이터(영희, 민주, 철이)는 x축 기준으로도 분산(값 차이)이 존재하고 y축으로도 분산이 존재하는 것을 알 수 있다.  

 

[그림 1] 두 개의 변수로 표현한 데이터

 

그런데 이 데이터는 <그림 2>처럼 새로운 변수 Z1축과 Z2축을 만들어 그래프로 나타낼 수 있다. <그림 2>를 보면 사실상 Z1 축으로 데이터의 차이를 거의 다 설명할 수 있고 Z2축으로는 세 데이터의 분산(차이)이 매우 작기 때문에 Z2 변수는 세 데이터의 차이를 드러내지 않는다. 즉 필요없는 변수라고 볼 수 있다.  

 

[그림 2] 새로운 축으로 데이터 표현

이렇게 세 개의 데이터(영희, 민주, 철이)를 공부시간, 성적이라는 2개의 변수가 아니라 Z1이라는 하나의 변수로 축약해서 나타낼 수 있게 되었다.  

 

이론적으로 데이터의 분산을 가장 크게 만드는 새로운 축을 첫번째 주성분이라고 하고 첫번째 주성분과 직교하는 두번째 축을 두번째 주성분이라고 한다. 

2. R 주성분 분석 코드

iris 데이터를 이용해 R로 주성분 분석을 해보자. iris 데이터는 5개의 변수를 갖는데 5번째 변수가 "Species"로 범주형(factor) 변수다. 따라 5번째 변수를 제외한 나머지 4개의 변수(연속형 숫자)를 2개의 주성분으로 축약해서 나타내 보자. 주성분 분석에 필요한 기본 문법은 아래와 같다. 

 

princomp(데이터프레임)

 

princomp 함수를 이용해 iris 데이터의 주성분을 분석해 보자. 

 

iris_pca = iris[ , -5] #5번째 변수 제외
pca_model = princomp(iris_pca) # 주성분 분석
summary(pca_model) #분석 결과 요약 정리

 

코드를 실행하면 결과는 아래와 같다.

 

 

 

모델은 4개의 주성분을 계산하고 각 주성분이 데이터의 분산을 얼마나 설명하는지 보여주고 있다. 예를 들어 결과 중에서 제일 마지막 행은 누적 분산 비율인데 주성분1(Comp.1)이 전체 데이터 분산의 92.4%를 설명한다는 의미이다. 92.4%이면 거의 모든 분산을 주성분1로 설명할 수 있다고 볼 수 있다. 따라서 iris_pca 데이터에 포함된 4개의 변수(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width)는 주성분1 변수 하나로 축약할 수 있다는 의미다. 

 

이제 4개의 변수(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width)가 어떻게 선형 결합되어 각 주성분을 구성하는지 살펴보자. princomp 함수로 만들어진 pca_model의 부하량을 출력하면 된다. 

 

pca_model$loadings

 

 

위의 결과는 각 변수가 각 주성분에 어떻게 선형 결합되어 있는지 보여주고 있다. 예를 들어 주성분1은 다음과 같이 해석할 수 있다. 

 

Z1(주성분1) = 0.361*Sepal.Length + 0.857*Petal.Length + 0.358*Petal.Width

 

결과 출력값에서 Sepal.Width는 값이 비어있는데 0에 근사한다는 의미다. 주성분2(Z2)는 결과의 Comp.2 열을 이용해 만들 수 있다. 이제 iris_pca 데이터를 4개의 변수에서 2개의 변수로 축약한 Z1, Z2 축으로 나타내 보자. 하나의 행 데이터가 갖는 4개의 변수 값을 위의 식 (0.361*Sepal.Length + 0.857*Petal.Length + 0.358*Petal.Width)에 대입하면 첫번째 행 데이터의 Z1 값을 얻게 되고 식을 적어두진 않았지만 마찬가지로 Z2 식을 구성해서 각 변수 값을 입력하면 Z2 값을 얻게 된다. 이렇게 각 행 데이터의 Z1, Z2 값 쌍을 얻을 수 있으므로 산점도를 그려볼 수 있다. 

 

plot(pca_model$scores)

 

[그림 3] 축약된 변수(축)에 그려진 iris 데이터

 

위의 <그림 3>은 iris_pca데이터를 두 개의 축(comp1, comp2)로 나타낸 그래프다. 주성분1(comp1) 축 기준으로 분산이 크다는 것을 알 수있다. 즉 주성분1(Z1)을 기준으로 데이터가 넓게 퍼져 있어서 이 데이터는 주성분1 축 기준으로 구분된다고 볼 수 있는 것이다. 

 

관련글

 

R_요인분석(psych 패키지)

관련글 탐색적 요인분석(EFA : Exploratory Factor Analysis) 1. 기본개념 사회과학이나 심리학에서는 직접적으로 측정할 수 없는 변수를 잠재 변수(latent variable), 요인(factor), 구인(construct), 구성 개념..

diseny.tistory.com

 

반응형

'R_데이터 분석 기술' 카테고리의 다른 글

R_의사결정나무 분석(rpart)  (0) 2022.05.02
R 회귀분석  (0) 2022.04.13
R 교차표 작성  (0) 2022.04.08
R 다중공선성 VIF 값 계산  (0) 2022.04.04
wide & long 데이터 형태 전환  (0) 2022.04.04
R을 이용해 상관계수 구하기  (0) 2022.04.01
데이터 결합(join) by dplyr 패키지  (0) 2022.04.01

댓글