안녕하세요 배도리입니다. 오늘은 판별분석(Discriminant Analysis) 에 대해 설명드리겠습니다. 판별분석은 여러 개의 모집단에서 추출된 표본을 기반으로 해당 표본이 어떤 모집단에서 추출되었는지 결정할 수 있는 기준을 찾는 분석 방법입니다. 이 방법은 새로운 데이터가 주어졌을 때 이 데이터가 어떤 카테고리에 속하는지 예측하는 데 유용합니다. 흠.. 그림과 함께 보면 이해하기 쉽습니다.

그림을 보시면 𝑥1축(LD1)에 투영된 선형판별 벡터(축)는 두개의 표본을 관측하면서 두가지 클래스로 잘 구분해 부는 반면에 𝑥2축(LD2)에 투영된 선형판별 벡터(축)는 하나의 표본만 관측되어 클래스 판별정보가 없습니다. 이는 좋은 선형판별 벡터가 아닙니다. 결국 LD1으로 판별분석을 수행하겠군요!
판별분석의 핵심요소에 대해 설명드리겠습니다!
판별 변수 (Discriminant Variable): 특정 집단에 속하는지를 결정하기 위해 사용되는 변수입니다. 이 변수는 보통 독립 변수 중에서 판별력이 높은 변수를 선택하여 사용합니다.
판별 변수의 선택: 상관 관계가 높은 두 독립 변수를 동시에 선택하는 것보다는, 두 변수 중 하나를 선택하고 그것과 상관관계가 작은 다른 독립 변수를 선택하는 것이 더 효과적일 수 있습니다. 이는 두 변수간의 고도의 상관 관계는 동일한 정보의 중복을 초래하므로, 판별 분석의 효율성을 떨어뜨릴 수 있기 때문입니다.
판별 함수 (Discriminant Function): 각 사례별로 소속 집단이 이미 알려진 경우 (즉, 지도 학습 상황에서), 판별 함수는 각 집단을 가장 잘 구별할 수 있는 함수를 생성합니다. 이는 주어진 독립 변수가 어떤 집단에 속하는지를 결정하는 역할을 합니다. 이 함수는 여러 가지 기계학습 방법론을 통해 학습되며, 이는 주어진 데이터와 문제의 특성에 따라 결정됩니다.
판별 점수 (Discriminant Score): 그 대상의 판별 변수들의 값을 판별 함수에 대입하여 구한 값을 의미합니다. 이 점수를 통해 어떤 샘플이 어떤 집단에 속하는지를 판별합니다.
표본의 크기: 판별 분석에서는 일반적으로 독립 변수의 개수보다 3배 (최소 2배) 이상의 전체 표본 크기가 필요합니다. 또한 종속 변수의 각 집단의 표본 크기 중에서는, 최소 크기가 독립변수의 개수보다 커야 합니다. 이는 판별력을 좌우하는 것이 전체 표본의 수가 아니라 가장 적은 집단의 표본 수이기 때문입니다.
독립 변수: 독립 변수는 기본적으로 분석에 사용되는 특징이며, Feature Engineering 과정을 통해 선별되고 변형됩니다. Feature Engineering 과정은 필요없는 특징을 제거하고, 유용한 특징을 선택하며, 때로는 새로운 특징을 만들어내거나 기존 특징을 변형하는 등의 작업을 포함합니다.

