공부일기/Machine-Learning

주성분 분석(Principal Component Analysis, PCA)

pipiiiiii 2024. 7. 19. 02:14

주성분 분석

주성분 분석은 비지도 학습에 속해 레이블이나 목표 변수가 없는 학습 데이터만을 사용해 데이터의 구조나 패턴을 찾는다. 

쉽게 말해 주성분 분석을 이용하면 고차원의 데이터를 낮은 차원의 데이터로 바꿔줄 수 있는데, 중요한 것은 '어떻게 차원을 잘 낮추느냐'이다. 

 

차원을 낮출 때 아무리 잘 바꾼다고 하더라도 2차원의 데이터 특징을 모두 살리면서 1차원의 데이터로 바꿀 수는 없을 것이다. 그렇다면 차선택으로, 최대한 특징을 살리며 차원을 낮춰주는 방법을 고안하기 시작했고 그중 하나가 주성분 분석이다. 주성분 분석은 데이터를 사영시켰을 때, 손실되는 정보의 양이 적은 기저(축)를 찾아서 선택한다. 

 

주성분 분석은 대표적으로 차원 축소(Dimensionality Reduction)에 쓰이는 기법으로 머신 러닝, 데이터 마이닝, 통계 분석, 노이즈 제거 등 다양한 분야에서 널리 쓰인다.  

 

 

차원 축소

차원 축소란?

데이터의 차원(특성의 수)을 줄이며 데이터의 중요한 정보를 최대한 보존하는 것을 의미한다. 

일반적으로 데이터 추출 시, 노이즈 때문에 함수의 차원이 높아지고 비선형성이 커지는 경우가 많다. 이런 상황에서 차원 축소를 진행할 경우 생기는 장단점은 아래와 같다. 

 

차원 축소의 장단점

장점

  • 데이터의 차원이 감소하면서 모델 학습과 예측에 필요한 계산량이 줄어들어 계산의 효율성이 증가한다.
  • 차원을 축소함으로써, 데이터를 시각적으로 이해하는 것이 쉬워진다.
  • 노이즈와 불필요한 정보를 제거한다. 
  • 차원의 저주 문제를 해결하여 모델의 과적합을 방지하고 줄일 수 있다. 
    • 차원의 저주란?
      데이터 과학과 머신 러닝에서 데이터의 차원이 증가할수록 해당 공간의 크기가 기하급수적으로 증가하며, 데이터 분석이나 모델 학습에 어려움을 초래하는 현상을 의미한다. 

단점

  • 차원 축소 시 데이터의 일부 정보 손실이 발생할 수 있다.
  • 어떤 차원을 유지하고 제거할지 결정하는 것이 복잡할 수 있다. 
  • 정보 손실로 인해 모델은 데이터의 복잡성을 충분히 표현하지 못해 과소적합(underfitting)의 원인이 될 수 있다.   

 

독립 변수 선택 및 가공 3가지 접근법

  1. 독립 변수 선택(Feature Selection)
    불필요한 독립 변수를 버린다.
    예를 들어 야외 활동 여부를 파악할 때 교통량은 크게 영향을 미치지 않는다고 가정한다면 해당 독립 변수는 버리는 것이다. 
    각각의 독립 변수가 모델이 야외 활동 여부를 파악하는데 영향을 미치는지 미치지 않는지 알고 싶다면 상관계수 값을 통해 판단한다. 
  2. 독립 변수 추출(Feature Extraction)
    독립 변수를 선택하는 것이 아니라, 더 작은 차원으로 독립 변수들을 맵핑하는 것이다. 
    예를 들어 101차원의 데이터 테이블을 50차원으로 압축하는 과정을 거치는 것으로
    이 기법이 차원 축소 기법이다. 
  3. 피쳐 생성(Feature Engineering)
    데이터 테이블에서 독립변수가 부족한 상황일 때 적용하는 기법이다.
    데이터와 만들고자 하는 머신러닝 모델의 기능 활용 목적에 따라 새로운 독립 변수들을 생성해 내는 것이다. 

 

 

