
[Weekly 질문]
Q1) 데이터 간의 유사도를 계산할 때, feature의 수가 많다면(예: 100개 이상), 이러한 high-dimensional clustering 문제를 해결하기 위한 방법들을 설명해 주세요.
Q2) 고유값(eigenvalue)과 고유벡터(eigenvector)에 대해 설명해 주세요. 이들이 데이터 분석에서 왜 중요한지 구체적인 예를 들어 설명해 주세요.
오늘은 이 두 가지 질문을 차원축소와 PCA라는 분석 방법을 중심으로 설명해보려고 한다.
데이터에서 차원은 변수를 의미한다.
그래서 feature가 많다, high dimensional하다는 의미는 데이터에 포함된 변수가 많다는 뜻으로 바꾸어 말할 수 있다. 데이터에 변수가 많다면 정보가 많은 것이니 좋은 게 아닐까?
데이터에 차원이 많아질수록 데이터를 볼 수 있는 정보가 많아지는 것도 맞지만 분석하기가 어려워지는 역설이 발생한다. 차원이 많아지면 데이터를 표현하는 축이 많아진다는 의미이고 1차원,2차원,3차원, ... n차원으로 데이터를 표현하게 된다.
그 과정에서 데이터와 데이터 간의 거리는 점점 더 멀어지는데 그렇게 되면 데이터의 연관성을 찾기 어려워지기 때문에 (특히 거리기반 클러스터링으로는 더욱더) 데이터를 분석하는 데에 어려움이 생긴다.
이를 차원의 저주라고 부른다.
차원의 저주를 해결하기 위해서 차원축소라는 방법을 사용한다.
차원축소는 말그래도 차원을 축소하는 것이다. 고차원의 데이터를 저차원으로 축소하여 분석을 용이하게 만드는 것이다.
이 포스팅에서는 차원축소의 일환으로 PCA를 다뤄보려고 한다.
PCA
차원들의 특성을 가장 잘 설명해주는 주성분(Principal Component)를 이용하여 차원을 축소하는 방법
PCA에서는 주성분을 찾는 방법은 데이터의 분산을 가장 잘 반영하는 축을 새로 생성하는 것이다.
데이터의 흩어짐 정도(분산)는 정보값이다.
예컨대 300명의 학생의 신발 사이즈를 모아둔 데이터 값이 있다고 하자.
내가 이 데이터를 활용하는 입장이라면 이 데이터에 대해서 가장 많은/적은 사이즈 혹은 대체로 어느정도의 신발 사이즈인지 등의 '분포'를 알고 싶을 것이다. 이처럼 분산은 데이터가 어떤식으로 분포되어 있는지를 보여주는 정보값이기 때문에 이를 가장 잘 반영하는 값을 주성분으로 뽑아 사용하는 것이다.
PCA는 분산은 최대한 담아내면서 차원을 축소하기 위해 고유값과 고유 벡터를 찾아내는 작업이다.
고유 벡터: 고유값의 방향
고유값: 스칼라 값
고유값을 통해서 각 주성분의 분산 설명력을 계산할 수 있기 때문에. 고유 벡터 같은 경우에도 변환된 주성분의 축의 방향을 나타낸다.
벡터 https://wikidocs.net/214400
고유값과 고유 벡터 https://bigdatajessie.tistory.com/70