Unisquads
로그인
홈
이용약관·개인정보처리방침·콘텐츠정책·© 2026 Unisquads
이용약관·개인정보처리방침·콘텐츠정책
© 2026 Unisquads. All rights reserved.

선형 판별 분석 (r1)

이 문서의 과거 버전 (r1)을 보고 있습니다. 수정일: 2026.02.14 21:25

선형 판별 분석

한글명

선형 판별 분석

영문명

Linear Discriminant Analysis (LDA)

분류

지도 학습, 차원 축소, 통계 분류

목적

클래스 간 분산을 최대화하고 클래스 내 분산을 최소화하는 선형 조합을 찾아 특징 추출 또는 분류 수행

개발자

로널드 피셔 (Ronald Fisher)

관련 기법

주성분 분석(PCA), 이차 판별 분석(QDA)

상세 정보

핵심 아이디어

데이터를 가장 잘 구분하는 투영 축을 찾아, 클래스 간 거리는 멀게, 클래스 내 데이터는 밀집되도록 변환

가정

각 클래스가 정규 분포를 따르고, 모든 클래스가 동일한 공분산 행렬을 가짐

수학적 목표 함수

클래스 간 분산 대 클래스 내 분산의 비율(피셔 판별 기준)을 최대화

출력

판별 함수(또는 판별 벡터) 및 새로운 데이터의 클래스 레이블 또는 변환된 좌표

주요 활용 분야

얼굴 인식, 생물정보학, 문서 분류, 패턴 인식

장점

계산 효율성 높음, 과적합 위험이 비교적 낮음, 클래스 구분 정보 보존에 효과적

단점

정규성 및 등공분산 가정이 위반될 경우 성능 저하, 클래스 수보다 하나 적은 차원까지만 생성 가능

차원 축소 시

주성분 분석(PCA)가 분산 최대화에 중점한다면, LDA는 클래스 구분 정보 최대화에 중점

다중 클래스 LDA

2개 이상의 클래스로 일반화 가능하며, 최대 (클래스 수 - 1)개의 판별 벡터 생성

구현 라이브러리

scikit-learn (LinearDiscriminantAnalysis), MATLAB, R

1. 개요

