본문 바로가기

Machine Learning_모델설계_Python

판별분석_2 선형판별분석(LDA)

안녕하세요 배도리 입니다. 오랜만에 사자성어를 배워보겠습니다. '동시효빈' 을 들어보셨습니까? 동쪽 나라 못난 여인들을 ‘동시’라 했는데 못생긴 여인들이 무작정 아름다운 서시가 찡그리는 모습을 따라 했다고 해서 비롯됐습니다. 이는 억지로 남을 따라 하지만 결국 웃음거리밖에 안 되는 경우를 이르는 말이라 합니다. 즉 동시효빈이란 손가락질 받지 않으려면 무조건 남을 따라 하기보다 자기중심을 가지고 행동해야 한다는 의미인데...   웃음거리가 되고 손가락질 받을지언정 남을 따라 흉내내고 모방하다보면 그 속에서 새로운 걸 발견하고 자신에게 맞는걸 찾을 수 있다고 생각합니다. 동시들도 서시의 모든 모습을 따라하다보니 찡그리는것 까지 따라했지만 다른 특징들을 따라하다보면 결국 이전보다 발전했을거라 생각합니다. 저 또한 운동을 하면서 다른 사람들의 동작과 패턴을 모방하면서 저에게 잘맞는 운동법을 찾기도 했고 여러 사람들의 운동방법을 합쳐서 저만의 루틴을 만들었고 이후에 부상없이 건강하게 운동하고 있습니다. 호호 누가 보면 프로선수인줄 알겠습니다. 각설하고 선형판별분석 하겠습니다. 

 

 

선형 판별 분석

선형 판별 분석(Linear Discriminant Analysis, LDA)는 클래스 간의 분산(between-class variance)을 최대화하고, 클래스 내의 분산(within-class variance)을 최소화하는 방향으로 특징 공간을 변환하거나 투영시키는 방법입니다. 이 과정을 통해 LDA는 데이터를 선형적으로 분류하는 기준을 만들게 됩니다.

LDA의 기본 전제는 두 가지입니다:

1. 각 클래스 집단은 다변량 정규분포(Multivariate Normal Distribution) 형태의 확률분포를 가집니다.
2. 각 클래스 집단은 비슷한 형태의 공분산(covariance) 구조를 가집니다.


여기서 '공분산'은 두 개의 확률변수의 상관정도를 나타내는 값이며, 공분산 행렬은 러 변수 간의 공분산을 행렬 형태로 표현한 것입니다. 공분산 행렬의 각 원소는 두 변수의 공분산을 나타내며, 대각선 원소는 각 변수의 분산을 나타냅니다.


공분산 행렬의 형태에 따라 다양한 경우가 존재합니다. 완전 공분산 정규분포에서는 모든 공분산 값이 0이 아닌 반면, 대각 공분산 정규분포에서는 대각선을 제외한 공분산 값이 모두 0입니다. 또한 구형 공분산 정규분포에서는 대각선에 위치한 분산 값이 모두 동일하고, 대각선을 제외한 공분산 값이 모두 0입니다.

 



LDA는 이러한 공분산 구조를 이용해 클래스 간의 경계를 결정하며, 가정된 공분산 구조가 실제 데이터에 잘 맞을수록 LDA의 분류 성능이 좋아집니다.

 

그런데 공분산 구조를 이용해서 클래스 간의 경계를 어떻게 결정하는걸까요?

 

공분산은 두 변수가 어떻게 함께 변화하는지를 측정하는 통계적인 개념입니다. 만약 두 변수가 함께 증가하거나 감소하는 경향이 있다면, 이들 사이의 공분산은 양수가 될 것입니다. 반대로, 한 변수가 증가하는 동안 다른 변수가 감소하는 경향이 있다면, 이들 사이의 공분산은 음수가 될 것입니다.

이제 이를 LDA와 연결하여 생각해봅시다. LDA는 클래스 간의 공분산을 계산하여, 각 클래스 내의 샘플들이 어떻게 함께 분포하는지를 알아냅니다. 이 정보는 데이터를 차원 축소한 후에도 클래스를 잘 구별할 수 있도록 하는 데 중요한 역할을 합니다. 즉, 공분산 구조를 통해 각 클래스 내의 샘플들이 어떻게 함께 움직이는지 이해함으로써, 이러한 움직임의 패턴을 이용하여 새로운 샘플이 어느 클래스에 속하는지를 예측할 수 있습니다.

또한, 공분산 구조를 이용하면 각 클래스의 중심(평균)과 분산을 기반으로 경계를 설정할 수 있습니다. 이 방법을 통해 클래스 간의 분리를 최대화하고 클래스 내의 분산을 최소화함으로써 분류 성능을 향상시킬 수 있습니다. 이런 방식으로, LDA는 공분산 구조를 이용하여 효과적으로 클래스 간의 경계를 결정합니다. 기본전제와 베이즈 정리를 바탕으로 LDA의 판별함수의 경계선은 각 판별함수가 같아지는 지점을 의미합니다. 이 때, 경계선은 직선의 형태를 띕니다. 

 

 

선형 판별 분석 (LDA - Linear Discriminant Analysis)은 데이터의 차원을 줄이면서도 클래스 간의 차이를 유지하려는 분류 알고리즘이라는 것을 알아야 합니다. 이 방법은 분류 문제에서 매우 중요하며, 이를 통해 데이터의 복잡성을 줄이고 분류 알고리즘의 효율성을 향상시킬 수 있습니다.

첫 번째로, LDA는 데이터를 한 차원(또는 더 낮은 차원)에 투영하여 차원을 축소합니다. 이렇게 하면 각각의 클래스를 나타내는 데이터의 분포가 차원 축소 후에도 잘 유지됩니다. 즉, 차원 축소를 통해 데이터의 복잡성이 줄어들지만, 여전히 데이터의 원래 클래스를 잘 구별할 수 있도록 하는 것이 LDA의 목표입니다.


두 번째로, LDA는 결정 경계를 설정합니다. 이 결정 경계는 투영 축에 수직이며, 이를 통해 클래스 간의 구분을 명확히 합니다. 결정 경계는 두 가지 주요 기준에 따라 설정됩니다:

1. 각 클래스 집단의 평균의 차이가 큰 지점을 결정 경계로 지정합니다. 이렇게 하면 서로 다른 클래스는 가능한 멀리 떨어져 있게 됩니다.
2. 각 클래스 집단의 분산이 작은 지점을 결정 경계로 지정합니다. 이렇게 하면 각 클래스 내부의 데이터 포인트는 가능한 가까이 있게 됩니다.

결국 이 두가지 기준은 사영 데이터의 분포에서 겹치는 영역이 작은 결정 경계를 선택합니다.



이러한 조건들은 결정 경계를 통해 클래스 간의 구분을 최대화하고, 클래스 내의 데이터 포인트들은 최대한 가까이 있게 만듭니다. 이렇게 하면 데이터의 겹치는 영역이 최소화되고 클래스 간의 구분이 더욱 명확해집니다.

 

결국 판별점수의 집단간 변동과 집단내 변동의 배율을 최대화하는 판별함수를 도출해야 합니다.




Regenerate response

'Machine Learning_모델설계_Python' 카테고리의 다른 글

판별분석_4 이차판별분석(QDA)  (0) 2023.06.15
판별분석_3 선형판별분석(LDA)  (0) 2023.06.13
판별분석_1 개념  (0) 2023.05.28
로지스틱회귀_2 실습  (1) 2023.05.24
로지스틱회귀_1 개념  (0) 2023.05.23