[ML] 차원 축소 - 주성분 분석 (PCA)

juyeon lee·2023년 4월 10일
0

Machine Learning

목록 보기
9/11
post-thumbnail

1. 차원의 저주


그림에서 알 수 있듯이 차원이 증가할수록 데이터의 밀도는 떨어지며 빈 공간이 생긴다.
데이터의 밀도는 차원이 증가할수록 희소(sparse)해진다.

데이터 학습을 위해 차원이 증가하면서 학습 데이터 수가 차원의 수보다 적어져 성능이 저하되는 현상

차원이 증가할수록 객별 차원 내 학습할 데이터 수가 적어지는 현상 발생
즉, 차원이 증가함에 따라서 모델의 성능이 안 좋아지는 현상을 의미한다.

무조건 변수의 수가 증가한다고 해서 차원의 저주 문제가 있는 것은 아니다. 예를 들어 관측치 개수는 200개인데 변수는 7000개인 경우처럼 관측치 수보다 변수의 수가 많아지면 발생한다.

1.1 차원이란?

차원의 개수 = 변수의 개수
예를 들어, 데이터 내에 4개의 독립변수들이 하나의 공간에 표현되기 위해서는 공간이 4차원이 되어야 한다.
따라서 변수가 많을수록 차원이 증가하며 데이터가 표현해야하는 공간은 복잡해진다. 이로 인해 모델의 정확도 또한 떨어질 수 있다.

1.2 차원의 수 증가

차원의 수가 증가함에 따라 공간을 적절하게 커버하는 데 필요한 데이터의 양이 기하급수적으로 증가한다.
즉, 데이터 세트가 크더라도 차원이 너무 많으면 데이터가 분산되어 분석하기 힘들고 의미 있는 결론을 도출하기 어려울 수 있다.

또한 데이터 포인트 간의 거리가 점점 무의미해진다. 차원이 증가함에 따라 공간에는 빈 공간이 생길 것이고, 이는 컴퓨터 상으로 0으로 채워졌다는 의미이기 때문에 정보가 없는 셈이다. 정보가 없으니 모델을 돌렸을 때 성능은 저하될 수 밖에 없다.

따라서 차원 증가는 데이터에서 패턴이나 관계를 식별하기 어렵게 만들고 정확한 모델이나 알고리즘을 개발하기 어렵게 만든다.

그렇다면 차원의 저주를 해결하기 위해서는?
차원을 줄인다. or 데이터를 많이 획득한다.



2. 차원 축소


위 그림처럼 3D 데이터는 3차원 공간에 표현된다. 2차원으로 줄이면 데이터를 훨씬 더 간단하게 표현할 수 있다.
고차원 데이터는 일반적으로 다양한 속성들이 존재하여 매우 복잡하고 처리하기 어렵다. 그러나 저차원으로 축소된 데이터는 시각화 및 분석 등의 작업에 훨씬 용이하다.

차원 축소란 고차원 데이터의 복잡도를 줄이는 기술로, 분석 대상이 되는 여러 변수의 정보를 최대한 유지하면서 데이터 변수의 개수를 줄이는 통계 기법이다.
차원 축소를 수행할 때 변수들 사이에 내재한 특성이나 관계를 표현할 수 있는 새로운 결합 변수를 만들어 전체 변수를 설명할 수 있어야 한다.

2.1 차원 축소의 이용

  • 다른 분석 과정을 위한 전처리 단계
  • 분석 수행 후 성능 개선 방법
  • 분석 결과 시각화
  • 텍스트 데이터에서 주제나 개념 추출
  • 이미지 및 사운드 등 비정형 데이터에서 특정 패턴 추출
  • 대상에 대한 패턴 인식

2.2 차원 축소 방법

차원 감소는 일반적으로 두 가지 방법으로 나뉜다.
첫 번째는 PCA(Principal Component Analysis)와 같은 선형 차원 축소 기술,
두 번째는 데이터의 구조와 패턴을 새로운 저차원 공간에 매핑하는 비선형 차원 감소 기술이다. (eg.t-SNE, Isomap)



3. 주성분 분석 (PCA)

가장 대표적인 차원축소 알고리즘으로, 가능한 한 많은 정보를 유지하면서 대규모 데이터 세트의 차원을 줄이기 위해 통계 및 데이터 분석에 사용되는 기술이다. 여러 차원의 변수를 대표하는 차원의 주성분을 생성하여 변수 간의 상관관계가 있는 고차원 데이터를 저차원 데이터로 변환하여 데이터의 복잡성을 줄이고 데이터 분석의 성능 효율성과 효과성을 높인다. 간단히 말해서 PCA는 큰 데이터 세트를 가져오고 데이터에서 패턴을 찾아 더 간단한 방식으로 표현할 수 있다.

