주성분 분석 (PCA)

혜쿰·2023년 11월 21일
1
post-thumbnail

🌌 개념

주성분 분석(PCA, Principal Component Analysis)은 다변량 데이터에서 주요한 정보를 추출하거나 데이터의 차원을 축소하는 데 사용되는 통계적 기법이다. 이 방법은 변수들 간의 상관 관계를 고려하여 데이터를 변환하고, 데이터의 가장 중요한 특징이 담긴 새로운 변수들을 찾아낸다.
예를 들어, 2차원의 데이터를 1차원의 데이터로 바꾼다고 가정해보자. 2차원의 데이터의 특징을 모두 살리면서 1차원의 데이터로 바꿔줄수는 없을 것이다. 그렇다면 차선책으로, 모든 특징을 살릴 수는 없을지라도 최대한 특징을 살리며 차원을 낮춰주는 방법을 고안하기 시작했고, 그 중 하나가 바로 PCA이다.

🌏 목표

  1. 차원 축소 : 고차원의 데이터를 저차원으로 축소하여 정보의 손실을 최소화한다.
  2. 변수 간 상관성 파악 : 데이터 내 변수들 간의 상관 관계를 파악하여 이를 고려한 새로운 변수들을 만든다.
  3. 주요 정보 추출 : 데이터의 주요 특징이 담긴 주성분을 찾아내어 데이터를 설명하는 데 사용된다.

🪐 과정

1. 데이터 준비

다변량 데이터를 준비한다. 각 열은 변수를 나타내고, 각 행은 관측치를 나타낸다.

2. 공분산 행렬 계산

데이터의 각 변수 간 공분산을 계산한다. 이는 변수들 간의 상관 관계를 나타내는 중요한 지표이다.

3. 공분산 행렬의 고유값과 고유벡터 계산

공분산 행렬의 고유값과 고유벡터를 계산한다. 고유값은 각 고유벡터의 중요성을 나타내며, 고유벡터는 주성분을 나타낸다.

4. 주성분 선택

고유값이 큰 순서대로 주성분을 선택한다. 이 주성분들은 데이터에서 가장 많은 정보를 담고 있다.

5. 주성분 계산

선택한 주성분을 기반으로 새로운 변수들을 생성한다. 이러한 주성분들은 기존 변수들의 선형 결합으로 이루어진다.

6. 데이터 변환

원래의 데이터를 새로운 주성분으로 변환하여 저차원으로 투영한다.

PCA는 데이터를 잘 이해하고 중요한 정보를 추출하는 강력한 방법 중 하나이다. 주로 데이터 탐색, 시각화, 패턴 인식 및 머신 러닝 모델에 입력 변수로 활용된다.




이론적인 내용을 보다 자세히 알고 싶다면 이 사이트를 추천한다.
이론 자세히보기

🌌 실습

🔭 코드 예제

PCA는 파이썬의 sklearn 라이브러리를 통해 구현할 수 있다. 아래는 PCA를 사용하여 차원을 축소하는 예제 코드이다.

import numpy as np
from sklearn.decomposition import PCA
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt

# 데이터 불러오기
iris = load_iris()
X = iris.data
y = iris.target

# PCA 모델 정의 및 학습
pca = PCA(n_components=2)  # 축소할 차원 수 지정
X_pca = pca.fit_transform(X)

# 축소된 데이터로 산점도 그리기
plt.figure(figsize=(8, 6))
for i, target_name in enumerate(iris.target_names):
    plt.scatter(X_pca[y == i, 0], X_pca[y == i, 1], label=target_name)
plt.xlabel('Principal Component 1')
plt.ylabel('Principal Component 2')
plt.title('2D PCA of Iris Dataset')
plt.legend()
plt.show()

🔭 코드 리뷰

위 코드는 Iris 데이터셋을 불러와 PCA를 사용하여 4차원 데이터를 2차원으로 축소한 후 산점도를 그리는 예제이다.

  1. PCA 클래스를 import하고, 데이터를 불러온다.
  2. n_components 매개변수를 사용하여 축소할 차원 수를 설정한다. 위 코드에서는 2로 설정하여 2차원으로 축소한다.
  3. fit_transform 메서드를 사용하여 주어진 데이터를 주성분으로 변환한다.
  4. 변환된 주성분 데이터를 산점도로 시각화한다.

다음은 출력된 산점도이다.

0개의 댓글

관련 채용 정보