BookmarkSubscribeRSS Feed

[SAS 프로그래밍] PCA, 주성분 수를 결정하는 여러가지 PCA방법론

Started ‎06-17-2020 by
Modified ‎06-17-2020 by
Views 304

이번 포스팅에서는 여러가지 주성분 분석 기법들과 그 차이에 대해 알아보겠습니다. –PCA(principle components analysis)

 

 

 

Introduction

 

여러 개의 변수를 가진 데이터는 고차원 데이터로 불리는데이는 저차원 데이터에 비해 계산의 과정이나 효율에 있어서 여러 가지 단점들을 가지게 됩니다우리는 주성분 분석을 통해 여러 변수를 한 변수로 축약하거나 차원을 줄임으로써 이 문제를 해결합니다주성분의 수를 결정하는 것 또한 하나의 이슈가 될 수 있는데이번 포스팅에서는 주성분의 수를 결정하는 세 가지 규칙들을 비교함으로써 그 방법과 차이를 알아 보겠습니다.

 

 

 

세 가지의 기법으로는,

 

  1. Broken-stick Model

  2. Scree plot

  3. Average of Eigenvalue

 

를 사용할 것 입니다.

 

 

 

사용할 데이터는 “proc princomp”의 도움말에 나와있는 Crime 데이터 입니다.

 

 데이터는 1977 년에 미국 50  주에 대한 7 가지 범죄율을 나타내고있습니다.

 

데이터는 측정치는 10만명당 발생한 범죄건으로서,

 

변수명

변수뜻

Muder

살인

Rape

강간

Robbery

강도

Assault

폭행

Burglary

빈집털이

Larceny

도둑질

Auto_theft

차량절도

 

에 해당하는 건수를 나타내고 있습니다.

 

 

 

 

 

 

Methodology

 

 

방법론을 설명함에 앞서서 주성분 분석에 대해 알아보도록 하겠습니다.

 

 

 

주성분 분석이란 차원 축소의 여러 방법 중 한 가지 기법입니다.

 

1.PNG

 

 

(그림 1)

 

조금 쉬운 이해를 위해 그림을 가져왔습니다말 그대로 고차원에 있는 데이터를 데이터 구조는 그대로 두되데이터의 차원을 줄이는 기법을 말합니다주성분 분석을 짧게 한 문장으로 표현하자면,  선형 함수를 가지고 데이터가 큰 변동을 가지는 축을 생성하여그 축으로 데이터를 정사영 시키는 방법입니다여기서 간단하게 짚고 넘어갈 개념은 고유값과 고유벡터공분산 행렬입니다.  공분산 행렬의 고유벡터는 데이터가 어떤 방향으로 분산되어 있는지 나타냅니다

 

고유 값은 고유벡터에 해당하는 상관 계수에 해당하므로, 우리가 다루는 행렬이 공분산 행렬일 경우 고유 값은 각 축에 대한 공분산 값이 됩니다. 따라서 고유 값이 큰 순서대로 고유 벡터를 정렬하면 결과적으로 중요한 순서대로 주성분을 구하는 것이 됩니다. (고유벡터와 고유값, 공분산 행렬에 대해서는 ‘선형대수학’을 참조하시면 됩니다. 이 장에서는 주성분의 수를 선택하는 것이 주목적이므로 간단히 언급하고 넘어가도록 하겠습니다.)

 

 

 

 

 

 

코드로 구현해보면 먼저 데이터를 생성하고,

 

OWGkiABEhgEwHg6dBNlqiGBEiABDYQ4H2rDRCpggRI4AIC7FYXQKYJEiCBDQT_Hwz_x97mygW6AAAAAElFTkSuQmCC.png

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

_NmICywYnVdAAAAAElFTkSuQmCC.png

 

(코드1)

 

(ods graphics on)은 그래프를 생성하는 옵션 문입니다.

 

 

 

 

Su7JAbJvmu5Lxx4CwEIQAACD0uA_4gPG3o6DgEIQAACNwQWUUT2mpJlEIAABCCwOwJRRSy32OyuqzgMAQhAAAIQcAicFVEEL_2Ua.png

 

(코드2)-(id state; 문장은 그래프에 주 이름을 함께 출력하기 위한 코드입니다일시적인 오류로 빨간색이 되었지만문장이 있을 때와 없을 때의 결과값을 비교하시면 될 것입니다.)

 

