차원 축소는 데이터 분석과 머신러닝에서 중요한 역할을 하는 기법입니다. 차원이 높은 데이터는 분석하기 어렵고, 과적합 문제나 계산 복잡도를 증가시킬 수 있기 때문에 이를 효과적으로 낮추는 방법이 필요합니다. LDA는 차원 축소 기법 중 하나로, 특히 분류 문제에서 강력한 성능을 발휘합니다.
LDA는 데이터의 차원을 줄이면서도 각 클래스 간의 분리도를 최대화하는 방법을 찾습니다. 이는 학습 데이터의 선형 조합을 사용하여 새 좌표 공간을 만들고, 그 공간에서 클래스 간의 경계를 명확하게 정의할 수 있도록 합니다. LDA는 주로 데이터가 여러 개의 클래스로 구분되어 있는 경우에 유용하며, 새로운 차원에서 클래스 간의 분리도를 최대화하는 방식으로 차원을 축소합니다.
주요 아이디어
LDA의 핵심은 차원 축소를 통해 데이터의 분류 성능을 극대화하는 것입니다. 이를 위해 두 가지 중요한 행렬을 고려합니다:
- 클래스 내 분산 (Within-class scatter): 각 클래스 내부의 데이터 포인트들이 얼마나 퍼져 있는지를 측정합니다. 이는 데이터가 각 클래스 내에서 얼마나 비슷한지, 또는 얼마나 산포되어 있는지를 의미합니다.
- 클래스 간 분산 (Between-class scatter): 각 클래스의 중심점들이 서로 얼마나 떨어져 있는지를 측정합니다. 즉, 클래스 간의 차이를 나타냅니다.
LDA의 목표는 클래스 내 분산은 최소화하고, 클래스 간 분산은 최대화하는 방향으로 데이터의 투영 벡터를 찾는 것입니다. 이를 통해 클래스 간의 경계를 더 명확하게 구분할 수 있습니다.
알고리즘
LDA는 다음과 같은 단계로 작동합니다:
- 클래스 내 분산 행렬과 클래스 간 분산 행렬 계산
- 클래스 내 분산 행렬 (S_W)와 클래스 간 분산 행렬 (S_B)를 계산합니다.
$$
S_W = \sum_{i=1}^{c} \sum_{x \in X_i} (x - \mu_i)(x - \mu_i)^T
$$
여기서 (X_i)는 클래스 (i)에 속하는 데이터, (\mu_i)는 클래스 (i)의 평균입니다. - 클래스 간 분산 행렬:
$$
S_B = \sum_{i=1}^{c} N_i (\mu_i - \mu)(\mu_i - \mu)^T
$$
여기서 (N_i)는 클래스 (i)에 속하는 데이터 포인트의 개수, (\mu)는 전체 데이터의 평균입니다. - 최적의 투영 벡터 찾기
LDA는 클래스 간 분산을 최대화하고 클래스 내 분산을 최소화하는 투영 벡터 (w)를 찾습니다. 이를 위해 일반화 고유값 문제를 풀어야 합니다:
$$
S_W^{-1} S_B w = \lambda w
$$
여기서 (S_W^{-1} S_B)는 분산 행렬의 비율을 나타내며, 이 비율을 통해 최적의 투영 방향을 결정합니다. - 데이터 투영
최적의 투영 벡터를 찾은 후, 데이터는 그 벡터에 투영됩니다. 이를 통해 차원이 축소되고, 투영된 데이터는 새로운 좌표 공간에서 더 명확하게 구분될 수 있습니다.
PCA와의 차이점
LDA와 PCA(주성분 분석)는 모두 차원 축소 기법이지만, 그 목적과 방법에서 큰 차이가 있습니다.
- 목적
- PCA는 데이터의 분산을 최대화하는 방향을 찾습니다. 이는 모든 데이터 포인트 간의 변동성을 최대화하려는 목적을 가집니다. 즉, 데이터를 설명하는 가장 중요한 방향을 찾는 것이 목표입니다.
- LDA는 클래스 간의 분리를 최대화하는 방향을 찾습니다. 이는 분류 문제에서 각 클래스를 명확히 구분할 수 있는 방향을 찾는 데 집중합니다.
- 데이터의 사용
- PCA는 클래스 정보를 사용하지 않습니다. 데이터의 전체적인 분포를 기준으로 차원을 축소합니다.
- LDA는 클래스 정보를 적극적으로 사용하여, 각 클래스 간의 차이를 극대화하는 방향으로 차원을 축소합니다.
- 차원 축소 방식
- PCA는 데이터의 총 분산을 기준으로 차원을 축소합니다. 즉, 데이터의 가장 큰 변동성을 설명하는 주성분을 찾습니다.
- LDA는 클래스 간 분산과 클래스 내 분산을 모두 고려하여 차원을 축소합니다. LDA는 클래스 간 분리를 최대화하면서도 데이터의 구조를 유지하려 합니다.
- 차원의 제한
- PCA는 데이터의 차원 수만큼 주성분을 찾을 수 있습니다. 하지만 LDA는 클래스의 개수에 따라 찾을 수 있는 축의 개수가 제한됩니다. LDA에서 찾을 수 있는 최대 투영 차원 수는 (c - 1)입니다. 여기서 (c)는 클래스의 수입니다.
결론
LDA는 데이터 분류 문제에서 매우 효과적인 차원 축소 기법입니다. 클래스 간 분리를 극대화하여 분류 성능을 향상시킬 수 있으며, PCA와는 달리 클래스 정보를 활용해 데이터를 더 명확히 구분할 수 있는 특징을 가집니다. 이를 통해 고차원 데이터에서도 효율적인 차원 축소가 가능하며, 많은 머신러닝 알고리즘과 함께 사용됩니다.
LDA는 특히 데이터의 선형성을 가정할 때 매우 강력한 도구로, 다양한 분야에서 활발히 활용되고 있습니다.
'AI > Machine Learning' 카테고리의 다른 글
선형회귀 Regularization(Lasso, Ridge 등) 수행 시 연속형 변수의 표준화가 수렴속도에 미치는 영향 (0) | 2024.06.28 |
---|---|
이상치 탐지(Anomaly Detection) - Overview (0) | 2023.10.28 |
데이터 불균형 - Over Sampling (1) | 2023.09.24 |
데이터 불균형 - Under Sampling (1) | 2023.09.24 |
의사결정 나무 (Decision Tree) 예측, 분류 정리 (0) | 2023.04.01 |