Snoopy [K-mooc] 8. Principal Componet Analysis
강의 내용 정리하기/실습으로 배우는 머신러닝

[K-mooc] 8. Principal Componet Analysis

Sooyoon Jeong 2022. 11. 22.

성신여대 김영훈 교수님의 K-MOOC 실습으로 배우는 머신러닝 강의 내용을 바탕으로 포스팅하였습니다.


1차시: PCA 소개

1. 비지도학습

비지도 학습은 y값(target, label, 정답)이 없는 케이스에 대한 학습으로

함수를 적용시켜 X값(input) 자체에 내재하고 있는 정보들을 어떻게 찾고 추출할 것인지를 중점적으로 살펴보게 된다.

 

대표적인 예시: 차원축소, 군집화

 

가. 차원숙소(dimensionality reduction, feature extraction)

Feature Extraction 이라고 표현하기도 하며,

우리가 다루고 있는 변수들을 어떻게 하면 더 요약적으로 잘 표현할 수 있는가에 대한 것이다.

 

지도학습에서는 y값과 feature들의 관계를 고려했었는데, y값이 없는 경우에는 어떻게 해야할까?

정답은 바로 X 값 자체에 내재되어 있는 정보를 활용하는 것이다.

 

feature extraction은 현재 y는 잘 모르겠지만,

변수 자체와 변수들 간의 상관성 그리고 상관관계에 있는 정보들을 어떻게 잘 가공하여 어떠한 유용한 정보로 변환할 것이지에 대해 고민하게 된다.

 

그리고 이러한 feature extraction 또는 차원축소의 기법으로 널리 쓰이고 있는 것이 바로 주성분 분석이다.

 

나. 군집화 (clustering)

X 데이터에서 존재하는 그룹을 발견하고 유사한 관측치들끼리 그룹을 지어주는 것

즉, 입력 데이터 자체적으로 내제되어 있는 정보를 어떤 그룹으로 나누고 그룹을 어떻게 발견할 것인지에 대한 것이다.

 

그럼 차원축소에서 가장 널리쓰이고 있는 기법인 PCA부터 차례대로 배워보도록 하자.

 

2. PCA (주성분 분석)

가. 정의

PCA는 자료에 중복된 정보가 많은 경우 자료의 원래 차원보다 더 작은 차원으로 자료에 내재한 정보를 설명할 수 있다는 생각에서 출발한다.(=차원축소)

 

예를들어 4차원 등 고차원의 데이터가 있지만

동일한 데이터가 들어가 있어서 2차원만으로도 동일하게 표현이 가능하다고 생각이 든다면

굳이 4차원에 데이터를 쓸 필요 없이 2차원(더 작은 차원)에 데이터를 표현하는 것이다.

 

현실 세계에선 완벽하게 동일한 데이터가 들어있기는 어렵다.

그렇지만, 상관관계가 큰 데이터(혹은 변수)들은 존재할 것이다.

 

해당 변수들의 상관성을 고려하여 최대한 핵심적으로 설명이 가능하도록 변수의 축을 찾아주고

해당 변수의 축으로 데이터를 사영시켜 더 낮은 차원에서 동일한 정보를 최대한 손실 없이 표현하고자 하는 것이 바로 차원축소이며 이러한 차원축소를 구현하는 방법 중 가장 대표적인 것이 바로 주성분 분석이다.

 

주성분분석이란?

처음 몇몇개의 차원이 정보를 최대한 많이 설명할 수 있도록 자료를 새로운 방향에서 바라보도록 하는 방법

즉, PC (Principal Component) 라고 하는 기준 축들을 잘 찾아서 그걸 가지고 데이터를 다시 표현하는 기법이다.

 

특징

각각의 성분들은 다른 성분과는 상관이 없고(각각의 축 기준이 수직이다.)

이는 이후 회귀분석과 같은 종속관계 분석을 할 때 다중공선성을 없애는 이점을 준다.

 

필요성

만약 4차원, 5차원, 10차원, 심지어 몇 백만 차원의 데이터가 있는 경우 우리는 그림 조차 그려볼 수 없을 것이다.

이런 상황에서 우리는 해당 데이터의 분포적인 특성, 배치적인 특성 등 데이터가 가지고 있는 정보를 최대한 손상시키지 않고 차원을 낮추는 것이 필요할 것이고 이런 경우 PCA가 효과적일 것이다.

 

나. PCA 활용

PCA를 사용하여, 3차원의 정보를 각각 2차원, 1차원으로 축소하였다.

출처: 김영훈 교수님 강의 자료
출처: 김영훈 교수님 강의 자료

 

 

아래 숫자 이미지는 MNIST로

0에 가까울 수록 검정색에 가깝고, 255에 가까울 수록 흰색에 가깝게 세팅이 되어 있고

셀들을 픽셀 영역으로 쪼갠 것이다.

 