이러한 방식으로 데이터의 차원을 줄임으로써 PCA는 데이터를 단순화하여 보다 쉽게 ​​분석하고 시각화할 수 있다. 이는 차원 축소변수 추출 기법으로 널리 사용되며 이미지 처리, 유전학, 금융 등의 분야에서 일반적으로 사용된다.

3.1 주성분(Principle Component)이란?

전체 데이터의 분산을 가장 잘 설명하는 성분
= 분산을 최대한 보존하는 축

3.1.왜 분산을 최대한 보존하는가?

PCA의 핵심은 데이터를 축에 사영했을 때, 가장 높은 분산을 가지는 데이터의 축을 찾아 그 축으로 차원을 축소한다.
따라서 높은 분산을 가지는 축은 데이터의 분포를 잘 설명하며 정보 손실을 최소화해서이다.
분산이 커져야 데이터들 사이의 차이점이 명확해지고, 모델의 성능 또한 좋아지기 때문이다.

위 그림에서는 데이터를 좌측 죽에 사영시키는 것이 데이터 포인트들의 분산이 크므로 왼쪽 축이 오른쪽 축보다 데이터의 원래 분포를 잘 설명한다고 할 수 있다.

3.2 원리

PCA가 어떤 과정을 통해 차원을 축소시키는지 알아보자.

  1. 학습 데이터셋에서 분산이 최대인 축(axis)를 생성한다.
  2. 이렇게 찾은 첫번째 축과 직교(orthogonal)하면서 분산이 최대인 두 번째 축을 찾는다.
  3. 첫 번째 축과 두 번째 축에 직교하고 분산을 최대한 보존하는 세 번째 축을 찾는다.
  4. 1~3과 같은 방법으로 데이터셋의 차원(특성 수)만큼의 축을 찾는다.

3.2.1 축(=주성분)은 어떻게 찾는가?

여기서 고유벡터와 고유 값의 의미를 알아야한다.

  • 고유벡터 = 그 행렬이 벡터에 작용하는 주축 방향
    "데이터가 어떤 방향으로 분산되어 있는가?"
  • 고유 값 = 고유벡터 방향으로 "얼마만큼의 크기로 벡터 공간이 늘어나는가?"
    즉, 고유값이 고유벡터의 크기를 나타내고 입력 데이터의 분산을 나타낸다.

따라서 고유 값(=분산)이 큰 순서대로 고유 벡터를 정렬하면 결과적으로 중요한 순서대로 주성분을 구하는 것이 된다.

공분산 행렬과 벡터 이야기는 너무 길어지니 생략한다..

3.3 특징

  • 데이터가 가우시안 분포(Gaussian Distribution)를 따른다고 가정한다.

  • 데이터의 분산을 최대화하는 방식으로 주요 구성 요소를 선택하기 때문에, 데이터에서 구성 요소들이 노이즈(noise)나 이상치(outliers)와 같은 잡음 요소를 포함하고 있을 경우, PCA의 결과가 더욱 부정확해질 수 있다.

  • PCA를 적용하기 전에는 전처리(preprocessing) 과정이 필요
    예를 들어, 변수 간의 스케일이 서로 다른 경우, 스케일 조정이 필요하다. 그렇지 않으면, 큰 스케일을 가진 변수들이 주요 구성 요소를 대부분 차지하게 되어, 분산을 고르게 반영하지 못하고 결과에 영향을 줄 수 있다.


4. PCA 이외의 차원축소 기법

  • 선형 판별 분석(LDA)
    데이터를 최적으로 분류하여 차원을 축소
    정량적 자료로 측정된 독립변수들을 이용하여 명목형 자료로된 종속변수의 집단 구분을 예측하는데 활용된다.

  • 특이값 분해 (SVD)
    행렬 분해 기법 사용
    PCA와 달리 행과 열의 크기가 다른 M*N 차원의 행렬 데이터를 적용하여 데이터 값을 추출하고 이를 통해 주어진 데이터를 효과적으로 축약할 수 있다.

  • 요인분석 (Factor Analysis)
    데이터 안에 관찰할 수 없는 잠재적인 변수가 존재할 때, 모형을 세운 뒤 잠재 요인을 도출하고 데이터의 구조를 해석하며, 변수들의 상관관계를 고려하여 서로 유사한 변수들끼리 묶어주는 방법

  • 독립성분 분석 (ICA)
    다변량의 신호를 통계적으로 독립적인 하부 성분으로 분리
    비정규 분포를 따르는 기법
    데이터의 상관관계뿐만 아니라 더 높은 차수의 상관관계도 제거 가능
    차원들의 관계를 독립적으로 변환시키는 기법

  • 다차원 척도법 (MDS)
    데이터에 내재된 구조를 찾아내어 자료를 함축적으로 표현하는 분석기법
    개체들 사이에 유사성과 비유사성을 측정해 개체들 사이의 집단화를 시각적으로 표현

0개의 댓글