여기서 주목해야 할 PROC PRINCOMP 문이 있습니다우리는 이 포스팅에서 PROC PRINCOMP를 통한 주성분 분석을 실시할 것입니다. PROC PRINCOMP에는 우선적으로 eigenvalue와 공분산 행렬을 출력하는 기능을 가지고 있습니다plots= score(ellipse ncomp=3문을 보면 주성분 점수로 산점도를 찍고, 타원형 옵션과 성분의 개수를 3개로 지정한 것을 알 수가 있습니다.

 

상관계수 매트릭스는 각 변수 별로 어떤 상관관계가 있는지를 보여줍니다. 여기서는 특별한 해석 요소가 없기 때문에 생략하겠습니다.

 

 

 

 

 

AfqVeMzZ7OQAAAABJRU5ErkJggg__.png

 

(그림2)

 

이는 PROC PRINCOMP의 기본으로 출력된 상관행렬의 고유값 측정치 입니다위에서 언급했다시피 고유값이 높다는 것은 그 변동이 큰 것임을 알 수 있습니다, Eigenvalue값이 높을수록 해당 구성요소가 데이터를 잘 설명한다고 볼 수 있습니다. Cumulative 열을 보면 각 고유값들의 합이 얼만큼의 변동을 설명하는가를 볼 수 있습니다여기서는 4번째 고유값까지의 누적이 0.9137, 즉 전체 변동의 91퍼센트를 설명하는 것을 알 수가 있습니다.

 

 

 

 

 wdr69pL93M_MQAAAABJRU5ErkJggg__.png

 

(그림3)

 

그 다음은 PROC PRINCOMP에 의해 계산된 선형조합의 계수들입니다주성분 분석이란 데이터를 포함한 축약된 성분을 만드는데여기서는 Prin1…..7을 계산된 주성분이라고 볼 수 있습니다. Prin1 범죄율을 나타내는 성분으로서 모든 선형조합이 양의 계수를 가짐을 알 수 있습니다. Prin2는 살인,강간,폭력은 음의 계수나머지는 양의 계수임을 보아 Prin2 성분은 재산범죄와 폭력 범죄의 대비율을 보여준다고 해석할 수 있습니다.  구성요소 Prin3~7 에 대한 해석은 분명하지가 않습니다.

 

 

 

 

 

2.PNG

 

(그림5)- 주성분으로 계산된 각 변수들의 선형조합입니다주성분의 성질에 따라 다른 계수를 가지며 각 성분이 의미하는 바 또한 다른 의미를 가지고 있습니다.

 

 

 

그러면 다음 단계로는 이 구성요소로 계산된 값들을 어떻게 활용할 지에 대해 알아 보겠습니다.

 

위에서 실행한 PROC (코드2) plots= score(ellipse ncomp=3)에 의해

 

 

3.PNG

 

(그림6)

 

그래프가 생성되었습니다위를 해석해보면, Neveda주의 경우 범죄율은 극히 높고재산범죄와 폭력범죄의 비율은 비슷한 것으로 볼 수 있습니다또한 Mississippi주의 경우는 범죄율도 평균보다 낮지만재산범죄에 비해 폭력범죄가 만연히 발생한다는 것을 볼 수가 있습니다.

 

 

 

 

 

지금 까지는 주성분 분석의 전반적인 레파토리와 출력값을 보는 방법에 대해 살펴보았습니다.

 

그러면 조금 더 세부적으로주성분의 수를 결정하는 방법에 대해 알아보겠습니다.

 

 

 

Details.

 

1. scree plot

 

5k7Vtjwx4MgAEwsAsGLhUlyV9SydfXL1IfWRb5ixRQUlVXT3eROUCCATAABoIM3LfeqUI8nT4nTVSyaB2RQbKvWgZBwAwMgAEwsG.png

 

(코드3)

 

위의 주성분 코드와 비슷하지만조금 더 간단화 하여 실행 시킬 수 있습니다.

 

 

4.PNG

 

(그림7)

 

가장 기본적으로 사용되는 (Default) Scree plot 방법입니다이는 각 변수들의 Eigenvalue 값에 의해 꺾은선 그래프가 그려져 있습니다오른쪽을 보시면 eigenvalue의 합들에 대한 비율이 누적그래프로 나와있습니다이는 (그림2)를 그래프화 한 것이라고 볼 수 있습니다여기서 Scree plot에 의한 주성분 수 선택이란, ‘Ellbow’라는 개념을 확인하여야 합니다팔꿈치라고 해석되는 이 개념은 Scree plot 에서 꺾인점을 찾는 것이라고 생각하시면 됩니다위 데이터에서는 주성분 2와 주성분 4에서 그래프가 꺾인다는 것을 볼 수 있습니다주성분 수를 2개로 하거나 4개로 하는 것이 효율적인 것이라고 볼 수 있습니다실제로 (그림2)의 누적값을 확인 했을 때도주성분이 2개 일 때는 총 변동의 76퍼센트를, 4개 일 때는 91퍼센트를 설명하는 것을 알 수가 있습니다.

 

 

 

2. Broken Stick Model

 

Broken Stick의 모델은 새로운 예상비율 그래프를 만들어 그 예상 비율보다 높은 성분만을 주성분으로 채택하는 방법입니다. ‘부러진 막대라는 개념은 예상비율 그래프를 만드는 방법론에 의해서 지어진 이름입니다.

 

 

ULggIAjZHQEjY5hNAui8ICALmIiAkbC7_UrsgIAjYHAEhYZtPAOm_ICAImIuAkLC5_EvtgoAgYHMEhIRtPgGk_4KAIGAuAkLC5uI.png

 

(그림8)-Niche apportioment model-(broken stick모델로부터 확장된유사한 모형, broken stick model의 그림을 찾을 수가 없어서 가져왔다.)

 

위 막대 나눔 같이 총 변동을 1이라고 두면 한 구성요소가 추가 될 때 마다 1, 1/2, 1/3 …씩 설명한다고 판단합니다그 결과의 합들로 예상비율 그래프를 작성합니다위의 데이터 같은 경우는 고유값이 7개이므로위 데이터의 예상비율 그래프의 점은 broken stick model (1/p)Σ(1/i) 따른다..

 

E1 = (1 + 1/2 + 1/3 + 1/4 + 1/5 + 1/6 + 1/7) / 7 = 0.37, (주성분을  개로 보았을 )
E2 = (1/2 + 1/3 + 1/4 + 1/5 + 1/6 + 1/7) / 7 = 0.228, (
주성분을  개로 보았을 )
E3 = (1/3 + 1/4 + 1/5 + 1/6 + 1/7) / 7 = 0.156. (
주성분을  개로 보았을 )

 

Etc…

 

예상비율의 계산 값은 위와 같습니다.

 

 

 

코드를 사용하여 출력해 봅시다.

 

5.PNG

 

(코드4)

 

여기서 주의 할 점은 Broken Stick 의 예상 비율 값과 기존그관찰 값을 비교하려면 ‘PROC IML’문을 쓰셔야 한다는 것입니다. IML에 대한 자세한 사항은 생략하고 간단히 코드만 참조하시기 바랍니다.

 

5HifwZM5u6IbL8JiwAAAABJRU5ErkJggg__.png

 

실제 SAS의 출력 값 또한 주성분으로 채택된 주성분은 한 가지 인 것을 알 수가 있습니다.

 

 

 

 

 

 

 

 

 

OlxhqhohQAgQAlUQ_D8n6LlaFix10AAAAABJRU5ErkJggg__.png

 

(그림9) 예상비율 그래프와 관찰된 eigenvalue proportion 그래프의 비교

 

Broken stick model 예상 비율 값보다 관찰 비율 값이 높이 측정된 eigenvalue 만을 주성분으로 채택하는 것 이 관건입니다위의 그래프는 첫 번 째 주성분에서만 예상비율 그래프보다 관찰 값이 높으므로첫 번 째 요소만 주성분으로 채택합니다.

 

 

wdGMqReuh9VSQAAAABJRU5ErkJggg__.png

 

(코드5) 이는 (그림 9)의 그래프를 출력하는 SAS 코드입니다.

 

 

 

 

 

 

 

 

 

3. Average of Eigenvalue

 

평균 고유값 방법은 쉽게 말해서 평균 eigenvalue 값보다 높은 eigenvalue의 주성분을 유지하는 방법입니다.

 

 

Z4oPkYTZ1AAAAAASUVORK5CYII_.png

 

위의 코드는 평균보다 proportion이 높은 것을 유지합니다밑의 코드는 Jolliffe (1972)이 제안한 평균의 0.7배보다 높은 값을 가지는 성분을 유지하는 코드입니다조금 더 완화된 코드라고 볼 수 있습니다.

 

zOZkQchrQ5gX2h1zGZ7cGAzr62qwEGrYzbbgwObeW1V9RcrWUmpwwZtYAAAAABJRU5ErkJggg__.png

 

 

출력값은 매우 간단합니다평균보다 큰 고유값은 두 개평균의 0.7배보다 높은 고유값은 주성분을 세 개로 유지합니다.

 

 

 

 

 

 

Summary

 

우리는 오늘 여러가지 방법을 통해 주성분의 수를 결정하는 법을 알아보았습니다각자의 방법론에 따라 유지하는 주성분 수가 다르다는 것 또한 확인하였습니다. (scree plot-2 또는 4 broken stick-1 average of eigenvalue – 2 또는 3위의 세가지 방법들 중 무엇이 가장 좋고 옳은지는 말 할 수 없습니다다만 위의 방법론들은 가이드 라인을 제시할 뿐어떤 기법을 선택하느냐는 전적을 통계전문가의 책임입니다오늘 포스팅이 주성분 분석에 대해 도움이 되셨기를 바라며시간이 되신다면 한번은 직접 실행 해보시기 바랍니다감사합니다.

 

 

 

 

 

Reference :

 

 

 

Sas 블로그-https://blogs.sas.com/content/iml/2017/08/02/retain-principal-components.html

pca개요 -http://blog.naver.com/jies25/221022725106

도서 - "비지니스 인텔리전스를 위한 데이터마이닝",이앤비 플러스

 

Version history
Last update:
‎06-17-2020 09:34 PM
Updated by:
Contributors

SAS Innovate 2025: Register Now

Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!

Article Labels
Article Tags