주성분 분석 주 목표

데이터의 주요 패턴을 캡처하면서 차원을 줄이는 분석 기법이다. 

핵심 원리는 데이터의 분산을 최대화하는 주성분을 찾는 것으로, 분산은 데이터가 얼마나 특정 방향으로 퍼져 있는지를 나타낸다. 

큰 분산은 해당 방향에 데이터의 주요 정보나 패턴이 포함되어 있음을 의미하는데, 분산이 큰 주성분 방향으로 데이터를 투영함으로써 차원을 줄이면, 정보의 손실을 최소화할 수 있고 데이터들 사이의 차이점이 명확해진다. 

 

 

주성분 분석 과정

 

주성분 분석을 수행할 때는 데이터의 구조를 가장 잘 반영하는 기저를 찾는 것이 중요하다. 이를 최적의 기저(Optimal Bases)라고 부른다. 

주성분 분석에서는 데이터 간의 중복성이 가장 적은 방향을 최적의 기저로 찾아낸다. 만약 중복성이 높은 기저를 선택하면, 비슷한 정보를 중복으로 포함하게 되므로 주성분 분석의 주 목적인 정보 압축과 패턴 추출에 방해가 된다.

 

  1. 데이터 전처리
    데이터를 표준화(평균 0, 표준편차 1)하거나 정규화(최솟값 0, 최댓값 1)하여 스케일을 조정한다.  
  2. 공분산 행렬 계산 
    공분산 행렬은 변수 간의 선형 관계를 나타내며, 이를 통해 데이터의 분포와 구조를 파악할 수 있다. 
  3. 고윳값 및 고유 벡터 계산
    공분산 행렬의 고윳값과 고유 벡터를 계산한다. 
    고윳값은 데이터의 분산을 나타내고, 고유 벡터는 주성분의 방향을 나타낸다.
  4. 주성분 선택
    고윳값이 큰 순서대로 주성분을 선택한다. 
    주성분 개수를 선택하는 방법으로는 누적 설명 분산 비율을 활용할 수 있다. 
    누적 설명 분산 비율이 일정 수준 이상인 주성분까지 선택하여 차원 축소를 진행한다. 
  5. 주성분으로 원본 데이터 변환
    선택된 주성분(고유 벡터)을 이용해 원본 데이터를 변환한다. 이 과정에서 원본 데이터의 차원이 축소되며, 새로운 주성분 축에 투영된 데이터를 얻게 된다. 

 

 

주성분 분석 장단점

장점

  • 고차원 데이터를 저차원 데이터로 변환하여 데이터의 크기를 줄일 수 있다. 이를 통해 계산량이 줄어들고 시각화가 용이해진다. 
  • 정보의 손실을 최소화하면서 데이터를 압축할 수 있다. 이를 통해 메모리 공간의 절약과 효율적인 데이터 처리가 가능하다. 
  • 주성분을 기준으로 데이터를 변환해 노이즈에 영향을 받지 않는 특성을 추출할 수 있다. 이를 통해 데이터의 품질을 향상할 수 있다.  

단점

  • 선형적인 변환을 기반으로 하기 때문에 비선형적인 데이터의 경우에는 적합하지 않다.
  • 차원을 축소하는 과정에서 일부 정보가 손실된다. 이로 인해 모델의 성능이 저하될 수 있다. 
  • 원래 데이터의 축과 다르기 때문에, 결과를 해석하기 어려울 수 있다. 

 

 

주성분 분석 코드 공부

https://github.com/DIB-PP/Machine-Learning

 

GitHub - DIB-PP/Machine-Learning

Contribute to DIB-PP/Machine-Learning development by creating an account on GitHub.

github.com

 

 

 

 

 

 

 

 

 

참고 사이트