주성분 분석$($PCA$)$는 데이터의 차원을 축소하여 데이터를 간결하고 효율적으로 표현하는 데에 사용되는 중요한 머신 러닝 알고리즘입니다. 이번 포스팅에서는 PCA의 개념과 선형대수학의 기법인 고유값 분해$($Eigenvalue Decomposition$)$와 특이값 분해$($SVD$)$를 활용하여 데이터를 차원 축소하는 방법을 자세히 알아보겠습니다.
1. PCA의 개념:
PCA는 고차원의 데이터를 새로운 축$($주성분$)$으로 변환하여 데이터의 분산을 최대한 보존하는 차원 축소 기법입니다. 주성분은 데이터의 분산이 가장 큰 방향 벡터로, 데이터를 가장 잘 설명하는 축입니다. PCA는 데이터의 차원을 줄이면서도 원본 데이터의 중요한 특성을 최대한 유지하여 노이즈를 감소시키고, 데이터를 시각화하거나 머신 러닝 모델의 학습 속도를 향상시키는 데에 활용됩니다.
2. PCA의 과정:
PCA의 주요 과정은 다음과 같습니다:
- 데이터의 평균을 0으로 중앙화합니다.
- 공분산 행렬$($Covariance Matrix$)$을 계산합니다.
- 공분산 행렬의 고유값과 고유벡터를 계산합니다.
- 고유값을 내림차순으로 정렬하고, 가장 큰 k개의 고유값에 해당하는 고유벡터들을 선택합니다.
- 선택된 고유벡터들로 새로운 축을 구성하여 데이터를 변환합니다.
3. 선형대수학의 고유값 분해$($Eigenvalue Decomposition$)$와 특이값 분해$($SVD$)$ 활용:
PCA는 데이터의 공분산 행렬의 고유값 분해 또는 특이값 분해를 통해 수행됩니다. 고유값 분해와 특이값 분해는 선형대수학의 중요한 기법으로, 데이터를 새로운 기저 벡터로 변환하는 데에 사용됩니다. 이러한 기법을 활용하여 주성분을 추출하고 데이터를 차원 축소합니다.
4. 예시를 통한 이해:
예를 들어, 다차원 데이터가 주어졌을 때, PCA를 사용하여 데이터를 2차원으로 축소한다고 가정해봅시다. 이때, 데이터를 가장 잘 설명하는 두 개의 주성분을 추출하여 데이터를 새로운 축에 투영합니다. 이렇게 차원이 축소된 데이터는 시각화가 용이하며, 원본 데이터의 주요 특성을 보존한 채로 데이터를 표현할 수 있습니다.
3차원 데이터가 주어졌다고 가정합니다. 각 데이터 포인트는 세 개의 특성$($변수$)$으로 구성되어 있습니다.
데이터 포인트 1: [x₁₁, x₁₂, x₁₃]
데이터 포인트 2: [x₂₁, x₂₂, x₂₃]
데이터 포인트 3: [x₃₁, x₃₂, x₃₃]
...
데이터 포인트 n: [xₙ₁, xₙ₂, xₙ₃]
PCA를 사용하여 데이터를 2차원으로 축소해보겠습니다.
1. 평균 제거:
먼저, 데이터의 각 특성별로 평균을 구합니다. 그리고 각 데이터 포인트에서 해당 특성의 평균을 뺍니다. 이렇게 하면 데이터의 평균이 0이 되며, 데이터가 중심에 위치하게 됩니다.
2. 공분산 행렬 계산:
평균이 0으로 중심화된 데이터를 이용하여 공분산 행렬$($Covariance Matrix$)$을 계산합니다. 공분산은 각 특성 사이의 상관관계를 나타내는 행렬로, 데이터의 분산과 특성 간의 상관성을 파악하는데 사용됩니다.
3. 고유값 분해:
공분산 행렬을 고유값 분해$($Eigenvalue Decomposition$)$하여 고유값과 고유벡터를 구합니다. 고유값은 각 고유벡터에 해당하는 크기를 의미하며, 데이터가 해당 고유벡터 방향으로 얼마나 퍼져 있는지를 나타냅니다. 따라서, 큰 고유값에 해당하는 고유벡터들은 데이터의 주요 변동성을 설명하는 주성분으로 사용됩니다.
4. 주성분 선택:
주성분은 고유값이 큰 순서대로 정렬하여 선택합니다. 일반적으로 데이터의 차원 수보다 적은 주성분을 선택하여 차원을 축소합니다. 이 예시에서는 2차원으로 축소하므로, 고유값이 큰 상위 2개의 주성분을 선택합니다.
5. 데이터 투영:
선택한 주성분들로 새로운 축을 만들고, 원본 데이터를 이 새로운 축에 투영합니다. 이렇게 하면 데이터가 2차원으로 축소되며, 새로운 축에 데이터가 투영됩니다.
6. 시각화:
2차원으로 축소된 데이터를 시각화하여 분포를 살펴봅니다. 데이터가 2차원 평면상에서 어떻게 분포되는지를 확인할 수 있습니다. 이렇게 시각화된 데이터는 더 쉽게 해석할 수 있으며, 원본 데이터의 주요 특성을 유지한 상태입니다.
PCA를 사용하여 데이터를 2차원으로 축소하면, 데이터의 주요 특성을 유지하면서 시각화가 용이해집니다. PCA는 차원 축소를 위해 주로 활용되지만, 머신 러닝에서 데이터의 주성분을 추출하는데에도 널리 사용됩니다. 이를 통해 데이터를 간결하게 표현하고, 복잡한 데이터셋에서 중요한 정보를 추출하는데에 활용됩니다.
이 예시에서는 2차원 데이터가 주어졌다고 가정합니다. 각 데이터 포인트는 두 개의 특성$($변수$)$으로 구성되어 있습니다.
데이터 포인트 1: [1, 2]
데이터 포인트 2: [3, 4]
데이터 포인트 3: [5, 6]
데이터 포인트 4: [7, 8]
1. 평균 제거:
- 데이터의 평균을 계산합니다:
\begin{align}mean1 = (1 + 3 + 5 + 7) / 4 = 4\\
mean2 = (2 + 4 + 6 + 8) / 4 = 5\end{align}
- 평균을 제거한 데이터를 계산합니다:
\begin{align}[1 - 4, 2 - 5] = [-3, -3]\\
[3 - 4, 4 - 5] = [-1, -1]\\
[5 - 4, 6 - 5] = [1, 1]\\
[7 - 4, 8 - 5] = [3, 3]\end{align}
2. 분산과 공분산 계산:
- 평균 제거된 데이터의 분산과 공분산을 계산합니다:
\begin{align}var1 = ( (-3)^2 + (-1)^2 + (1)^2 + (3)^2 ) / 4 = 5\\
var2 = ( (-3)^2 + (-1)^2 + (1)^2 + (3)^2 ) / 4 = 5\\
cov = ( (-3)(-3) + (-1)(-1) + (1)(1) + (3)(3) ) / 4 = 5\end{align}
3. 공분산 행렬 계산:
공분산 행렬은 다음과 같이 표현됩니다:
| 분산 1 공분산 |
| 공분산 분산 2 |
따라서, 공분산 행렬은 다음과 같습니다:
\begin{bmatrix} 5 & 5 \\
5 &5\end{bmatrix}
4. 주성분 선택:
고유값이 큰 순서대로 고유벡터를 선택합니다. 이 예시에서는 고유값이 10, 0이고, 고유벡터는 각각 [1, 1], [-1, 1] 입니다. 고유값이 큰 순서대로 첫 번째 고유값과 해당하는 고유벡터를 선택합니다.
이 과정은 아래 더보기에 적었습니다.
5. 데이터 투영:
선택된 주성분으로 새로운 축을 만들고, 원본 데이터를 이 새로운 축에 투영합니다. 투영된 데이터는 각 데이터 포인트에서 주성분 방향으로의 거리를 의미합니다.
- 첫 번째 주성분 [1, 1]으로 데이터 투영:
\begin{align}[(1)(1) + (2)(1)] = 3\\
[(3)(1) + (4)(1)] = 7\\
[(5)(1) + (6)(1)] = 11\\
[(7)(1) + (8)(1)] = 15\end{align}
6. 시각화:
투영된 데이터를 시각화하여 1차원으로 축소된 데이터 분포를 살펴봅니다.
- 시각화 결과:
[3]
[7]
[11]
[15]
PCA를 사용하여 데이터를 1차원으로 축소하면, 주성분 방향으로 데이터가 투영됩니다. 이로 인해 데이터가 1차원 평면 상에서 어떻게 분포하는지 확인할 수 있습니다. 이렇게 1차원으로 축소된 데이터는 원본 데이터의 주요 특성을 유지한 상태에서 더 쉽게 해석할 수 있으며, 데이터 시각화에 활용될 수 있습니다.
위에서 구한 공분산(x, x), 공분산(x, y), 공분산(y, x), 공분산(y, y) 값은 각각 5입니다.
1. 고유값 문제 설정:
고유값과 고유벡터를 구하려면 다음과 같은 행렬식을 풀어야 합니다:
$$(\text{공분산 행렬} - \lambda \cdot \text{단위행렬}) \cdot \text{고유벡터} = \text{0 벡터}$$
여기서 $\lambda$는 고유값, 단위행렬은 크기가 같은 행렬로 대각 성분은 1, 나머지는 0인 행렬입니다.
2. 고유값과 고유벡터 계산:
위의 식을 풀어서 얻은 $\lambda$와 고유벡터가 데이터의 주성분을 나타냅니다. 각 $\lambda$와 고유벡터 쌍은 데이터의 주성분 방향과 중요도를 나타내며, 고유값의 크기가 클수록 해당 주성분의 중요도가 높다고 볼 수 있습니다.
3. 고유값과 고유벡터 계산 예시:
주어진 공분산 행렬의 경우 단위행렬과의 차이를 계산하여 다음과 같은 식을 얻습니다:
$$
\begin{bmatrix}
5 - \lambda & 5 \\
5 & 5 - \lambda
\end{bmatrix}
\begin{bmatrix}
\text{고유벡터}_x \\
\text{고유벡터}_y
\end{bmatrix}
=
\begin{bmatrix}
0 \\
0
\end{bmatrix}
$$
이를 풀어서 얻은 고유값과 고유벡터는 다음과 같습니다:
고유값: $\lambda_1 = 10, \lambda_2 = 0$
고유벡터 1: $\text{고유벡터}_1 = [1, 1]$
고유벡터 2: $\text{고유벡터}_2 = [1, -1]$
위에서 계산한 고유값과 고유벡터를 활용하여 데이터를 새로운 주성분 공간으로 변환하고, 주성분의 중요도를 파악할 수 있습니다.
주성분 분석$($PCA$)$은 데이터의 차원을 축소하여 데이터를 간결하고 효율적으로 표현하는 중요한 머신 러닝 알고리즘입니다. 선형대수학의 고유값 분해와 특이값 분해를 활용하여 데이터를 변환하는데 사용되며, 데이터 시각화와 머신 러닝 알고리즘의 성능 향상에 큰 도움을 줍니다. PCA를 이해하고 활용함으로써 다차원 데이터의 처리와 분
석을 더욱 효율적으로 수행할 수 있습니다.
'수학 > 선형대수학' 카테고리의 다른 글
[선형대수학] 선형대수와 머신 러닝 4 [이미지 처리와 컴퓨터 비전] (0) | 2023.08.04 |
---|---|
[선형대수학] 선형대수와 머신 러닝 3 [선형 분류와 로지스틱 회귀] (0) | 2023.08.04 |
[선형대수학] 선형대수와 머신 러닝 1 [선형 회귀와 최소제곱법] (0) | 2023.08.04 |
[선형대수학] 선형대수와 머신 러닝 0 (0) | 2023.08.04 |