선형 판별 분석(Linear Discriminant Analysis, LDA)은 지도 학습 기반의 통계적 패턴 인식 방법이다. 주어진 데이터를 가장 잘 구분하는 선형 경계를 찾아내는 것이 목표이다. 이 기법은 로널드 피셔가 1936년에 제안한 피셔의 선형 판별(Fisher's Linear Discriminant)에 그 기원을 두고 있으며, 이후 분류와 차원 축소를 위한 핵심 도구로 발전하였다.

LDA의 기본 아이디어는 데이터를 서로 다른 클래스로 투영했을 때, 클래스 간 분산은 최대화하고 클래스 내 분산은 최소화하는 최적의 특성 공간을 찾는 것이다. 이를 통해 클래스 간의 분리가 명확해지고, 새로운 데이터에 대한 분류 성능을 높일 수 있다. LDA는 이름에서 알 수 있듯이 선형적인 결정 경계를 생성한다.

이 방법은 주로 분류 문제에 사용되지만, 고차원 데이터의 시각화나 노이즈 제거를 위한 차원 축소 기법으로도 널리 활용된다. 특히 얼굴 인식과 같은 이미지 처리나 문서 분류, 생물정보학에서의 유전자 표현형 데이터 분석 등 다양한 응용 분야에서 그 유용성이 입증되었다.

LDA는 몇 가지 중요한 가정을 전제로 한다. 가장 큰 가정은 모든 클래스가 동일한 공분산 행렬을 가진다는 것이며, 데이터가 정규 분포를 따른다고 가정한다. 이러한 가정이 성립할 때 LDA는 최적의 분류 성능을 발휘한다. 가정이 충족되지 않는 경우에는 이차 판별 분석(QDA)이나 다른 비선형 분류기가 더 적합할 수 있다.

2. 수학적 배경

선형 판별 분석의 수학적 배경은 데이터의 분포를 설명하는 두 가지 핵심 개념, 즉 클래스 내 산포와 클래스 간 산포를 기반으로 한다. 이 두 산포 행렬을 정의하고 최적화하는 과정이 LDA의 핵심이다.

클래스 내 산포와 클래스 간 산포

LDA의 목표는 서로 다른 클래스의 데이터를 가장 잘 구분하는 새로운 축(투영 방향)을 찾는 것이다. 이를 위해 데이터의 변동성을 두 가지 관점에서 수량화한다. 먼저, 클래스 내 산포는 같은 클래스에 속한 데이터 포인트들이 해당 클래스의 평균(중심) 주위에 얼마나 모여 있는지를 나타낸다. 이는 각 클래스별 공분산 행렬을 계산한 후, 모든 클래스에 대해 합산하여 구한다. 클래스 내 산포가 작을수록 동일 클래스의 데이터는 서로 가깝게 모여 있다는 의미이다. 반면, 클래스 간 산포는 서로 다른 클래스들의 평균 벡터들이 전체 평균 벡터로부터 얼마나 떨어져 있는지를 측정한다. 클래스 간 산포가 클수록 클래스들의 중심은 서로 멀리 떨어져 있어 구분하기 쉽다.

LDA는 이 두 산포 행렬의 비율, 즉 클래스 간 산포를 클래스 내 산포로 나눈 값을 최대화하는 투영 벡터를 찾는다. 이는 수학적으로 다음과 같은 최적화 문제로 표현된다.

산포 행렬

기호

설명

클래스 간 산포 행렬

$S_B$

클래스 평균과 전체 평균 간의 차이로 계산

클래스 내 산포 행렬

$S_W$

각 클래스 내 데이터의 분산을 합산하여 계산

판별 함수

최적의 투영 방향을 찾는 문제는 일반화된 고유값 문제 $S_B \mathbf{w} = \lambda S_W \mathbf{w}$를 푸는 것과 동일하다. 여기서 $\mathbf{w}$는 찾고자 하는 투영 벡터(판별 벡터)이며, $\lambda$는 해당 방향에서의 목적함수 값(분리 정도)을 나타낸다. 가장 큰 고유값에 대응하는 고유벡터가 데이터를 가장 잘 분리하는 첫 번째 판별 축이 된다. 필요한 차원 수(예: C개의 클래스라면 최대 C-1개)만큼 큰 고유값 순서대로 고유벡터를 선택하여 판별 공간을 형성한다. 이렇게 얻어진 판별 벡터들로 구성된 행렬을 통해 원본 데이터를 새로운 저차원 공간으로 투영할 수 있으며, 이 공간에서 클래스들은 최적으로 분리된다.

2.1. 클래스 내 산포와 클래스 간 산포

선형 판별 분석의 목표는 클래스를 최적으로 구분하는 투영 방향을 찾는 것이다. 이를 위해 데이터의 산포를 두 가지 관점에서 정의하고 비교한다. 첫 번째는 같은 클래스 내 데이터 포인트들이 얼마나 모여 있는지를 나타내는 클래스 내 산포이며, 두 번째는 서로 다른 클래스의 중심이 얼마나 떨어져 있는지를 나타내는 클래스 간 산포이다.

클래스 내 산포 행렬은 각 클래스별로 데이터의 분산을 계산한 후, 모든 클래스에 대해 합산한 것이다. K개의 클래스가 있을 때, 클래스 내 산포 행렬 $S_W$는 다음과 같이 정의된다.

$$ S_W = \sum_{k=1}^{K} \sum_{x \in C_k} (x - \mu_k)(x - \mu_k)^T $$

여기서 $C_k$는 k번째 클래스에 속하는 데이터의 집합이고, $\mu_k$는 해당 클래스의 표본 평균 벡터이다. 이 행렬은 각 클래스 내부의 데이터가 평균 주변에 얼마나 조밀하게 모여 있는지를 측정한다. $S_W$의 값이 작을수록 클래스 내부의 응집도가 높다는 것을 의미한다.

반면, 클래스 간 산포 행렬 $S_B$는 전체 데이터의 평균 $\mu$를 기준으로 각 클래스의 평균이 얼마나 떨어져 있는지를 요약한다.

$$ S_B = \sum_{k=1}^{K} N_k (\mu_k - \mu)(\mu_k - \mu)^T $$

$N_k$는 클래스 $k$에 속하는 데이터 포인트의 수이다. 이 행렬은 클래스들의 중심들이 서로 얼마나 잘 분리되어 있는지를 나타낸다. $S_B$의 값이 클수록 클래스 간 거리가 멀리 떨어져 있어 구분하기 쉬움을 의미한다.

LDA는 최적의 투영 벡터 $w$를 찾기 위해 클래스 간 산포를 최대화하고 동시에 클래스 내 산포를 최소화하는 목표 함수를 사용한다. 일반적으로 이 두 산포 행렬의 비율, 즉 $J(w) = \frac{w^T S_B w}{w^T S_W w}$를 최대화하는 $w$를 구하는 일반화된 고유값 문제로 귀결된다. 이 비율이 최대가 되는 방향으로 데이터를 투영하면, 투영된 공간에서 클래스들은 최대한 멀리 떨어지고 각 클래스 내 데이터는 최대한 모이게 되어 분류 성능이 향상된다.

2.2. 판별 함수

선형 판별 분석의 핵심은 데이터를 가장 잘 구분하는 선형 함수, 즉 판별 함수를 찾는 것이다. 이 함수는 각 데이터 포인트를 하나의 수치(점수)로 변환하여, 서로 다른 클래스에 속한 데이터들의 점수 분포가 최대한 멀리 떨어지도록 설계된다.

판별 함수는 일반적으로 다음과 같은 선형 형태를 가진다.

δ_k(x) = x^T Σ^{-1} μ_k - (1/2) μ_k^T Σ^{-1} μ_k + log(π_k)

여기서 x는 입력 데이터 벡터, μ_k는 클래스 k의 평균 벡터, Σ는 모든 클래스가 공유한다고 가정하는 공분산 행렬, π_k는 클래스 k의 사전 확률이다. 새로운 데이터 x가 주어지면, 이 함수 값을 가장 크게 만드는 클래스 k로 x를 분류한다. 함수의 첫 번째 항 x^T Σ^{-1} μ_k는 데이터와 클래스 평균의 유사성을 측정하며, 나머지 항들은 클래스 자체의 특성(평균의 크기, 사전 확률)에 대한 보정 역할을 한다.

2-클래스 문제의 경우, 판별 함수는 더욱 단순화된 형태로 표현될 수 있다. 두 클래스(클래스 1과 2)에 대한 판별 함수의 차이를 계산하면, 최종 분류 기준은 하나의 선형 결정 경계가 된다. 이 경계는 다음과 같은 방정식으로 주어진다.

w^T x + w_0 = 0

여기서 가중치 벡터 w는 Σ^{-1} (μ_1 - μ_2)로 계산되며, 절편 w_0는 두 클래스의 평균과 사전 확률에 의해 결정된다. 따라서, 다차원 공간의 데이터를 이 선형 초평면에 투영했을 때, 투영된 값의 부호에 따라 클래스를 예측하게 된다.

구성 요소

설명

역할

선형 항 (w^T x)

데이터 x를 저차원 공간(판별 축)으로 투영

클래스 구분 정보 추출

절편 (w_0)

두 클래스의 사전 확률과 평균 차이를 반영

결정 경계의 위치 조정

공분산 행렬 역행렬 (Σ^{-1})

데이터 특성 간 상관 관계를 고려한 표준화

마할라노비스 거리 기반 거리 계산

이러한 판별 함수를 통해 LDA는 데이터의 클래스 조건부 분포가 정규분포를 따르고 공분산 행렬이 동일하다는 가정 하에, 베이즈 최적 분류기에 근사하는 성능을 보인다[1].

3. LDA의 가정

선형 판별 분석은 데이터가 몇 가지 기본적인 통계적 가정을 충족할 때 최적의 성능을 발휘한다. 가장 핵심적인 가정은 모든 클래스가 동일한 공분산 행렬을 가진다는 것이다. 즉, 각 클래스 내 데이터 포인트들의 분포 형태와 방향성이 서로 동일하다고 가정한다. 이 가정 하에서 클래스 간 경계는 선형이 되며, 이로 인해 '선형' 판별 분석이라는 이름이 붙었다.

또한, LDA는 데이터가 다변량 정규 분포를 따른다고 가정한다. 각 클래스의 데이터는 다차원 공간에서 정규 분포 형태로 생성되었다고 간주한다. 이 가정은 판별 함수를 유도하는 데 중요한 역할을 한다. 만약 데이터가 심하게 정규 분포를 벗어나거나, 클래스별 공분산 구조가 현저히 다르다면 LDA의 분류 성능은 저하될 수 있다.

마지막으로, LDA는 클래스의 사전 확률을 추정할 수 있다고 가정한다. 이는 각 클래스가 표본 데이터에서 관측된 빈도와 유사한 비율로 나타난다는 것을 의미한다. 사전 확률은 새로운 데이터 포인트를 분류할 때 베이즈 정리를 적용하는 데 사용된다.

가정

설명

위반 시 영향

동일 공분산 행렬

모든 클래스가 동일한 형태와 방향의 분포를 가짐

클래스 경계가 비선형일 수 있어 성능 저하

다변량 정규성

각 클래스 내 데이터가 다변량 정규 분포를 따름

확률 기반 추정이 부정확해질 수 있음

알려진 사전 확률

각 클래스의 발생 빈도가 표본에서 추정 가능함

불균형 데이터에서 편향된 분류 결과 초래 가능

이러한 가정들은 현실 세계의 데이터에서 항상 완벽하게 성립하지는 않는다. 그러나 많은 실제 문제에서 LDA는 이러한 가정들로부터 어느 정도 벗어나더라도 강건한 성능을 보여준다. 가정이 심각하게 위배되는 경우에는 이차 판별 분석이나 다른 비선형 분류기를 고려하는 것이 적절하다.

4. LDA 알고리즘

선형 판별 분석 알고리즘의 핵심은 데이터를 가장 잘 구분하는 투영 방향을 찾는 것이다. 이 과정은 주로 산포 행렬 계산과 고유값 문제 해결의 두 단계로 구성된다.

첫 번째 단계는 클래스 내 산포 행렬(S_W)와 클래스 간 산포 행렬(S_B)을 계산하는 것이다. 클래스 내 산포 행렬은 각 클래스 내 데이터 포인트들이 클래스 평균 주위에 얼마나 흩어져 있는지를 측정한다. 반면, 클래스 간 산포 행렬은 서로 다른 클래스의 평균들이 전체 평균을 중심으로 얼마나 떨어져 있는지를 나타낸다. 이 두 행렬은 각각 분산과 평균 차이에 대한 정보를 담고 있다.

두 번째 단계는 최적의 투영 벡터를 찾기 위해 일반화 고유값 문제를 푸는 것이다. 목표는 투영된 공간에서 클래스 간 분산은 최대화하고 클래스 내 분산은 최소화하는 방향을 찾는 것이다. 이는 수학적으로 S_B * w = λ * S_W * w 식을 푸는 것과 동일하다. 여기서 w는 찾고자 하는 투영 벡터(판별 벡터)이고, λ는 해당 방향의 판별력을 나타내는 고유값이다. 일반적으로 가장 큰 고유값(λ)에 대응하는 고유벡터(w)가 첫 번째 판별 벡터가 되며, 두 번째로 큰 고유값에 대응하는 벡터가 두 번째 판별 벡터가 되는 방식으로 순차적으로 찾는다. 찾은 투영 벡터들은 새로운 특징 공간의 축을 형성한다.

단계

목표

계산 내용

결과

1

산포 행렬 계산

클래스 내 산포 행렬(S_W), 클래스 간 산포 행렬(S_B) 계산

데이터 구조를 요약하는 행렬

2

고유값 문제 해결

S_B * w = λ * S_W * w 방정식 풀기

고유값(λ)과 고유벡터(w, 투영 벡터) 쌍

이 알고리즘을 통해 얻은 투영 벡터들로 원본 데이터를 선형 변환하면, 원래의 고차원 데이터를 클래스 분리가 뚜렷한 저차원 공간으로 효과적으로 사상할 수 있다.

4.1. 산포 행렬 계산

산포 행렬 계산은 선형 판별 분석의 핵심 단계로, 데이터의 분포 특성을 정량화하는 과정이다. 이 계산은 클래스 내 산포와 클래스 간 산포라는 두 가지 주요 행렬을 도출하는 것을 목표로 한다.

먼저, 전체 데이터 집합의 전체 평균 벡터 m을 계산한다. 각 클래스 *c*에 대해, 해당 클래스에 속하는 샘플들의 평균 벡터 m_c를 구한다. 클래스 내 산포 행렬 S_W는 각 클래스 내에서 데이터 포인트들이 클래스 평균 주위에 얼마나 흩어져 있는지를 나타낸다. 이는 각 클래스의 공분산 행렬을 샘플 수에 따라 가중 합한 것으로 계산된다. 수식으로는 S_W = Σ_c Σ_{i in c} (x_i - m_c)(x_i - m_c)^T 와 같이 표현된다[2].

반면, 클래스 간 산포 행렬 S_B는 서로 다른 클래스들의 평균들이 전체 평균 주위에 얼마나 떨어져 있는지를 측정한다. 각 클래스 평균과 전체 평균의 차이를 이용하여 계산되며, 클래스의 샘플 수 *N_c*로 가중치를 부여한다. 수식은 S_B = Σ_c N_c (m_c - m)(m_c - m)^T 이다. 이 두 행렬 S_W와 S_B가 계산되면, LDA의 최적 투영 방향을 찾기 위한 고유값 문제 **S_B * v = λ * S_W * v** 를 구성할 수 있다.

4.2. 고유값 문제와 투영 벡터

선형 판별 분석의 목표는 클래스 간 분산을 최대화하면서 클래스 내 분산을 최소화하는 최적의 투영 방향을 찾는 것이다. 이 문제는 고유값 문제로 귀결된다. 구체적으로, 클래스 간 산포 행렬 $S_B$와 클래스 내 산포 행렬 $S_W$를 계산한 후, 다음의 일반화된 고유값 문제를 풀어 투영 벡터를 구한다.

$$ S_B \mathbf{w} = \lambda S_W \mathbf{w} $$

여기서 $\mathbf{w}$는 찾고자 하는 투영 벡터이며, $\lambda$는 해당 벡터 방향으로 투영했을 때의 목적 함수 값(클래스 간 분산 대 클래스 내 분산의 비율)에 해당하는 고유값이다. 이 방정식을 풀어 얻은 고유벡터들은 데이터를 새로운 공간으로 변환하는 축이 된다.

용어

설명

$S_B$

클래스 간 산포 행렬. 각 클래스의 평균과 전체 평균의 차이를 바탕으로 계산한다.

$S_W$

클래스 내 산포 행렬. 각 클래스 내 데이터 포인트들이 해당 클래스 평균으로부터 얼마나 흩어져 있는지를 나타낸다.

$\mathbf{w}$

투영 벡터. 데이터를 이 벡터 방향으로 선형 투영하여 차원을 축소한다.

$\lambda$

고유값. 투영 벡터 $\mathbf{w}$의 중요도를 나타내며, $\lambda$가 클수록 해당 방향이 분류에 더 효과적임을 의미한다.

일반적으로 $S_W$가 가역행렬이라고 가정하면, 위 식은 표준 고유값 문제인 $(S_W^{-1} S_B) \mathbf{w} = \lambda \mathbf{w}$로 변환하여 풀 수 있다. 이때 $S_W^{-1} S_B$ 행렬의 0이 아닌 고유값의 최대 개수는 (클래스 수 - 1)로 제한된다[3]. 따라서 LDA를 통한 차원 축소의 결과 차원은 최대 (클래스 수 - 1)이 된다. 최종적으로, 가장 큰 고유값에 대응하는 고유벡터부터 순서대로 선택하여 투영 행렬 $W$를 구성하며, 이 행렬로 원본 데이터 $X$를 선형 변환($Y = XW$)하여 판별 공간으로 투영한다.

5. 분류 규칙

선형 판별 분석 모델은 새로운 데이터 점을 분류할 때, 각 클래스에 속할 사후 확률을 계산하여 가장 높은 확률을 가진 클래스로 할당한다. 이 사후 확률은 베이즈 정리를 통해 계산되며, 각 클래스의 사전 확률과 데이터 점이 해당 클래스에서 관찰될 가능도(확률 밀도)를 결합한다. LDA는 모든 클래스가 동일한 공분산 구조를 가진다는 가정 하에, 이 계산을 선형 판별 함수의 형태로 단순화한다.

각 클래스 k에 대한 판별 함수 δ_k(x)는 다음과 같이 정의된다.

δ_k(x) = x^T Σ^{-1} μ_k - (1/2) μ_k^T Σ^{-1} μ_k + log(π_k)

여기서 x는 입력 벡터, μ_k는 클래스 k의 평균 벡터, Σ는 모든 클래스에 공통인 공분산 행렬의 추정치, π_k는 클래스 k의 사전 확률이다. 새로운 데이터 점 x_new가 주어지면, 모든 클래스 k에 대해 δ_k(x_new)를 계산하고, 이 값이 최대가 되는 클래스로 x_new를 분류한다. 즉, 결정 규칙은 argmax_k δ_k(x_new)이다.

이 규칙은 본질적으로 마할라노비스 거리를 최소화하는 결정 경계를 생성한다. 공통 공분산 행렬 Σ를 사용하기 때문에, 클래스 간 결정 경계는 선형(초평면)이 된다. 판별 함수 내의 항 x^T Σ^{-1} μ_k는 데이터를 클래스 평균 방향으로 선형 투영한 결과에 해당하며, - (1/2) μ_k^T Σ^{-1} μ_k 항은 클래스 평균의 위치에 대한 보정 역할을 한다. log(π_k) 항은 클래스의 사전 확률이 다를 경우 이를 반영하여, 희귀한 클래스에 대한 분류 기준을 조정한다.

실제 구현에서는 표본 데이터로부터 μ_k, Σ, π_k를 추정한다. 클래스 사전 확률 π_k는 일반적으로 훈련 데이터 세트 내 클래스별 샘플의 비율로 설정된다. 이 분류 규칙은 계산 효율성이 높고, 클래스 조건부 분포가 정규 분포를 따르고 공분산이 동일할 때 최적의 베이즈 분류기에 근접하는 성능을 보인다.

6. 차원 축소로서의 LDA

선형 판별 분석은 본래 분류를 위한 방법론이지만, 동시에 효과적인 차원 축소 기법으로도 널리 활용된다. 이 과정의 핵심 목표는 원본 데이터를 저차원 공간으로 투영할 때, 서로 다른 클래스의 데이터 포인트들 사이의 분리는 최대화하고, 동일한 클래스 내부의 데이터 포인트들 사이의 분산은 최소화하는 최적의 투영 벡터를 찾는 것이다. 이러한 투영은 데이터의 본질적인 구조를 보존하면서도 시각화나 전처리 단계에서 유용하게 사용될 수 있다.

차원 축소를 수행할 때, LDA는 일반적으로 클래스 간 산포 행렬과 클래스 내 산포 행렬의 고유값 분해를 통해 얻어진 고유벡터들을 사용한다. 이 고유벡터들은 데이터를 새로운 좌표축으로 변환하는 기준이 된다. 투영 후의 최대 차원 수는 원래 데이터의 차원 수나 (클래스 수 - 1) 중 더 작은 값으로 제한된다. 예를 들어, 세 개의 클래스를 가진 데이터를 2차원 공간으로 시각화하는 것이 일반적인 활용 사례이다.

투영 차원 수

설명

주요 활용 목적

K-1 (K: 클래스 수)

이론상 최대 분리 가능 차원. 클래스 간 거리를 최적으로 유지.

분류를 위한 특징 추출

2 또는 3

고차원 데이터의 시각화에 가장 흔히 사용.

데이터 구조 탐색, 군집 시각화

1

데이터를 단일 직선 상에 투영.

빠른 탐색 또는 단순 분류 기준선 생성

주성분 분석이 데이터의 전체 분산을 최대화하는 방향으로 차원을 축소하는 비지도 학습 방법이라면, LDA는 클래스 레이블 정보를 활용하여 클래스 분리를 최대화하는 지도 학습 방법이라는 점에서 근본적인 차이가 있다. 따라서 분류 문제의 전처리 단계에서 LDA를 사용하면, PCA보다 더 분별력 있는 저차원 특징을 추출할 수 있는 경우가 많다. 그러나 LDA의 효과는 모든 클래스의 데이터가 정규 분포를 따르고 공통의 공분산 행렬을 가진다는 가정에 크게 의존한다는 점에 유의해야 한다.

7. LDA와 QDA

선형 판별 분석(LDA)은 데이터의 클래스가 공유하는 공분산 행렬을 가정하고 선형 결정 경계를 찾는 반면, 이차 판별 분석(QDA)은 각 클래스마다 서로 다른 공분산 행렬을 허용하여 이차 결정 경계를 형성한다. 이 근본적인 차이는 모델의 복잡도와 가정의 강도에 직접적인 영향을 미친다.

두 방법의 핵심 차이는 다음 표로 요약할 수 있다.

특성

선형 판별 분석 (LDA)

이차 판별 분석 (QDA)

공분산 행렬 가정

모든 클래스가 동일한 공분산 행렬을 가짐

각 클래스가 고유한 공분산 행렬을 가짐

결정 경계

선형(직선/초평면)

이차(곡선/초곡면)

모델 자유도

낮음 (추정할 매개변수가 적음)

높음 (추정할 매개변수가 많음)

데이터 요구량

상대적으로 적은 샘플로도 안정적 추정 가능

클래스별 충분한 샘플 필요

과적합 위험

낮음

상대적으로 높음

실제 적용에서는 데이터의 특성에 따라 방법을 선택한다. 클래스 간 공분산 구조가 유사하다고 판단되거나 표본 크기가 작아 공분산 행렬을 정확히 추정하기 어려운 경우에는 LDA가 더 안정적인 성능을 보인다. 반면, 클래스별 데이터의 분산 구조가 현저히 다르거나 표본 크기가 충분히 커서 복잡한 모델을 학습시킬 수 있는 경우에는 QDA가 더 유연한 모델링으로 인해 더 나은 분류 성능을 달성할 수 있다[4]. 일반적으로 LDA는 고전적인 편향-분산 트레이드오프에서 편향이 높고 분산이 낮은 모델에, QDA는 편향이 낮고 분산이 높은 모델에 해당한다.

8. 응용 분야

선형 판별 분석은 데이터의 클래스를 구분하는 데 효과적인 선형 경계를 찾는 기법으로, 여러 실용적인 분야에서 널리 활용된다. 그 핵심은 특징 공간에서 클래스 간 분산은 최대화하고 클래스 내 분산은 최소화하는 투영 방향을 찾는 것이다. 이 특성 덕분에 패턴 인식, 얼굴 인식, 문서 분류, 의료 진단, 생물정보학 등 다양한 영역에서 차원 축소 및 분류기로 사용된다.

패턴 인식 분야에서는 특히 이미지 인식과 음성 인식에 많이 적용된다. 예를 들어, 얼굴 인식 시스템에서는 고차원의 픽셀 데이터를 LDA를 통해 효과적인 저차원 특징 공간으로 변환한 후, 새로운 얼굴 이미지를 분류한다. 이는 주성분 분석이 단순히 분산을 최대화하는 것과 달리, 클래스 레이블 정보를 활용하여 더욱 분별력 있는 특징을 추출하기 때문이다. 또한, 문서 분류에서는 문서를 단어 빈도 벡터로 표현한 후, 주제별로 문서를 구분하는 데 LDA를 사용할 수 있다.

생물정보학에서는 유전자 발현 데이터 분석에 중요한 도구로 쓰인다. 마이크로어레이 실험을 통해 얻은 수천 개의 유전자 발현 프로필은 차원이 매우 높은데, LDA는 이를 몇 개의 선형 판별식으로 축소하여 서로 다른 질병 유형(예: 암의 아형)이나 생물학적 상태를 효과적으로 구분하는 모델을 만드는 데 기여한다. 이를 통해 바이오마커 발견이나 진단 보조 시스템 개발에 활용될 수 있다.

8.1. 패턴 인식

선형 판별 분석은 패턴 인식 분야에서 가장 오래되고 널리 사용되는 분류 기법 중 하나이다. 특히, 피셔의 선형 판별이라는 이름으로도 알려져 있으며, 데이터의 특징 추출과 차원 축소를 동시에 수행하여 효율적인 분류를 가능하게 한다.

패턴 인식에서 LDA의 주요 목표는 서로 다른 클래스의 데이터를 가장 잘 구분하는 투영 축을 찾는 것이다. 이는 클래스 간 분산은 최대화하고, 클래스 내 분산은 최소화하는 최적의 선형 변환을 계산함으로써 달성된다. 예를 들어, 얼굴 인식에서는 수많은 픽셀 값을 가진 얼굴 이미지를 LDA를 통해 몇 개의 중요한 특징(예: 눈, 코, 입의 상대적 위치와 형태를 나타내는 성분)으로 압축한 후, 이 저차원 공간에서 분류를 수행한다.

응용 분야

주요 목적

LDA의 역할

얼굴 인식

개인 식별

고차원 이미지 데이터에서 식별력 높은 얼굴 특징(패턴) 추출

문자 인식

손글씨나 인쇄체 문자 식별

숫자나 알파벳의 형태적 특징을 구분하는 최적의 축 발견

음성 인식

단어 또는 화자 식별

음성 신호의 스펙트럼 특징을 분류에 유리한 공간으로 변환

의료 영상 분석

질병 병변 분류

MRI 또는 CT 영상에서 정상 조직과 비정상 조직을 구분하는 패턴 발견

이 기법은 기본적으로 데이터가 각 클래스 내에서 정규 분포를 따르고, 모든 클래스가 동일한 공분산 행렬을 가진다는 가정을 한다. 이러한 가정 하에서 LDA는 베이즈 최적 분류기에 근사하는 성능을 보인다. 실제 구현에서는 산포 행렬을 계산하고, 일반화 고유값 문제를 풀어 최적의 판별 벡터를 찾는 과정을 거친다. 패턴 인식 시스템의 전처리 단계에서 LDA를 적용하면 계산 복잡도를 줄이면서도 분류 정확도를 유지하거나 향상시키는 효과를 얻을 수 있다.

8.2. 생물정보학

선형 판별 분석은 생물정보학 분야에서 고차원 생물학적 데이터의 분석과 패턴 발견에 널리 활용된다. 특히 유전자 발현 데이터나 단백질체학 데이터와 같이 샘플 수에 비해 변수(예: 유전자)의 수가 훨씬 많은 상황에서 효과적인 차원 축소 및 분류 도구로 사용된다.

주요 응용은 질병 분류와 바이오마커 발견이다. 예를 들어, 암 환자와 정상인의 마이크로어레이 데이터에서 LDA는 수천 개의 유전자 발현 수준을 입력으로 받아, 두 집단을 가장 잘 구분하는 저차원 공간으로 투영한다. 이 과정에서 판별력이 높은 소수의 핵심 유전자(잠재적 바이오마커)를 선별하는 데 기여할 수 있다. 또한, 다양한 암의 아형을 구분하거나 질병의 예후를 예측하는 분류기를 구축하는 데에도 적용된다.

응용 분야

주요 데이터 유형

LDA의 역할

질병 진단/분류

유전자 발현 프로파일, 단백질 발현 데이터

환자 샘플을 질병 유형별로 분류하는 판별 초평면 학습

바이오마커 식별

전사체 데이터, 대사체 데이터

수천 개의 특징(유전자 등) 중에서 클래스 구분에 기여도가 높은 특징 추출

표본 군집화 시각화

다양한 오믹스 데이터

고차원 데이터를 2차원 또는 3차원으로 축소하여 샘플 간 관계를 시각적으로 탐색

LDA는 생물정보학에서의 사용 시 몇 가지 주의점도 있다. 방법론의 기본 가정인 각 클래스의 공분산 행렬이 동일하다는 가정이 생물학적 데이터에서는 항상 성립하지는 않는다. 또한, 유전자 수가 샘플 수를 훨씬 초과하는 상황에서는 과적합 문제가 발생하거나 산포 행렬 계산에 수치적 불안정성이 생길 수 있다. 이러한 한계를 보완하기 위해 정규화를 적용한 정규화 선형 판별 분석이나 공분산 동일성 가정을 완화한 이차 판별 분석 등의 변형 방법이 함께 사용되기도 한다.

9. 장단점

선형 판별 분석의 주요 장점은 계산 효율성과 해석 용이성이다. 이 방법은 공분산 행렬을 추정하고 고유값 문제를 푸는 과정만으로 최적의 투영 방향을 찾을 수 있어 계산 비용이 상대적으로 낮다. 또한 결과로 얻어진 판별 함수가 선형이기 때문에, 각 특징 변수가 분류 결정에 미치는 영향력을 계수의 크기와 부호를 통해 직관적으로 해석할 수 있다. 이는 블랙박스 모델에 비해 큰 강점이다. 또한 LDA는 차원 축소와 분류를 동시에 수행할 수 있어, 고차원 데이터를 시각화하거나 노이즈를 제거하는 데 유용하게 활용된다.

반면, LDA는 몇 가지 명확한 단점과 제약 조건을 가진다. 가장 큰 단점은 모든 클래스가 동일한 공분산 행렬을 공유한다는 강한 가정을 한다는 점이다. 실제 데이터에서 이 가정이 성립하지 않는 경우, 즉 클래스별 데이터 분포의 형태가 크게 다르면 LDA의 성능은 급격히 저하된다. 이러한 경우 이차 판별 분석(QDA)이 더 적합한 대안이 될 수 있다. 또한 LDA는 본질적으로 선형 경계만을 만들 수 있기 때문에, 클래스들이 복잡한 비선형 경계로 구분될 때는 서포트 벡터 머신(SVM)이나 신경망 같은 비선형 모델에 비해 성능이 떨어진다.

다음 표는 LDA의 주요 장단점을 요약하여 비교한다.

장점

단점

계산이 빠르고 효율적이다.

모든 클래스의 공분산이 동일하다는 가정이 필요하다.

얻어진 모델의 해석이 용이하다.

선형 결정 경계만 생성할 수 있어 비선형 문제에 취약하다.

차원 축소와 분류를 동시에 수행할 수 있다.

특징 수가 샘플 수보다 많은 고차원 저샘플 상황에서 성능이 불안정해질 수 있다.

데이터가 정규분포를 따를 때 이론적으로 최적의 분류기를 제공한다.

클래스 간 평균 차이가 작을 때 성능이 제한된다.

종합하면, LDA는 가정이 충족되는 비교적 단순한 구조의 데이터에 대해 강력하고 효율적인 도구이다. 그러나 그 가정이 깨지거나 데이터 관계가 복잡해지면 한계가 뚜렷해지므로, 문제의 특성을 잘 고려하여 적용 여부를 결정해야 한다.

10. 구현 및 실습

선형 판별 분석의 구현은 파이썬의 scikit-learn 라이브러리를 통해 비교적 쉽게 수행할 수 있다. sklearn.discriminant_analysis 모듈의 LinearDiscriminantAnalysis 클래스를 사용하며, 주요 단계는 데이터 준비, 모델 학습, 예측 및 평가로 구성된다.

아래는 붓꽃 데이터셋을 사용한 기본적인 LDA 구현 예시이다.

```python

# 필요한 라이브러리 임포트

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis

from sklearn.datasets import load_iris

from sklearn.model_selection import train_test_split

from sklearn.metrics import accuracy_score, confusion_matrix

# 데이터 로드 및 분할

iris = load_iris()

X = iris.data

y = iris.target

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# LDA 모델 생성 및 학습

lda = LinearDiscriminantAnalysis()

lda.fit(X_train, y_train)

# 예측 및 성능 평가

y_pred = lda.predict(X_test)

accuracy = accuracy_score(y_test, y_pred)

print(f"분류 정확도: {accuracy:.4f}")

print("혼동 행렬:")

print(confusion_matrix(y_test, y_pred))

```

실습 시 고려할 주요 파라미터와 기법은 다음과 같다.

파라미터/기법

설명

비고

solver

고유값 문제 해결 알고리즘. 'svd'(기본값), 'lsqr', 'eigen' 중 선택한다.

'svd'는 특이값 분해를 사용하며 산포 행렬 계산을 생략한다.

n_components

축소할 차원 수. 분류 시 최대 클래스 수 - 1로 자동 설정된다.

차원 축소 목적으로 명시적으로 설정할 수 있다.

shrinkage

정규화 기법. 'auto' 또는 0~1 사이의 실수값을 사용하여 공분산 행렬 추정을 보정한다.

고차원 데이터나 샘플 수가 적을 때 유용하다.

교차 검증

cross_val_score를 사용하여 모델의 일반화 성능을 안정적으로 평가한다.

데이터 분할에 따른 성능 편차를 줄인다.

차원 축소를 위한 LDA 실습에서는 transform 메서드를 사용하여 원본 데이터를 새로운 판별 공간으로 투영하고, 이를 시각화하는 것이 일반적이다. 2차원으로 축소한 결과는 산점도를 통해 클래스 간 분리가 어떻게 이루어졌는지 직관적으로 확인할 수 있다. 또한, explained_variance_ratio_ 속성을 통해 각 판별 벡터가 설명하는 분산 비율을 확인함으로써, 정보 보존 정도를 분석할 수 있다.

11. 관련 문서

  • 위키백과 - 선형 판별 분석

  • Scikit-learn 공식 문서 - Linear Discriminant Analysis

  • 나무위키 - 선형 판별 분석

  • Towards Data Science - Linear Discriminant Analysis (LDA) Clearly Explained

  • StatQuest with Josh Starmer - Linear Discriminant Analysis (LDA) clearly explained.

  • 구글 학술검색 - Linear Discriminant Analysis 논문

  • MathWorks - Linear Discriminant Analysis

리비전 정보

버전r1
수정일2026.02.14 21:25
편집자unisquads
편집 요약AI 자동 생성