결국 이상적인 판별 함수는 집단 간의 변동을 최대화하고, 집단 내의 변동을 최소화하는 것을 목표로 합니다. 이를 통해 새로운 샘플이 주어졌을 때 그것이 어떤 집단에 속하는지를 가능한 한 정확하게 예측하려는 것입니다. 이러한 목표를 달성하기 위해 판별 함수는 학습 데이터를 통해 최적화됩니다.
판별분석에 대한 더 깊은 이해를 위해 확률적 생성 모형에 대해 설명 드리겠습니다.
확률론적 생성모형(Probabilistic Generative Model)은 데이터가 어떻게 생성되었는지를 모델링하는 접근 방식입니다. 이러한 모델은 주어진 입력 데이터(X)와 관련된 출력 레이블(y)의 결합 확률 분포 P(X, y)를 모델링합니다.
예를 들어, 스팸 메일 필터링에서 확률론적 생성 모델은 스팸 메일과 정상 메일이 어떻게 '생성'되는지에 대한 가정을 만들 수 있습니다. 이는 특정 단어들이 스팸 메일에서 더 자주 나타난다거나, 정상 메일에서 더 자주 나타나는 경우를 모델링하는 것을 포함할 수 있습니다.
이 모델은 레이블 y의 클래스에 따른 입력 X의 확률 분포, 즉 주어진 클래스에 대한 입력 데이터의 가능성(Likelihood)을 알고 있다면, 베이즈 정리를 사용하여 주어진 입력 X에 대한 레이블 y의 확률 분포를 추정(?)할 수 있습니다.
따라서, 확률론적 생성 모델은 주어진 데이터에 대해 특정 클래스 레이블이 얼마나 '가능성'이 있는지를 계산하려는 시도입니다. 이는 주어진 입력이 주어진 출력에 얼마나 잘 '맞는'지를 측정하는 판별 모델(Discriminative model)과는 대조적입니다. 확률론적 생성 모형은 데이터의 생성 과정을 모델링하려고 시도하고, 베이즈 정리를 사용하여 주어진 입력에 대한 클래스 레이블의 확률을 계산합니다. 반면, 판별 분석은 주어진 데이터가 어떤 클래스에 속할 확률을 직접 모델링 합니다.
흠... 일단 베이즈 정리부터 알아보겠습니다.
베이즈 정리(Bayes' Theorem)는 확률 이론과 통계학에서 사용되는 중요한 정리로, 어떤 사건 B가 일어났을 때 사건 A가 발생할 확률을, 사건 A가 일어났을 때 사건 B가 발생할 확률과 사건 A와 B가 각각 발생할 확률을 이용하여 계산하는 공식입니다. 식으로 보면 다음과 같습니다.

P(A|B)는 사건 B가 발생한 조건하에 사건 A가 발생할 확률로, 이를 사후 확률(Posterior Probability)라고 합니다.
P(B|A)는 사건 A가 발생한 조건하에 사건 B가 발생할 확률로, 이를 우도(Likelihood)라고 합니다.
P(A)는 사건 A가 발생할 확률로, 이를 사전 확률(Prior Probability)라고 합니다.
P(B)는 사건 B가 발생할 확률로, 이를 Evidence라고 합니다.
베이즈 정리는 이러한 성질을 활용하여, 종속변수 A에 대한 사건 B의 조건부 확률 P(B|A),우도를 알고 있을 때, 사건 A에 대한 사건 B의 조건부 확률 P(A|B),사후확률을 구하는 데 도움을 줍니다. 이는 종종 P(A|B)을 직접 측정하는 것이 어렵거나 불가능할 때, P(B|A)를 측정하고 이를 이용하여 P(A|B)를 추정하는데 사용됩니다. 이런 방식으로 베이즈 정리는 어려운 문제를 상대적으로 쉽게 측정 가능한 다른 형태로 변환하는 데 유용합니다.
이 의미를 활률론적 생성모형에 적용하겠습니다.

𝑃(𝑦 = 𝑘 | 𝑥)는 사후확률 : 특정 독립변수 X의 값을 알고 있을 때 해당 데이터가 클래스 k에 속할 확률
𝑃(𝑥)는 Evidence : 독립변수 X의 값을 가질 확률
𝑃(𝑥 | 𝑦 = 𝑘)는 Likelihood :입력 데이터의 가능성
𝑃(𝑦 = 𝑘)는 사전확률 : 주어진 데이터에서 특정 클래스 k가 발생할 확률
결국 우리가 구하고자 하는것은 x가 k클래스에 분류될 확률을 즉 사후확률을 구하고자 하는것입니다.
각각의 값을 구해보겠습니다.
분류 문제는 주어진 데이터를 특정 클래스로 할당하는 문제입니다. 우리의 목표는 사후 확률을 최대화하는 클래스를 찾는 것이므로, 모든 클래스에 대해 동일한 분모인 𝑃(𝑥)는 계산하지 않아도 된다는 것입니다. 즉, 분자 부분만을 계산하고 이 값들을 비교하여 가장 큰 값을 가지는 클래스를 선택합니다. 아래 식과 같이 𝑃(𝑥)는 과감하게 제거

기호 '∝'는 'proportional to'를 의미하며, 한 변수가 다른 변수와 비례 관계에 있음을 표시하는 데 사용됩니다. 또한, '∝' 기호는 종종 확률에서 베이즈 정리를 표현하는 데 사용됩니다. 'P(A|B) ∝ P(B|A)P(A)'는 A가 주어졌을 때 B의 조건부 확률이 B가 주어졌을 때 A의 조건부 확률과 A의 사전 확률에 비례함을 의미합니다. 이때 분모인 P(B)는 모든 가능한 A에 대해 상수이므로, 계산을 단순화하기 위해 종종 무시됩니다.
𝑃(𝑦 = 𝑘) 사전확률은 특별한 정보가 없는 경우 아래와 같이 계산합니다.

마지막으로 𝑃(𝑥 | 𝑦 = 𝑘) Likelihood는 특정 클래스 y=k가 주어졌을 때 독립변수 X가 관찰될 조건부 확률을 의미합니다. 즉, Likelihood는 "어떤 특정한 클래스에 속하는 데이터가 주어졌을 때, 그 데이터가 어떤 확률분포를 가지는가"에 대한 문제이며, 이때 우리는 𝑃(𝑥 | 𝑦 = 𝑘)가 특정한 확률분포모형을 따른다고 가정합니다. 𝑘번째 클래스에 속하는 학습데이터의 분포를 참조하여 결정하는데 판별분석에서는 이를 정규분포로 가정한다. 정규분포의 밀도 함수인 𝑓(𝑥)로 표현될 수 있습니다.

따라서, 확률론적 생성모형은 Likelihood와 베이즈 정리를 이용하여 주어진 입력에 대한 출력의 확률 분포를 추정하고, 이를 바탕으로 새로운 데이터가 어떤 클래스에 속하는지를 판단하게 됩니다. 이는 판별분석에 있어서 중요한 역할을 합니다.
다음에는 선형판별분석에 대해 배워보겠습니다.
'Machine Learning_모델설계_Python' 카테고리의 다른 글
| 판별분석_3 선형판별분석(LDA) (0) | 2023.06.13 |
|---|---|
| 판별분석_2 선형판별분석(LDA) (0) | 2023.06.02 |
| 로지스틱회귀_2 실습 (1) | 2023.05.24 |
| 로지스틱회귀_1 개념 (0) | 2023.05.23 |
| 선형회귀_6 릿지, 라쏘 실습 (2) | 2023.05.21 |