보통 MNIST 데이터의 경우 28*28로 하나의 이미지당 총 숫자의 개수가 750개 정도

즉, 750차원 정도로 구성되어 있는 것이다.

 

750차원의 벡터는 너무 고차원이라 분포를 파악하기 어렵고

저차원(아래 그림에서는 2차원)으로 사영시킨 다음에 ploting하여 분포를 파악한 것이다.

 

출처: 김영훈 교수님 강의 자료

따라서 pricipal component를 잘 찾아서 사영시켜주게 되면 ploting을 할 수 있고 분포를 확인할 수 있게 된다.


2차시: PCA 원리

1. PCA (주성분 분석) 방법 파헤치기

PCA는 PC (Principal Component) 라고 하는 기준 축들을 잘 찾고 기준 축에 데이터를 다시 표현하는 기법이다.

그렇다면 PC를 찾는다는 게 무슨 의미일까?

또 변수들 간의 어떠한 정보를 반영하면 PC 축을 잘 찾을 수 있을까?

 

가. PC(기준 축) 찾는 방법

 

1️⃣ 상관관계 => 변수의 중요도

입력되는 데이터만 있는 경우 여러 가지 정보를 추출해볼 수 있겠지만, 그 중에서 가장 핵심은 바로 상관관계이다.

 

불필요한 정보의 유무, 필요하고 불필요한 정보를 구분하는 기준 등은

두 변수 간의 상관관계를 구해보고 그 상관성의 크기를 고려해본다면 보다 잘 파악할 수 있을 것이다.

 

예를들어, 국어 점수와 수학점수의 상관성이 높다고 가정해보자.

그럼 굳이 국어점수와 수학점수 모두를 사용할 필요 없이

국어점수 또는 수학점수 하나만 사용해도 될 것이다.

 

2️⃣ 분산 => 정보의 양

데이터의 분포에서 분산이 큰 축을 기준으로 많은 양의 정보가 들어있다고 생각할 수 있다.

 

관측치들을 구분할 수 있는 기준의 척도는 무엇일까?

그 기준의 척도 분산이 큰 축을 사용한다면, 데이터가 넓게 분포하고 있어서 모든 데이터들을 잘 구분할 수 있는 정보가 되어줄 것이다. 반대로 분산이 작은 축을 기준으로 사용한다면 사람들이 그렇게 크게 변동을 보이지 않아서 데이터를 구분하는데 있어서 큰 의미가 있지 않을 것이다.

분산이 큰 축 = 어떤 정보의 양 측면에서 중요한거구나

 

극단적으로 상관관계가 1인 상황이라면,

특정 축 위에만 관측치들이 몰려 있을 것이고 그 외에 다른 축으로는 전혀 데이터를 구분할 수 엇는 상황이 될 것이다.

상관관계가 1이라고 가정하면 관측치들은 빨간색 위에 몰려있을 것이며,

기준 축을 빨간색으로 설정하는 것이 옳다. 만약 파란색을 기준축으로 설정한다면 데이터를 전혀 구분할 수 없을 것이다.

 

따라서 전체 데이터를 기준으로 봤을 때,

분산이 큰, 퍼져 있는 정도가 큰 축을 찾는 것이 중요하다고 할 수 있다.

 

3️⃣ 종합

따라서 변수 간의 상관관계가 가장 중요하며, 상관관계에는 변수의 중요도에 대한 정보가 담겨져 있다.

변수 간의 상관관계의 기본이 되는 공분산 행렬을 계산하면 변수가 가지고 잇는 정보의 양을(분산) 척도할 수 있는 정보들이 나온다고 결론내릴 수 있다.

 

출처: 김영훈 교수님 강의 자료

공분산행렬과 correlation을 통해

어떤 방향으로 분산이 크구나 등을 알 수 있고 변수의 정보량이 많은 축을 찾는데 활용할 수 있다.

 

나. 데이터 사영

위 처럼 길이가 1이고 분산을 가장 잘 설명하는 축 방향 벡터를 정의한다.

분산을 가장 잘 설명한다는 것은 해당 축으로 데이터를 사영시켰을 때 사영된 데이터의 분산이 가장 커짐을 의미한다.

Z1 = Xu1 이라고 하면, Z1은 u1에 사영된 데이터의 값들로 이루어진 n차원의 벡터가 된다.

우리는 이 사영된 데이터 들의 분산을 첫 주성분에 의해 설명되는 분산이라고 생각할 수 있다.

 

그 다음 u1축에 사영된 변수로 설명되지 않은 분산의 나머지 부분을 설명하는 두 번쨰 선형결함을 고려한다.

위는 u1과 직교하고 Z2 = Xu2로 정의할 수 있다.


3차시: PCA 적용

pca를 계산하는 방법에 대해 알아보도록 하겠다.

1. 선형 변환 행렬 이용

n: 관측치의 개수

p: 변수의 개수

k: projection 개수

댓글